XML | XML-Schema | XPath | XSL-T | XSL-FO | XQuery | XProc | SVG |
XML-Schema / xs:ENTITY, xs:ENTITIES
![]() |
![]() |
➪ Sie können sich wahrscheinlich Jahrzehnte mit XML-Technologien beschäftigen, ohne jemals mit xs:ENTITY bzw. xs:ENTITIES in Berührung zu kommen. Beide helfen, in XML-Schema Entitäten zu definieren und anschließend die XML-Dokumente mithilfe einer Validierungs-Engine zu überprüfen.
Bekanntlich können Sie in XML neben den Standardentitäten auch eigene Entitäten deklarieren.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY tuwas "neinwarumdenn">
]>
<root>
<lt><</lt>
<gt>></gt>
<amp>&</amp>
<tuwas>&tuwas;</tuwas>
</root>
In einem Browser wird dieses XML-Dokument beispielsweise so angezeigt:
Im XML-Schema steht mit xs:ENTITY (abgeleitet von NCName) einen Datentyp zur Verfügung, der bekannte Entitäten überprüft. Mit xs:ENTITIES können Sie eine ganze Liste dieser Art definieren.
Sehen Sie sich das folgende XML-Schema "entities.xsd" an, das ein "root"-Element mit einem Attribut "attrENTITAET" deklariert, in dem der Inhalt genau einer Entität genannt werden darf. Daneben hat das "root"-Element noch einen Childnode "entitaeten", in dem Sie eine gewünschte Entitätsliste einarbeiten können.
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="entitaeten" type="xs:ENTITIES"/>
</xs:sequence>
<xs:attribute name="attrENTITAET" type="xs:ENTITY"/>
</xs:complexType>
</xs:element>
</xs:schema>
Das passende XML-Dokument kann etwa diesen Aufbau haben: Neben den Standardentitäten (lt gt quot amp apos) wurde hier noch eine eigene Entität "tuwas" deklariert, die damit auch zur Liste der zulässigen Entitäten gehört.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY tuwas "neinwarumdenn">
]>
<root
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="entities.xsd"
attrENTITAET="tuwas">
<entitaeten>lt gt quot amp apos</entitaeten>
</root>
Wenn Sie dieses XML-Dokument validieren, kann es Ihnen leicht passieren, dass Sie einige Fehlermeldungen erhalten:
UndeclaredEntity: Entity 'tuwas' is not declared.
The value 'tuwas' of attribute 'attrENTITAET'
on element 'root' is not valid
with respect to its type, 'ENTITY'.
UndeclaredEntity: Entity 'apos' is not declared.
The value 'lt gt quot amp apos' of element 'entitaeten'
is not valid.
Sie erhalten diese Meldungen beispielsweise dann, wenn Sie Xerces als Validierungs-Engine verwenden. Mit einer anderen Validierungs-Engine können Sie das vermeiden:
Wenn Sie XERCES als Validierungsengine benötigen, kann dieses Beispiel eine Hilfe sein:
<!DOCTYPE root [
<!NOTATION n_tuwas PUBLIC "irgendwieirgendwo">
<!ENTITY tuwas SYSTEM "https://www.wilfried-grupe.de" NDATA n_tuwas>
<!ENTITY lt SYSTEM "https://www.wilfried-grupe.de" NDATA n_tuwas>
<!ENTITY gt SYSTEM "https://www.wilfried-grupe.de" NDATA n_tuwas>
<!ENTITY quot SYSTEM "https://www.wilfried-grupe.de" NDATA n_tuwas>
<!ENTITY apos SYSTEM "https://www.wilfried-grupe.de" NDATA n_tuwas>
<!ENTITY amp SYSTEM "https://www.wilfried-grupe.de" NDATA n_tuwas>
]>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="entities.xsd"
attrENTITAET="tuwas">
<entitaeten>lt gt quot amp apos</entitaeten>
</root>
wg / 28. August 2019
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de