Entities

18.01.2017 11:31 Uhr

Parameter-Entities

Um das Schreiben komplexerer DTDs zu erleichtern, besteht die Möglichkeit zur Definition von Parameter Entities. Diese werden mit der <!ENTITY … > Definition ermöglicht. Entity Definitionen weisen einem Namen eine Zeichenkette als Wert zu.

Mit Parameter-Entities werden also benannte „Abkürzungen“ in der DTD definiert, die referenziert werden können, um mehrfach vorkommende Elementgruppen und Attributlisten jeweils nur einmal definieren zu müssen:

Deklaration allgemein

<!ENTITY % entity_name "(content model)|Ersetzungstext">

Referenzierung allgemein
<!ELEMENT element_name %entity_name;>


Beispiel

Deklaration:

<!ENTITY % katalogdaten"(kuenstler+, titel, untertitel?, jahr, id)">
<!ENTITY % id "id ID #REQUIRED">

Referenzierung:

<!ELEMENT skulptur %katalogdaten;>
<!ELEMENT bild %katalogdaten;>
<!ELEMENT foto %katalogdaten;>
<!ATTLIST kurs %id;>
<!ATTLIST referent %id;>

Weitere Entities

  • externe Entities
  • interne Entities
  • externe Parameter-Entities
  • nicht analysierte Entities = Notations

Beispiele:

Geschäftsbrief

DTD

      <!-- DTD document brief.xml  -->

	<!ELEMENT brief (kontaktart*, anrede, absatz+, url,
	   schlussformel, unterschrift )>
	<!ELEMENT kontaktart (sender, empfaenger, zusatz*)>
	<!ENTITY % kontaktdaten "(name, addresse+, ort, plz, telefon*)">
	<!ELEMENT sender %kontaktdaten;>
	<!ELEMENT empfaenger %kontaktdaten;>
	<!ELEMENT zusatz %kontaktdaten;>
	
	<!ELEMENT name ( #PCDATA )>
	<!ELEMENT addresse ( strasse, hausnummer )>
	<!ELEMENT ort ( #PCDATA )>
	<!ELEMENT plz ( #PCDATA )>
	<!ELEMENT telefon ( #PCDATA )>
	
	<!ELEMENT strasse ( #PCDATA )>
	<!ELEMENT hausnummer ( #PCDATA ) >
	 
	<!ELEMENT anrede ( #PCDATA )>
	<!ELEMENT schlussformel ( #PCDATA )>
	<!ELEMENT absatz ( #PCDATA )>
        <!ELEMENT url (#PCDATA)>
	<!ELEMENT unterschrift ( #PCDATA )>

XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE brief SYSTEM "brief.dtd">

<brief>
    
    <kontaktart>
        <sender>
            <name>SoundSo GMBH</name>
            <addresse>
                <strasse>Soundsostr.</strasse>
                <hausnummer>1</hausnummer>
            </addresse>   
            <ort>Soundsostadt</ort>
            <plz>12345</plz>
            <telefon>+499 711 48 68 69</telefon>
        </sender>
        <empfaenger>
            <name>Sowieso</name>
            <addresse>
                <strasse>Sowiesostr.</strasse>
                <hausnummer>2</hausnummer>
            </addresse>
            <ort>Sowiesostadt</ort>
            <plz>54321</plz>
            <telefon>0842 2457158</telefon>
        </empfaenger>
        <zusatz>
            <name>ABC Amtsgericht</name>
            <addresse>
                <strasse>Musterstr.</strasse>
                <hausnummer>1</hausnummer>
            </addresse>
            <ort>Musterstadt</ort>
            <plz>9876</plz>
        </zusatz>
    </kontaktart>
    
    <anrede>Sehr geehrter,</anrede>
    
    <absatz>Wir freuen Ihnen mitteilen zu dürfen, 
        dass Sie ein Upgrade für Ihren Flug nach Timbuktu...
    </absatz>
    
    <absatz>(...)
    </absatz>
    <url>http://firstclasssowieso.de</url>
    <schlussformel>Mit freundlichen Grüßen,</schlussformel>
    <unterschrift>Sarah Soundso</unterschrift>
    
</brief>

Kunstsammlung

DTD

<!-- DTD document kunstsammlung.xml  -->
 <!ELEMENT kunstsammlung (name?, lokalisation, gemaelde*, video*, foto*, skulptur*)> 
<!ELEMENT name (#PCDATA)>
<!ELEMENT lokalisation EMPTY>
<!ATTLIST lokalisation
            url CDATA #IMPLIED
       postal CDATA #IMPLIED>

<!ENTITY % info "(katalog, inhalt)">
<!ELEMENT gemaelde %info;>
<!ELEMENT video %info;>
<!ELEMENT foto %info;>
<!ELEMENT skulptur %info;>
<!ELEMENT katalog (titel, url, abstract*, kuenstler)>
<!ELEMENT titel (#PCDATA)>
<!ELEMENT url (#PCDATA)>
<!ELEMENT abstract (#PCDATA)>
<!ELEMENT kuenstler (#PCDATA) >
<!ELEMENT inhalt (person*, bauwerk*, andere*)>
<!ELEMENT person (bezeichnung+)>
<!ELEMENT bauwerk (bezeichnung+)>
<!ELEMENT andere (bezeichnung+)>
<!ELEMENT bezeichnung (#PCDATA)>

XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE kunstsammlung SYSTEM "kunstsammlung.dtd">
<kunstsammlung>
    
    <name>Neue schöne Bilder</name>
    
    <lokalisation url="http://www.bilder.de/"/>
        
        <gemaelde>
            <katalog>
                <titel>Mona Lisa vor dem Eiffelturm</titel>
                <url>http://www.woauchimmer.de</url>
                <kuenstler>Leonarda da Vinci</kuenstler>
            </katalog>
            <inhalt>
                <person>
                    <bezeichnung>Mona Lisa</bezeichnung>
                </person>
                <bauwerk>
                    <bezeichnung>Eiffelturm</bezeichnung>
                </bauwerk>
            </inhalt>
        </gemaelde>
        
        <gemaelde>
            <katalog>
                <titel>Ritter, Burgen, Adel</titel>
                <url>http://www.beispielseite.de</url>
                <kuenstler>Ai Wei Wei</kuenstler>
            </katalog>
            <inhalt>
                <person>
                    <bezeichnung>byzantinische Kaiserin</bezeichnung>
                </person>
                <person>
                    <bezeichnung>Ritter des 13.Jhd</bezeichnung>
                </person>
                <person>
                    <bezeichnung>fränkischer Edelmann</bezeichnung>
                </person>
                <bauwerk>
                    <bezeichnung>Wasserburg</bezeichnung>
                </bauwerk>
            </inhalt>
        </gemaelde>
    
        <skulptur>
           (...)
        </skulptur>
    
        <video>
           (...)
        </video>
    
</kunstsammlung>

vorherige Folie / nächste Folie

Schlagwörter: