コード例 #1
0
//----------------------------------------------------- Méthodes publiques
void SimpleBuilder::buildDTD(DTD& dtd) const
{
	unsigned int elementNumber = 0;
	AttributesList attlist;

	// --- ROOT : SEQUENCE
	Sequence::OrderedContent embeddedContent;
	embeddedContent.push_back(new ElementReference(dtd, ns(1), name(1)));
	embeddedContent.push_back(new ElementReference(dtd, ns(4), name(4)));
	embeddedContent.push_back(new ElementReference(dtd, ns(2), name(2)));
	embeddedContent.push_back(new ElementReference(dtd, ns(3), name(3)));
	dtd.addElement(ns(elementNumber), name(elementNumber),
			*new Sequence(embeddedContent));

	attlist.clear();
	attlist.insert(new Attribute(attname(2)));
	attlist.insert(new Attribute(attname(3)));
	dtd.addAttributesList(ns(elementNumber), name(elementNumber), attlist);

	elementNumber = 1;

	// --- CHILD 1 : REPEATABLECONTENT(MIXEDCONTENT)
	MixedContent::ChoosableSet choosables;
	choosables.insert(new ElementReference(dtd, ns(5), name(5)));
	choosables.insert(new ElementReference(dtd, ns(6), name(6)));
	dtd.addElement(
			ns(elementNumber),
			name(elementNumber),
			*new RepeatableContent(
					*new MixedContent(*new TextContent(), choosables)));

	attlist.clear();
	attlist.insert(new Attribute(attname(0)));
	attlist.insert(new Attribute(attname(1)));
	dtd.addAttributesList(ns(elementNumber), name(elementNumber), attlist);

	elementNumber = 2;

	// --- CHILD 2 : OPTIONAL CONTENT
	dtd.addElement(ns(elementNumber), name(elementNumber),
			*new OptionalContent(*new ElementReference(dtd, ns(7), name(7))));

	attlist.clear();
	attlist.insert(new Attribute(attname(4)));
	attlist.insert(new Attribute(attname(5)));
	dtd.addAttributesList(ns(elementNumber), name(elementNumber), attlist);

	// --- LEAFS
	for (int i = 3; i <= 7; ++i)
	{
		dtd.addElement(ns(i), name(i), *new EmptyContent());
	}
}