E-Book Startseite Karteikarten-Programm
0

Allgemeines

Nun ist es endlich soweit: Sie haben den Bereich DTD-Kurs von dem Hauptkapitel "XML, XSL und DTD lernen" nun fast absolviert. Der letzte Teil dieses Kurses sind die Beispiele. Hier im DTD-Kurs haben wir 2 DTD Beispiele erstellt. Wir wollen diese Beispiele für Sie Schritt für Schritt erklären. Wir machen nur aus diesem Grund eine Schritt für Schritt Anleitung um Ihnen das Programmieren etwas näher zu bringen und dass Sie dafür ein Gefühl bekommen, wie man Webseitenteile im Gesamten programmiert. Bei dem 1. Beispiel handelt es sich um eine XML-Datenbank, die wir im XML-Kapitel schon behandelt haben. Der Unterschied ist, dass das Dokument im DTD-Kapitel mit DTD-Anweisungen gültig, also valide, gemacht worden ist. Bei dem 2. Beispiel handelt es sich um ein einfaches Telefonbuch mit Gültigkeit.


Datenbank für die größten 10 Gebäude der Welt (erweitert)

Das Beispiel "Datenbank für die größten 10 Gebäude der Welt" haben wir bereits im XML-Kapitel behandelt. Im XML-Dokument gibt es für jeden Rang ein Element namens rang**. Unterhalb der rang**-Elemente kommen die Elemente name, stadt, land, hoehe, etagen und baujahr vor. Im DTD-Bereich, der sich oberhalb der XML-Baumstruktur befindet und somit unterhalb der XML-Deklaration wird festgelegt, dass das Hauptelement gebaeude, 10 bestimmte Unterelemente enthalten muss: rang1, rang2, rang3, rang4, rang5, rang6, rang7, rang8, rang9 und rang10. Innerhalb dieser Elemente müssen wiederrum die Elemente name, stadt, land, hoehe, etagen und baujahr vorkommen. Zum Schluss wird noch festgelegt, dass diese Elemente Zeicheninhalt als Inhalt haben, also PCDATA. Hier die vollständige XML-Datei mit DTD:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
 
<!DOCTYPE gebaeude [
    <!ELEMENT gebaeude (rang1, rang2, rang3, rang4, rang5, rang6, rang7, rang8, rang9, rang10)>
    <!ELEMENT rang1 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT rang2 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT rang3 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT rang4 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT rang5 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT rang6 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT rang7 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT rang8 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT rang9 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT rang10 (name, stadt, land, hoehe, etagen, baujahr)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT stadt (#PCDATA)>
    <!ELEMENT land (#PCDATA)>
    <!ELEMENT hoehe (#PCDATA)>
    <!ELEMENT etagen (#PCDATA)>
    <!ELEMENT baujahr (#PCDATA)>
]>
 
<gebaeude>
  <rang1>
    <name>Burj Khalifa</name>
    <stadt>Duabi</stadt>
    <land>Vereinigte Arabische Emirate</land>
    <hoehe>828</hoehe>
    <etagen>163</etagen>
    <baujahr>2010</baujahr>
  </rang1>
  <rang2>
    <name>Mecca Royal Clock Tower Hotel</name>
    <stadt>Mekka</stadt>
    <land>Saudi-Arabien</land>
    <hoehe>601</hoehe>
    <etagen>95</etagen>
    <baujahr>2012</baujahr>
  </rang2>
  <rang3>
    <name>Taipei 101</name>
    <stadt>Taipei</stadt>
    <land>Republik China</land>
    <hoehe>508</hoehe>
    <etagen>101</etagen>
    <baujahr>2004</baujahr>
  </rang3>
  <rang4>
    <name>Shanghai World Financial Center</name>
    <stadt>Shanghai</stadt>
    <land>China</land>
    <hoehe>492</hoehe>
    <etagen>101</etagen>
    <baujahr>2008</baujahr>
  </rang4>
  <rang5>
    <name>International Commerce Center</name>
    <stadt>Hongkong</stadt>
    <land>Hongkong</land>
    <hoehe>484</hoehe>
    <etagen>108</etagen>
    <baujahr>2010</baujahr>
  </rang5>
  <rang6>
    <name>Petronas Towers</name>
    <stadt>Kuala Lumpur</stadt>
    <land>Malaysia</land>
    <hoehe>452</hoehe>
    <etagen>88</etagen>
    <baujahr>1998</baujahr>
  </rang6>
  <rang7>
    <name>Greenland Square Zifeng Tower</name>
    <stadt>Nanjing</stadt>
    <land>China</land>
    <hoehe>450</hoehe>
    <etagen>89</etagen>
    <baujahr>2010</baujahr>
  </rang7>
  <rang8>
    <name>Willis Tower</name>
    <stadt>Chicago</stadt>
    <land>Vereinigte Staaten</land>
    <hoehe>442</hoehe>
    <etagen>108</etagen>
    <baujahr>1974</baujahr>
  </rang8>
  <rang9>
    <name>Kingkey 100</name>
    <stadt>Shenzhen</stadt>
    <land>China</land>
    <hoehe>441</hoehe>
    <etagen>100</etagen>
    <baujahr>2011</baujahr>
  </rang9>
  <rang10>
    <name>Guangzhou International Finance Center</name>
    <stadt>Guangzhou</stadt>
    <land>China</land>
    <hoehe>438</hoehe>
    <etagen>103</etagen>
    <baujahr>2010</baujahr>
  </rang10>
</gebaeude>
Anzeigebeispiel
Anzeigebeispiel



Telefonbuch

Das 2. Beispiel ist ein Telefonbuch mit vielen verschiedenen XML-Deklarationen und somit auch verschiedenen DTD-Anweisungen. Im Beispiel werden sowohl Wiederholungen, Alternativen und Optionalen, aber auch Element-Verschachtelungen und Attribut mit Attribut-Werten verwendet. Also eine Mischung aus den verschiedenen Dingen, die Sie in diesem Kurs gelernt haben. Das Hauptelement ist hier im Beispiel telefonbuch. Unterhalb von telefonbuch können nun unbegrenzt viele Elemente namens eintrag vorkommen. Unterhalb des Elements eintrag kommt das Element kontakt und nummer vor. Das Element kontakt hat ein Attribut namens art. Bei diesem Attribut muss als Wert firma oder privat angegeben werden. Unterhalb des kontakt-Elements kann nun entweder das Element firmenname oder das Element vorname und nachname vorkommen, wobei das vorname-Element keine Pflichtangabe ist. Diese 3 Elemente haben keine untergeordneten Elemente und bekommen als Inhalt deshalb den Wert #PCDATA. Das 2. Unterelement von dem eintrag-Element ist nummer. Untergeordnet von nummer muss entweder nummerf (steht für Firmen-Nummer) oder nummerp (steht für Privat-Nummer) vorkommen. nummerp darf mehrmals vorkommen. nummerf und nummerp haben keine weiteren untergeordneten Elemente. Das Element nummerp bekommt noch ein Attribut namens art. Das art-Attribut kann entweder die Werte home oder handy aufnehmen. Der Grund, dass nummerp mehrmals vorkommen kann, könnte nun sein, dass man innerhalb eines Kontakts sowohl eine private "Telefon-Haus-Nummer" als auch eine Handy-Nummer der Privatperson abspeichern kann. Dieses Telefonbuch ist relativ vereinfacht und wurde etwas kurz gehalten.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
 
<!DOCTYPE telefonbuch [
    <!ELEMENT telefonbuch (eintrag)*>
    <!ELEMENT eintrag (kontakt, nummer)>
    <!ELEMENT kontakt (firmenname | (vorname?, nachname))>
    <!ATTLIST kontakt
        art (firma|privat) #REQUIRED
    >
    <!ELEMENT firmenname (#PCDATA)>
    <!ELEMENT vorname (#PCDATA)>
    <!ELEMENT nachname (#PCDATA)>
    <!ELEMENT nummer (nummerf | nummerp+)>
    <!ELEMENT nummerf (#PCDATA)>
    <!ELEMENT nummerp (#PCDATA)>
    <!ATTLIST nummerp
        art (home|handy) #REQUIRED
    >
]>
 
<telefonbuch>
  <eintrag>
    <kontakt art="firma">
      <firmenname>Zeller Metallbau GmbH</firmenname>
    </kontakt>
    <nummer>
      <nummerf>01234 - 5675670</nummerf>
    </nummer>
  </eintrag>
  <eintrag>
    <kontakt art="privat">
      <nachname>Silber</nachname>
    </kontakt>
    <nummer>
      <nummerp art="home">01234 - 4679432</nummerp>
      <nummerp art="handy">0181 - 89644572</nummerp>
    </nummer>
  </eintrag>
  <eintrag>
    <kontakt art="firma">
      <firmenname>Linda Schuster Modedesign</firmenname>
    </kontakt>
    <nummer>
      <nummerf>01235 - 448910</nummerf>
    </nummer>
  </eintrag>
  <eintrag>
    <kontakt art="privat">
      <vorname>Sarah</vorname>
      <nachname>Meyer</nachname>
    </kontakt>
    <nummer>
      <nummerp art="home">01234 - 5678213</nummerp>
    </nummer>
  </eintrag>
  <eintrag>
    <kontakt art="privat">
      <vorname>Constantin</vorname>
      <nachname>Frech</nachname>
    </kontakt>
    <nummer>
      <nummerp art="handy">0193 - 56217789</nummerp>
    </nummer>
  </eintrag>
</telefonbuch>
Anzeigebeispiel
Anzeigebeispiel



Design:
 


Logo
Benjamin Jung
Krummstr. 9/3
73054 Eislingen

E-Mail: info@homepage-webhilfe.de
Webseite: www.homepage-webhilfe.de