Delen via


Naamruimten en DTD's in de DOM

Documentdefinities (DTD's) compliceren de ondersteuning van naamruimten. De volgende XML bevat bijvoorbeeld standaardattributen met een dubbele punt in hun namen.

<!ATTLIST item x:id CDATA #IMPLIED>  

Hier volgen mogelijke oplossingen als deze constructie is toegestaan:

  • Het x: wordt behandeld als een naamruimtevoorvoegsel, maar dit voorvoegsel moet kunnen worden omgezet met behulp van een xmlns:x naamruimtedeclaratie, die ook ergens in de DTD moet bestaan. Het is een fout om dit voorvoegsel toe te wijzen aan iets anders in het exemplaardocument.

  • Het x: wordt behandeld als een naamruimtevoorvoegsel, maar dit voorvoegsel wordt altijd opgelost in de context van de exemplaarelementen. Dit betekent dat het voorvoegsel daadwerkelijk kan worden toegewezen aan verschillende naamruimte Uniform Resource Identifiers (URI's), afhankelijk van het bereik van de naamruimte waarin het item element wordt weergegeven. Dit gedrag is voorspelbaarder dan de eerder genoemde resolutie, maar het heeft andere gecompliceerde gevolgen omdat hiervoor de standaardattributen moeten worden gematerialiseerd.

  • De dubbele punt wordt genegeerd omdat deze zich in een DTD bevindt en de naam van het kenmerk x:y is, er is geen voorvoegsel en geen naamruimte-URI.

  • De dubbele punt in het standaardkenmerk genereert een uitzondering, waarbij wordt aangegeven dat dubbele punten in namen in een DTD niet worden ondersteund. Dit resulteert in een voorspelbaar gedrag, maar betekent dat u veel gepubliceerde DTD's (World Wide Web Consortium) niet kunt laden.

  • Wanneer de gebruiker DTD-validatie aanvraagt, wordt de naamruimteondersteuning voor het hele document uitgeschakeld. Dit maakt het mogelijk om W3C DTD's te laden en resulteert in een voorspelbaar gedrag.

De XML in Microsoft .NET Framework implementeert de tweede optie voor maximale W3C-compatibiliteit.

Zie ook