Sie sind auf Seite 1von 12

Pilar Alonso Suela

1. DAMEL
Aufgabe 4
Sprache der Marke

DTD
UND
XML
SCH
EMA
1

Pilar Alonso Suela


Markensprache Aufgabe 4
1. Damel

1 Ein Unternehmen verwendet XML-Dateien, um u. a. Drucker zu inventarisieren.


Speichern Sie für jeden Drucker die Seriennummer, die Marke, das Modell, das
Gewicht, die Papierformate, mit denen er arbeiten kann, die verwendete Patrone, den
Typ, das Kaufjahr und ob er vernetzt ist oder nicht.

Ein Beispiel für solche Dateien wäre:

<Drucker>.
<drucker numSeries="i245" type="laser" purchase="2010">
<brand>Epson</brand>.
<model>EPL300</model>.
<weight>4.52</weight>.
<size>A4</size>.
<size>A5</size>.
</cartridge>C-123BV</cartridge>.
<Netz/>
</printer>.
<Drucker numSerie="i246" type="dot matrix">
<brand>HP</brand>.
<Modell>LaserJet 2410</Modell>.
<weight>3.2</weight>.
<size>A4</size>.
</cartridge>C-456P</cartridge>.
</printer>.
</printers>.
Schreiben Sie ein XML-Schema für diese Dateien, wobei Sie die am besten geeigneten
Datentypen auswählen und berücksichtigen müssen, dass:

• Das Gewicht ist eine positive Zahl mit maximal zwei Dezimalstellen.
• Es kann mehr als eine Größe geben.
• Das Attribut "Typ" kann nur die Werte "Matrix", "Laser" und "Tinte" annehmen.
Sie ist obligatorisch.
• Das Attribut numSeries ist obligatorisch und dient als Bezeichner.
• Die Kartusche besteht aus einem großen C, einem Bindestrich, drei Zahlen und
einem oder zwei Großbuchstaben.
• Alle Elemente sind obligatorisch, mit Ausnahme von enred.
• Das Element enred ist optional. Wenn vorhanden, ist es ein leeres Element.
• Das fakultative Attribut Kauf speichert das Jahr des Kaufs. Sie ist eine positive
ganze Zahl.
• Jede Datei enthält Daten für einen oder mehrere Drucker.
2

XML SCHEMA

Das übergeordnete Element ist <xs:schema> und muss Deklarationen für alle in
der XML-Datei enthaltenen Elemente enthalten.

Das untergeordnete Element ist <xs:element>.

Im XML-Schema gibt es keine Möglichkeit, das Wurzelelement auf besondere


Weise zu definieren. Wir geben es mit <xs:element name="root"> an, das wir als
komplexen Typ definieren, wenn es mehrere Elemente enthält, und mit dem Tag
xs:sequence, um die verschiedenen Elemente, die es bilden, und seine
Einschränkungen hinzuzufügen. Damit haben wir ein verschachteltes XML-
Schema.

Attribute müssen nach dem Sequenz-Tag deklariert werden, das die


Wurzelelemente definiert.

Mit dem XML-Schema können wir erweiterte Validierungen durchführen.

Dies ist das XMl, das gegen document1.xsd validiert wurde:

<?xml version="1.0" encoding="UTF-8"?>

<printer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Document1.xsd"> <!--Link mit relativem
3

Pfad zur Validierung gegen xsd-->

<drucker numSeries="i245" type="laser" purchase="2010">

<brand>Epson</brand>.

<model>EPL300</model>.

<weight>4.52</weight>.

<size>A4</size>.

<size>A5</size>.

</cartridge>C-123BV</cartridge>.

<Netz/>

</printer>.

<Drucker numSerie="i246" type="dot matrix">

<brand>HP</brand>.

<Modell>LaserJet 2410</Modell>.

<weight>3.2</weight>.

<size>A4</size>.

</cartridge>C-456P</cartridge>.

</printer>.

</printers>.

Nun wird das XML-Schema namens document1:


4

Ich habe Kommentare wie diesen hinzugefügt:<! > obwohl diese Art von
Kommentaren vorzuziehen ist, da sie umsetzbar sind und strukturiert werden
können:

<xs:annotation>
<xs:documentation>
Eine Liste von Druckern definieren Pilar Alonso Suela Aufgabe 04.1 DAMEL
</xs:documentation>
</xs:annotation>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">

<xs:element name="drucker">

<xs:complexType>

<xs:sequence>

<!--hier verweisen wir auf das Drucker-Element, die Verweise sind eine
Möglichkeit, das XML-Schema besser lesbar zu machen.es wird Daten für einen
oder mehrere Drucker geben-->>.

<xs:element ref="drucker" minOccurs="1"


maxOccurs="unbounded"/>

</xs:sequence>
5

</xs:complexType>

</xs:element>

<xs:element name="drucker">

<xs:complexType>

<xs:sequence>

<xs:element name="brand" type="xs:string" minOccurs="1"


maxOccurs="unbounded"/>

<xs:element name="model" type="xs:string" minOccurs="1"


maxOccurs="unbounded"/>

<xs:element name="weight" minOccurs="1" maxOccurs="unbounded">

<!-das Gewicht muss eine positive Zahl mit höchstens zwei Dezimalstellen
sein und muss innerhalb von xs:restriction angegeben werden-->

<xs:simpleType> <!--wir definieren den Wert des einfachen Typs-->.

<xs:restriction base="xs:decimal"><!--base gibt den Datentyp an, von dem


die Einschränkung ausgeht, in diesem Fall muss es dezimal sein-->>.

<xs:fractionDigits value="2"/> <!--Ich verwende fractionDigits, um die


Anzahl der Nachkommastellen anzugeben, da die Gesamtzahl der Ziffern die
Gesamtzahl der Ziffern angibt, auch wenn sie in Dezimalzahlen verwendet
werden kann-->

<xs:minInclusive value="1"/>

</xs:restriction>

</xs:simpleType>

</xs:element> <!--es kann mehr als eine Größe geben-->

<xs:element name="size" type="xs:string" minOccurs="1"


maxOccurs="unbounded"/><!--wir definieren eine unbegrenzte maximale Anzahl
von Größen, mit einem minimalen Vorkommen von 1-->.

<xs:element name="cartridge" minOccurs="1" maxOccurs="unbounded" >

<xs:simpleType>

<xs:restriction base="xs:string">
6

<xs:pattern value="[C][\-][0-9][0-9][0-9][A-Z]{1,2}"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="enred" type="xs:string" default="" minOccurs="0" />

</xs:sequence>

<!---Attribute -->

<!-das Attribut "Seriennummer" muss obligatorisch sein und dient auch als
Druckerkennzeichen-->

<xs:attribute name="numSeries" use="required">

<xs:simpleType>

<xs:restriction base="xs:ID"><!--Lassen Sie uns die ID-Einschränkung


festlegen-->

</xs:restriction>

</xs:simpleType>

</xs:attribut>

<!--Das Attribut type muss obligatorisch sein und darf nur die Werte dot matrix,
laser und ink enthalten-->.

<xs:attribute name="type" use="required">

<xs:simpleType><!--wir definieren den einfachen Typ-->.

<xs:restriction base="xs:string"><!--die Art der Daten, auf die die


Einschränkung angewandt wird-->

<xs:enumeration value="matrix"/> <!--inside an enumeration we will put the


different values--> <!--inside an enumeration we will put the different values-->
<!--inside an enumeration we will put the different values--> <!

<xs:enumeration value="laser"/>

<xs:enumeration value="ink"/>
7

</xs:restriction>

</xs:simpleType>

</xs:attribut>

<xs:attribute name="purchase" type="xs:positiveInteger" use="optional"/><!--


Das Attribut "purchase" ist optional und eine positive ganze Zahl. Wenn nichts
angegeben wird, ist das Attribut standardmäßig optional, obwohl ich es lieber
angegeben hätte-->.

</xs:complexType>

</xs:element>

</xs:schema>

2.- Eine Vereinigung von Muskelspielern verwendet XML-Dateien, um die


Informationen über die von ihr organisierten Turniere zu speichern. Für jedes Turnier
möchten Sie das Jahr, in dem das Turnier stattfand, den vorherigen Sieger (seine
Kennung) und die Angaben zu den Teilnehmern speichern. Für die Teilnehmer wollen
wir ihre Kennung, die Kennung ihres Partners, ihren vollständigen Namen, ihr Alter, ihr
Land und auch, ob sie gesetzt oder nicht gesetzt sind, speichern.

Ein Beispiel für solche Dateien wäre:

<tournament edition="1998" previousWinner="j01">


<Teilnehmer idP="j01" couple="j02">
<Vorname>Manuel Pérez</Vorname>.
<Alter>23</alter>.
<Land> Spanien</Land>.

<seriellKopf/>
</participant>.
<Teilnehmer idP="j02" couple="j01">
<Vorname>Manuel Gómez</Vorname>.
<Alter>25</alter>.
<Land>Spanien</Land>.
</participant>.
<Teilnehmer idP="j03" couple="j04">
<Vorname>Ana Puertas</Vorname>.
<Alter>22</alter>.
<Land>E5spain</Land>.
<seriellKopf/>
</participant>.
<Teilnehmer idP="j04" couple="j03">
<Vorname>Paco Fraile</Vorname>.
<Alter>45</alter>.
8

<Land>Spanien</Land>.
</participant>.
</tournament>.
Schreiben Sie eine geeignete DTD für diese Dateien, wobei zu beachten ist, dass:

• Alle Attribute sind obligatorisch.


• Das Attribut idP dient als Identifikator.
• Das Attribut "Partner" ist die Kennung eines anderen Teilnehmers, der unbedingt
in der Datei vorhanden sein muss.
• Das Element serialHead ist optional, die anderen sind obligatorisch.
• Jede Datei enthält Daten für nur ein Turnier.
• Das Turnier muss Teilnehmer haben.

DTD

Eine DTD ist ein Dokument mit der Erweiterung .dtd, das dafür sorgt, dass die XML-
Daten den in der DTD festgelegten Beschränkungen entsprechen.

In diesem Fall habe ich es intern in der xml deklariert, aber es ist auch möglich, es extern
als einfaches Textdokument mit einer .dtd-Erweiterung zu deklarieren.

Terminalelemente (die keine Elemente enthalten) werden wie folgt deklariert: <!
ELEMENT data_type_name>.

Nicht-terminale Elemente auf diese andere Weise: <!ELEMENT A(B,C)>

deren Kardinalität definiert werden muss: ?(fakultativ),*(0,1,mehrere),+(einer oder


mehrere)|(Auswahloperator)

<!ATTLIST, um Attribute zu deklarieren, und es gibt mehrere Typen:


ID,IDREF,CDATA,MNTOKEN und die Modifikatoren:
IMPLIED,FIXED,REQUIRED,literal.

Wir werden auch Entitäten erstellen, die mit konstanten Werten arbeiten.

AUFGABENANFORDERUNGEN

Da das Turnier Teilnehmer haben muss, verwenden wir > +, um ein Minimum von 1
oder mehr in der Kardinalität des Turnierelements festzulegen.

Da die Attribute obligatorisch sein müssen, werden wir #REQUIRED verwenden.


9

Innerhalb des Elements participant müssen alle enthaltenen Elemente mindestens einmal
vorkommen (+), und das Element headOfSeries ist optional, daher verwende ich >?

Da idP ein Bezeichner sein muss, fügen wir ID hinzu, um das Attribut als Bezeichner zu
deklarieren.

Das Partnerattribut muss sich auf den idP eines anderen Teilnehmers beziehen. Zu
diesem Zweck verwende ich IDREF.

Sie würde folgendermaßen aussehen:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE tournament [

<!ELEMENT Turnier (Teilnehmer+)>

<!ATTLIST tournament CDATA edition #REQUIRED>

<!ATTLIST previous tournamentWinner CDATA #REQUIRED>

<!ELEMENT Teilnehmer (Name+,Alter+,Land+,headOfSeries?)>

<!ATTLIST Teilnehmer idP ID #REQUIRED>

<!ATTLIST teilnehmer partner IDREF #REQUIRED>

<!ELEMENT name (#PCDATA)>

<!ELEMENT Alter (#PCDATA)>

<!ELEMENT land (#PCDATA)>

<!ELEMENT headOfSerial (#PCDATA)>

]>

<tournament edition="1998" previousWinner="j01">

<Teilnehmer idP="j01" couple="j02">

<Vorname>Manuel Pérez</Vorname>.

<Alter>23</alter>.

<Land> Spanien</Land>.
1
0
<seriellKopf/>

</participant>.

<Teilnehmer idP="j02" couple="j01">

<Vorname>Manuel Gómez</Vorname>.

<Alter>25</alter>.

<Land>Spanien</Land>.

</participant>.

<Teilnehmer idP="j03" couple="j04">

<Vorname>Ana Puertas</Vorname>.

<Alter>22</alter>.

<Land>E5spain</Land>.

<seriellKopf/>

</participant>.

<Teilnehmer idP="j04" couple="j03">

<Vorname>Paco Fraile</Vorname>.

<Alter>45</alter>.

<Land>Spanien</Land>.

</participant>.

</tournament>.

Ich füge ein Bildschirmfoto des Copy Editors bei, und die Datei wird .dtd sein:
1
1

Das könnte Ihnen auch gefallen