XML-Validierung: Wozu? / xs:ENTITY, xs:ENTITIES

xs:ENTITY, xs:ENTITIES

xs:ENTITY, xs:ENTITIES

➪ Entitäten sind ein Kernbestandteil der XML-Dokumente, denken Sie an die Standardentitäten &lt; (<), &gt; (>), &amp; (&), &quot (") oder &apos; ('). Daneben können Sie eine ganze Reihe eigener Entitäten definieren.

Im XML-Schema können Sie mit xs:ENTITY (abgeleitet von NCName) einen Datentyp definieren, der ausschliesslich eine bekannte Entität zulässt. 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. Ändern Sie die Engine zum Beispiel

pic/xs_entity.png

wg / 5. Oktober 2018



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/xs_entity.html