Hello out there!
Ich habe ein XML-Dokument, in dem in einem Element ein Attribut enthalten ist, was so aber in der DTD nicht vorkommt.
Dann ist doch dieses Dokument ungültig, oder?wenn das Attribut nicht zufällig einem anderen Namespace zugeordnet ist: Ja.
Ich glaube nicht das dem so ist
Ich glaube das auch nicht.
Einer DTD ist das Konzept Namensräume völlig fremd, ein ':' ist ein Zeichen wie (fast) jedes andere.
dass eine andere DTD für das Attribut zuständig ist ;-) Du erkennst es an der Schreibweise 'ns:attr="value"'.
Dann wäre das XML-Dokument dennoch ungültig. Es sei denn, es stünde sowas wie
<!ATTLIST foo
ns:attr CDATA #IMPLIED
>
in der DTD. Wobei die Zeichenkette "ns", die in anderem Kontext als Namesraumpräfix dient, dann nicht anders lauten darf; es muss dann heißen:
<root
xmlns="http://example.net/rootns"
xmlns:ns="http://example.net/attrns"
>
<foo ns:attr="value"/>
</root>
nicht aber so:
<root
xmlns="http://example.net/rootns"
xmlns:someOtherString="http://example.net/attrns"
>
<foo someOtherString:attr="value"/>
</root>
So steht auch das 'xml:lang'-Attribut in der XHTML-DTD drin:
<!ENTITY % i18n
"lang %LanguageCode; #IMPLIED
xml:lang %LanguageCode; #IMPLIED
dir (ltr|rtl) #IMPLIED"
>
See ya up the road,
Gunnar
„Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)