A document may be marked 'standalone' if any attributes that need normalization are defined within the internal DTD subset.
<?xml version='1.0' standalone='yes'?>
<!DOCTYPE attributes [
<!ELEMENT attributes EMPTY>
<!--
2.9 gives validity constraints applying to attributes
in standalone docs: no external defaults or decls
causing normalization.
3.3.3 describes the normalization rules
-->
<!ATTLIST attributes
token (a|b|c) "a"
notation (nonce|foo|bar) #IMPLIED
nmtoken NMTOKEN #IMPLIED
nmtokens NMTOKENS #IMPLIED
id ID #IMPLIED
idref IDREF #IMPLIED
idrefs IDREFS #IMPLIED
entity ENTITY #IMPLIED
entities ENTITIES #IMPLIED
cdata CDATA #IMPLIED
>
<!ENTITY internal " internal&number; ">
<!ENTITY number "42">
<!NOTATION nonce SYSTEM "file:/dev/null">
<!NOTATION foo PUBLIC "-//public id//foo" "file:/dev/null">
<!NOTATION bar SYSTEM "file:/dev/tty">
<!ENTITY unparsed-1 PUBLIC "-//some public//ID" "file:/dev/console"
NDATA nonce>
<!ENTITY unparsed-2 SYSTEM "scheme://host/data"
NDATA foo>
]>
<attributes
notation = " nonce "
nmtoken = " this-gets-normalized "
nmtokens = " this
also gets normalized "
id = " &internal; "
idref = " &internal;
"
idrefs = " &internal; &internal; &internal;"
entity = " unparsed-1 "
entities = "unparsed-1 unparsed-2"
cdata = "nothing happens to this one!"
/>
| Expected result | Actual result for net.sf.saxon.aelfred.SAXDriver |
|---|---|
<?xml version="1.0" encoding="UTF-8"?>
<ConformanceResults>
<startDocument/>
<notation>
<name>bar</name>
<systemID>file:/dev/tty</systemID>
</notation>
<notation>
<name>foo</name>
<publicID>-//public id//foo</publicID>
<systemID>file:/dev/null</systemID>
</notation>
<notation>
<name>nonce</name>
<systemID>file:/dev/null</systemID>
</notation>
<unparsedEntity>
<name>unparsed-1</name>
<publicID>-//some public//ID</publicID>
<systemID>file:/dev/console</systemID>
<notation>nonce</notation>
</unparsedEntity>
<unparsedEntity>
<name>unparsed-2</name>
<systemID>scheme://host/data</systemID>
<notation>foo</notation>
</unparsedEntity>
<startElement>
<namespaceURI/>
<localName>attributes</localName>
<qualifiedName>attributes</qualifiedName>
<attributes>
<attribute>
<namespaceURI/>
<localName>cdata</localName>
<qualifiedName>cdata</qualifiedName>
<value>nothing\shappens\sto\sthis\sone!</value>
<type>CDATA</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>entities</localName>
<qualifiedName>entities</qualifiedName>
<value>unparsed-1\sunparsed-2</value>
<type>ENTITIES</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>entity</localName>
<qualifiedName>entity</qualifiedName>
<value>unparsed-1</value>
<type>ENTITY</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>id</localName>
<qualifiedName>id</qualifiedName>
<value>internal42</value>
<type>ID</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>idref</localName>
<qualifiedName>idref</qualifiedName>
<value>internal42</value>
<type>IDREF</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>idrefs</localName>
<qualifiedName>idrefs</qualifiedName>
<value>internal42\sinternal42\sinternal42</value>
<type>IDREFS</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>nmtoken</localName>
<qualifiedName>nmtoken</qualifiedName>
<value>this-gets-normalized</value>
<type>NMTOKEN</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>nmtokens</localName>
<qualifiedName>nmtokens</qualifiedName>
<value>this\salso\sgets\snormalized</value>
<type>NMTOKENS</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>notation</localName>
<qualifiedName>notation</qualifiedName>
<value>nonce</value>
<type>NMTOKEN</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>token</localName>
<qualifiedName>token</qualifiedName>
<value>a</value>
<type>NMTOKEN</type>
</attribute>
</attributes>
</startElement>
<endElement>
<namespaceURI/>
<localName>attributes</localName>
<qualifiedName>attributes</qualifiedName>
</endElement>
<endDocument/>
</ConformanceResults>
| <?xml version="1.0" encoding="UTF-8"?>
<ConformanceResults>
<startDocument/>
<resolveEntity>
<systemID>file:/home/elharo/SAXTest/xmlconf/sun/valid/sa02.xml</systemID>
</resolveEntity>
<notation>
<name>bar</name>
<systemID>file:/dev/tty</systemID>
</notation>
<notation>
<name>foo</name>
<publicID>-//public id//foo</publicID>
<systemID>file:/dev/null</systemID>
</notation>
<notation>
<name>nonce</name>
<systemID>file:/dev/null</systemID>
</notation>
<unparsedEntity>
<name>unparsed-1</name>
<publicID>-//some public//ID</publicID>
<systemID>file:/dev/console</systemID>
<notation>nonce</notation>
</unparsedEntity>
<unparsedEntity>
<name>unparsed-2</name>
<systemID>scheme://host/data</systemID>
<notation>foo</notation>
</unparsedEntity>
<startElement>
<namespaceURI/>
<localName>attributes</localName>
<qualifiedName>attributes</qualifiedName>
<attributes>
<attribute>
<namespaceURI/>
<localName>cdata</localName>
<qualifiedName>cdata</qualifiedName>
<value>nothing\shappens\sto\sthis\sone!</value>
<type>CDATA</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>entities</localName>
<qualifiedName>entities</qualifiedName>
<value>unparsed-1\sunparsed-2</value>
<type>ENTITIES</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>entity</localName>
<qualifiedName>entity</qualifiedName>
<value>unparsed-1</value>
<type>ENTITY</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>id</localName>
<qualifiedName>id</qualifiedName>
<value>internal42</value>
<type>ID</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>idref</localName>
<qualifiedName>idref</qualifiedName>
<value>internal42</value>
<type>IDREF</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>idrefs</localName>
<qualifiedName>idrefs</qualifiedName>
<value>internal42\sinternal42\sinternal42</value>
<type>IDREFS</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>nmtoken</localName>
<qualifiedName>nmtoken</qualifiedName>
<value>this-gets-normalized</value>
<type>NMTOKEN</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>nmtokens</localName>
<qualifiedName>nmtokens</qualifiedName>
<value>this\salso\sgets\snormalized</value>
<type>NMTOKENS</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>notation</localName>
<qualifiedName>notation</qualifiedName>
<value>nonce</value>
<type>NMTOKEN</type>
</attribute>
<attribute>
<namespaceURI/>
<localName>token</localName>
<qualifiedName>token</qualifiedName>
<value>a</value>
<type>NMTOKEN</type>
</attribute>
</attributes>
</startElement>
<endElement>
<namespaceURI/>
<localName>attributes</localName>
<qualifiedName>attributes</qualifiedName>
</endElement>
<endDocument/>
</ConformanceResults>
|