Announcement

Collapse
No announcement yet.

XML-Schema aus XML-Dokument

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML-Schema aus XML-Dokument

    Aloha,
    ich stehe am Anfang meines Informatik-Studiums und wie man das so von der Universität kennt, sind die Vorlesungen nicht immer sehr ergiebig..
    Die Aufgabe war, aus einem gegebenen XML-Dokument eine passende Grammatik als XML-Schema anzugeben, nur war von einem Schema noch nie die Rede..

    Mir wäre es also ganz lieb, wenn mal einer hier drüber schauen könnte, ob das so mehr oder weniger in Ordnung ist.



    XML-Dokument:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <restaurant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="restaurant.xsd">
    
    <bestellung bestellnummer="314159265358">
    
    <mitarbeiter mitarbeiternummer="1">
    <nachname>Balzert</nachname>
    <vorname>Heide</vorname>
    </mitarbeiter>
    
    <datum>2010-01-10</datum>
    <uhrzeit>13:37:00</uhrzeit>
    
    <fastfoodartikel>
    <name>Royal mit Käse</name>
    <preis>4.90</preis>
    </fastfoodartikel>
    
    <fastfoodartikel istBeilage="true">
    <name>Pommes</name>
    <preis>2.90</preis>
    </fastfoodartikel>
    
    </bestellung>
    </restaurant>

    und mein Versuch eines XML-Schemas:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    	<xs:element name="restaurant" />
    	
    	<xs:element name="bestellung" type="bestellungTyp" />
    	
    	<xs:complexType name="bestellungTyp">
    		<xs:sequence>
    			<xs:element name="mitarbeiter" type="mitarbeiterTyp" />
    			<xs:element name="datum" type="xs:date" />
    			<xs:element name="uhrzeit" type="xs:time" />
    			<xs:element name="fastfoodartikel" type="fastfoodartikelType" />
    		</xs:sequence>
    		<xs:attribute name="bestellnummer" type="xs:integer" />
    	</xs:complexType>
    	
    	<xs:complexType name="mitarbeiterTyp">
    		<xs:sequence>
    			<xs:element name="nachname" type="xs:string" />
    			<xs:element name="vorname" type="xs:string" />
    		</xs:sequence>
    		<xs:attribute name="mitarbeiternummer" type="xs:integer" />
    	</xs:complexType>
    	
    	<xs:complexType name="fastfoodartikelTyp">
    		<xs:sequence>
    			<xs:element name="name" type="xs:string" />
    			<xs:element name="preis" type="xs:string" />
    		</xs:sequence>
    		<xs:attribute name="istBeilage" type="xs:boolean" />
    	</xs:complexType>
    	
    </xs:schema>

  • #2
    Warum wird für element name="restaurant" kein Typ definiert? Ohne für das Wurzelelement einen Typ zu definieren, ist der Rest wenig sinnvoll.

    Comment


    • #3
      wie gesagt, leider wird in dieser Vorlesung wohl viel Wert auf Selbst-Lernen gelegt und so gut wie nichts erklärt.
      ich dachte, dass man dem restaurant nichts hinzufügen muss, da dieses Element selbst ja nicht als komplex weiterdefiniert wird.. oder ist es an sich schon komplex, weil es alles andere beinhaltet?

      also dem restaurant type="restaurantTyp" zuweisen (und den Rest dem komplexen Restaurant-Element?) ?

      Comment


      • #4
        Mit der Schemasprache hat jedes Element einen komplexen Typ, sobald es Kindelemente hat. Auch ein Attribut reicht, um einen komplexen Typen zu verlangen.

        Comment

        Working...
        X