Aktuelle Remote-Seminare mit Durchführungsgarantie: Etwas Werbung in eigener Sache Termine: 03.08.-05.08.2020, 21.09.-23.09.2020, 23.11.-25.11.2020, 07.12.-09.12.2020, 22.03.-24.03.2021, 07.06.-09.06.2021, 06.09.-08.09.2021XML Einführung und Grundlagen Termine: 06.08.2020, 20.10.2020, 13.11.2020, 10.12.2020, 25.03.2021, 10.06.2021, 09.09.2021XML - der professionelle Überblick Termine: 23.11.-26.11.2020, 29.03.-01.04.2021Einstieg in die Programmierung Termine: 17.08.-19.08.2020, 14.12.-16.12.2020, 07.04.-09.04.2021XML, XSLT, XPath, XSL-FO Einführung Termine: Termin nach WunschEinstieg in C#.NET Termine: 21.09.-23.09.2020, 11.01.-13.01.2021, 26.05.-28.05.2021, 27.09.-29.09.2021VB.NET für Visual Basic-Programmierer Termine: 21.10.-23.10.2020, 14.12.-16.12.2020, 08.03.-10.03.2021, 19.07.-21.07.2021, 23.08.-25.08.2021XML Grundlagen, XSL-FO, SVG, DocBook, DITA Termine: Termin nach WunschJava Grundlagen Termine: 03.08.-06.08.2020, 30.11.-03.12.2020, 29.03.-01.04.2021C++ für Programmiereinsteiger Termine: 10.09.2020, 11.12.2020, 16.03.2021Neues Seminar: XProc Grundlagen Termine: 21.09.-25.09.2020, 01.03.-05.03.2021Java/JSP/HTML/JDBC/XML Komplett Termine: 07.09.-09.09.2020, 21.10.-23.10.2020, 23.11.-25.11.2020, 25.01.-27.01.2021, 12.04.-14.04.2021, 26.07.-28.07.2021Python für Programmiereinsteiger Last-Minute-Seminare, noch freie Plätze XML Einführung und Grundlagen03.08.-05.08.2020 XML, XSLT, XPath, XSL-FO Einführung17.08.-19.08.2020 Python für Programmiereinsteiger07.09.-09.09.2020

XPROC * XSL-FO * SVG * XML * XML-SCHEMA * XPATH * XSL * XSLT 1.0 * XSLT 2.0 * XSLT 3.0 * XQUERY * ANT



XML-Schema / xs:ENTITY, xs:ENTITIES

xs:ENTITY, xs:ENTITIES

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;</lt>
	<gt>&gt;</gt>
	<amp>&amp;</amp>
	<tuwas>&tuwas;</tuwas>
</root>

In einem Browser wird dieses XML-Dokument beispielsweise so angezeigt:

pic/entity_tuwas.png

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:

pic/xs_entity.png

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.






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_XERCES.html