Test demonstrates that the empty-element tag must be use for an elements that are declared EMPTY.
<!DOCTYPE doc [ <!ELEMENT doc (e*)> <!ELEMENT e EMPTY> <!ATTLIST e a1 CDATA "v1" a2 CDATA "v2" a3 CDATA #IMPLIED> ]> <doc> <e a3="v3"/> <e a1="w1"/> <e a2="w2" a3="v3"/> </doc>
Expected result | Actual result for com.jclark.xml.sax.SAX2Driver |
---|---|
<?xml version="1.0" encoding="UTF-8"?> <ConformanceResults> <startDocument/> <startElement> <namespaceURI/> <localName>doc</localName> <qualifiedName>doc</qualifiedName> <attributes/> </startElement> <ignorable>\n</ignorable> <startElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> <attributes> <attribute> <namespaceURI/> <localName>a1</localName> <qualifiedName>a1</qualifiedName> <value>v1</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a2</localName> <qualifiedName>a2</qualifiedName> <value>v2</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a3</localName> <qualifiedName>a3</qualifiedName> <value>v3</value> <type>CDATA</type> </attribute> </attributes> </startElement> <endElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> </endElement> <ignorable>\n</ignorable> <startElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> <attributes> <attribute> <namespaceURI/> <localName>a1</localName> <qualifiedName>a1</qualifiedName> <value>w1</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a2</localName> <qualifiedName>a2</qualifiedName> <value>v2</value> <type>CDATA</type> </attribute> </attributes> </startElement> <endElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> </endElement> <ignorable>\n</ignorable> <startElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> <attributes> <attribute> <namespaceURI/> <localName>a1</localName> <qualifiedName>a1</qualifiedName> <value>v1</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a2</localName> <qualifiedName>a2</qualifiedName> <value>w2</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a3</localName> <qualifiedName>a3</qualifiedName> <value>v3</value> <type>CDATA</type> </attribute> </attributes> </startElement> <endElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> </endElement> <ignorable>\n</ignorable> <endElement> <namespaceURI/> <localName>doc</localName> <qualifiedName>doc</qualifiedName> </endElement> <endDocument/> </ConformanceResults> | <?xml version="1.0" encoding="UTF-8"?> <ConformanceResults> <startDocument/> <startElement> <namespaceURI/> <localName>doc</localName> <qualifiedName>doc</qualifiedName> <attributes/> </startElement> <char>\n</char> <startElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> <attributes> <attribute> <namespaceURI/> <localName>a1</localName> <qualifiedName>a1</qualifiedName> <value>v1</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a2</localName> <qualifiedName>a2</qualifiedName> <value>v2</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a3</localName> <qualifiedName>a3</qualifiedName> <value>v3</value> <type>CDATA</type> </attribute> </attributes> </startElement> <endElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> </endElement> <char>\n</char> <startElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> <attributes> <attribute> <namespaceURI/> <localName>a1</localName> <qualifiedName>a1</qualifiedName> <value>w1</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a2</localName> <qualifiedName>a2</qualifiedName> <value>v2</value> <type>CDATA</type> </attribute> </attributes> </startElement> <endElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> </endElement> <char>\n</char> <startElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> <attributes> <attribute> <namespaceURI/> <localName>a1</localName> <qualifiedName>a1</qualifiedName> <value>v1</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a2</localName> <qualifiedName>a2</qualifiedName> <value>w2</value> <type>CDATA</type> </attribute> <attribute> <namespaceURI/> <localName>a3</localName> <qualifiedName>a3</qualifiedName> <value>v3</value> <type>CDATA</type> </attribute> </attributes> </startElement> <endElement> <namespaceURI/> <localName>e</localName> <qualifiedName>e</qualifiedName> </endElement> <char>\n</char> <endElement> <namespaceURI/> <localName>doc</localName> <qualifiedName>doc</qualifiedName> </endElement> <endDocument/> </ConformanceResults> |