• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

interne/externe DTD anlegen

frznx

Neues Mitglied
Hallo,

ich benötige etwas Hilfe beim anlegen einer internen bzwexternen DTD zu einem vorhandenem XML-Bestelldokument.
Habe ich es vom Grundgerüst her richtig gemacht?

Bin mir jedoch Wurzelelement "Position" nicht sicher wie ich das deklarieren soll, da im XML Dokument, "Position" mehrmals vorkommt und die Unterelemente: Designation, ModelNumber & ItemNumber jeweils auch mehrmals vorkommen.


Hier Cofolgenderde:

Code:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?><!--
Author
Description: XML Task 2.1
--> 
<!-- Order XML Document --> 


<!DOCTYPE Order        [
    <!ELEMENT Order                (Ordersection, GeneralOrder, Position) >
    <!ELEMENT Ordersection        (Adress) >
    <!ELEMENT Adress            (Firstname, LastName, Street, HouseNumber, ZipCode) >
    <!ELEMENT Firstname            (#PCDATA) >
    <!ELEMENT LastName            (#PCDATA) >
    <!ELEMENT Street            (#PCDATA) >
    <!ELEMENT HouseNumber        (#PCDATA) >
    <!ELEMENT ZipCode            (#PCDATA) >
    <!ELEMENT GeneralOrder        (PaymentMethod, Delivery) >
    <!ELEMENT PaymentMethod        (#PCDATA) >
    <!ELEMENT Delivery            (#PCDATA) >
    <!ELEMENT Position            (Orderposition*) >
    <!ELEMENT Designation        (#PCDATA) >
    <!ELEMENT ModelNumber        (#PCDATA) >
    <!ELEMENT ItemNumber        (#PCDATA) >
 
] >


<order> 
  <!-- 1. Section -->
  <OrderSection>
    <Adress>
      <FirstName>Mustermann</FirstName>
      <LastName>Max</LastName>
      <Street>Blumenstraße</Street>
      <HouseNumber>17</HouseNumber>
      <ZipCode>81739</ZipCode>
    </Adress>
  </OrderSection>
  <!-- 2 Section -->
  <generalorder>
    <PaymentMethod>Paypal</PaymentMethod>
    <Delivery>Express</Delivery>
  </generalorder>
  <!-- 3. Section -->
  <position>
    <Orderposition> 
      <!-- Element 1-->
      <Designation>Lernbuch XML 1</Designation>
      <ModelNumber>0001</ModelNumber>
      <ItemNumber>3</ItemNumber>
    </Orderposition>
    <Orderposition> 
      <!--Element2-->
      <Designation>Lernbuch XML 2</Designation>
      <ModelNumber>4588</ModelNumber>
      <ItemNumber>4</ItemNumber>
    </Orderposition>
    <Orderposition> 
      <!--Element 3-->
      <Designation>Lernbuch XML 3</Designation>
      <ModelNumber>4588</ModelNumber>
      <ItemNumber>5</ItemNumber>
    </Orderposition>
    <Orderposition> 
      <!--Element 4-->
      <Designation>Lernbuch XML 4</Designation>
      <ModelNumber>0204</ModelNumber>
      <ItemNumber>6</ItemNumber>
    </Orderposition>
  </position>
</order>
 
Zuletzt bearbeitet:
Die DTD-Syntax kennt auch Quantifikatoren:

- Dokumenttypdefinition

Edit: Bei Orderposition in position hast du die ja schon eingesetzt.

Wenn position mehrfach in order vorkommen kann, setze den *- oder +-Modifikator.

Die Groß-/Kleinschreibung der Elementnamen würde ich außerdem vereinheitlichen.
 
Zuletzt bearbeitet:
habs demnach nochmal überarbeitet, hier nochmal der überarbeitete Code, wäre es demnach so richtig von der Deklarierung?

Wann benutze ich denn z.B + oder *, wann z.b auch das Fragezeichen? finde irgendwie keine genauen Informationen dazu

Code:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?><!--
Author 
Description: XML Task 2.1
-->
<!-- Order XML Document -->


<!DOCTYPE Order        [
    <!ELEMENT Order                (Ordersection, GeneralOrder, Position) >
    <!ELEMENT Ordersection        (Adress) >
    <!ELEMENT Adress            (Firstname, LastName, Street, HouseNumber, ZipCode) >
    <!ELEMENT Firstname            (#PCDATA) >
    <!ELEMENT LastName            (#PCDATA) >
    <!ELEMENT Street            (#PCDATA) >
    <!ELEMENT HouseNumber        (#PCDATA) >
    <!ELEMENT ZipCode            (#PCDATA) >
    <!ELEMENT GeneralOrder        (PaymentMethod, Delivery) >
    <!ELEMENT PaymentMethod        (#PCDATA) >
    <!ELEMENT Delivery            (#PCDATA) >
    <!ELEMENT Position            (Orderposition+) >
    <!ELEMENT Orderposition        (Designation, ModelNumber, ItemNumber) >
    <!ELEMENT Designation        (#PCDATA) >
    <!ELEMENT ModelNumber        (#PCDATA) >
    <!ELEMENT ItemNumber        (#PCDATA) >
 
] >


<order>
  <!-- 1. Section -->
  <OrderSection>
    <Adress>
      <FirstName>Mustermann</FirstName>
      <LastName>Max</LastName>
      <Street>Blumenstraße</Street>
      <HouseNumber>17</HouseNumber>
      <ZipCode>81739</ZipCode>
    </Adress>
  </OrderSection>
  <!-- 2 Section -->
  <generalorder>
    <PaymentMethod>Paypal</PaymentMethod>
    <Delivery>Express</Delivery>
  </generalorder>
  <!-- 3. Section -->
  <position>
    <Orderposition>
      <!-- Element 1-->
      <Designation>Lernbuch XML 1</Designation>
      <ModelNumber>0001</ModelNumber>
      <ItemNumber>3</ItemNumber>
    </Orderposition>
    <Orderposition>
      <!--Element2-->
      <Designation>Lernbuch XML 2</Designation>
      <ModelNumber>4588</ModelNumber>
      <ItemNumber>4</ItemNumber>
    </Orderposition>
    <Orderposition>
      <!--Element 3-->
      <Designation>Lernbuch XML 3</Designation>
      <ModelNumber>4588</ModelNumber>
      <ItemNumber>5</ItemNumber>
    </Orderposition>
    <Orderposition>
      <!--Element 4-->
      <Designation>Lernbuch XML 4</Designation>
      <ModelNumber>0204</ModelNumber>
      <ItemNumber>6</ItemNumber>
    </Orderposition>
  </position>
</order>
 
Code:
  Quantifikator  Beispiel           Beschreibung
  ============================================================================
  
  (kein)         <!ELEMENT a (b)>   Element b muss genau einmal in jedem
                                    Element a vorkommen
                                    
  ?              <!ELEMENT a (b?)>  Element b muss nullmal oder einmal in jedem
                                    Element a vorkommen
                                    
  +              <!ELEMENT a (b+)>  Element b muss mindestens einmal in jedem
                                    Element a vorkommen

  *              <!ELEMENT a (b*)>  Element b darf beliebig oft in Element a
                                    vorkommen (auch gar nicht)
 
Zurück
Oben