XML - Syntax und Aufbau

Beschreibt XML bzw XSD in einfachen Teilstückchen. Erläutert Schema definitionen mit Beispielcode zum besseren Verständnis.

Beschreibt XML bzw XSD in einfachen Teilstückchen. Erläutert Schema definitionen mit Beispielcode zum besseren Verständnis.


Kartei Details

Karten 89
Sprache Deutsch
Kategorie Informatik
Stufe Andere
Erstellt / Aktualisiert 26.02.2014 / 06.08.2024
Weblink
https://card2brain.ch/box/xml_syntax_und_aufbau
Einbinden
<iframe src="https://card2brain.ch/box/xml_syntax_und_aufbau/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

&

&amp;

<

&lt;

>

&gt;

&apos;

«

&quot;

Welcher Zeichensatz beinhaltet die Deutschen Umlaute?

<?xml version="1.0" encoding="ISO-8859-1"?>

Alle Zeichen innerhalb eines CDATA-Abschnitts werden als rohe Daten behandelt

<![CDATA[ <table border="1.0"> <tr> <td>Alan Turing</td> <td>computer scientist</td> </tr> </table> ]]>

Wohlgeformt zusammengefasst:

1. 1x Root oder Document-Element

2. Immer Start und End Tag

3. Namen bestehen aus: Buchstaben, Ziffern, Punkten, Unterstrichen, Bindestrichen, Doppelpunkten

4. Elemente korrekt verschachteln

5. Attribut-Werte in einzelnen oder doppelten Quotes

6. Eine Element = 1x Attribut mit dem namen XY

7. < und & sind in Attributen untersagt

 

Namespaces dienen

1. Verhindern von Namenskonfilkten (table heisst Tisch ist aber auch ein HTML Tag für Tabelle - name, title, date... usw.)

2. Elemente und Attribut werden einer XML-Anwendung zugeordnet

Beispiel für SVG Namespace. Browser erkennt dies automatisch bei Korrektheit:

<svg:svg xmlns:svg="http://www.w3.org/2000/svg" ... >

<svg:g font-family="Helvetica" font-size="6">
<svg:rect x="10" y="33" width="10" height="10" fill="#FFCCCC"/>
<svg:text x="7" y="50">0 sec.</svg:text>
<svg:rect x="60" y="20" width="10" height="10" fill="#FFCCCC"/>
<svg:text x="52" y="40">3 sec.</svg:text>
<svg:path d="M-5,0 L0,-10 L5,0 z" fill="blue" stroke="red">
<svg:animateMotion from="15,43" to="65,30" begin="0s" dur="3s"/>

</svg:path>
</svg:g>
</svg:svg>

Wodurch wird ein Namespace definiert?

Durch die URI.

 

Beispiel:

<xmlns:dc="http://www.irgendwas.com"
<xmlns:m="http://www.blabla.com">

 

Erläuterung zu Namespacedeklaration

xmlns:variable="URI"

 

mit der Variable zeigen wir auf die URI. Diese muss nicht unbedingt vorhanden sein. Wichtig ist nur, dass der Namespace eindeutig ist.

Qualifizierter Element name

<dc:title> Titel </dc:title>

1. was machen wir mit xmlns?

2. Ist der Präfix nur inner eines Elementes gültig (also lokal) indem er definiert wurde?

1. ein xmlns-Attribut kann einem Namespace-URI ein Präfix zugeordnet werden
<description xmlns:dc="http://www.blabla.com">

2. JA

 

1. Wo muss ein Präfix definiet werden, damit er im ganzen Doc gültig ist?

2. Was lösen wir damit

1. Im Root Element

2. Wir lösen Namenskonflikte auf

Qualifizierter Elementen Name - Beispiel

<?xml version="1.0"?>
<catalog xmlns:dc="http://purl.org/dc" xmlns:pt="http://vangoghgallery.com/pt">
   <dc:description>
      <dc:title>Impressionist Paintings</dc:title>
      <dc:creator>Elliotte Rusty Harold</dc:creator>
      <dc:date>2000-08-22</dc:date>
   </dc:description>
   <pt:painting>
      <pt:title>Memory of the Garden at Etten</pt:title>
      <pt:artist>Vincent van Gogh</pt:artist>
      <pt:date>
         <pt:month>November</pt:month>
         <pt:year>1888</pt:year>
      </pt:date>
   </pt:painting>
</catalog>

Default Namespace setzen

Wird ein Namespace ohne Präfix definiert, so gehören alle Elemente ohne qualifizierten Namen innerhalb dieses Bereichs zu diesem Namespace.
  
 

Was beschreibt das XML-Schema?

Die Struktur eines XML-Files (einer Instanz).

XML wird von W3C empfohlen?

JA

XSD ist das Gleiche wie XML-Schema?

JA

XSD bedeutet

XML Schema Definition

Was definiert ein Schema?

1. Elemente welche im Dokument vorkommen dürfen

2. Attribute die vorkommen dürfen

3. Welche Elemente Kind Elemente sind

4. Die Reihenfolge der Elemente

5. Die Anzahl der Kind-Elemente

6. Ob Elemente leer sind oder Text enthalten

7. Datentypen für Elemente und Attribute

8. Default und Feste Werte für Elemente und Attribute

Vorteile von Schemas

1. XML Schemas unterstützen Datentypen
  a.  Einfachere und genauere Beschreibung der erlaubten Werte
  b. Datenkorrektheit ist einfach verifizierbar
  c. Einschränkungen (facets) an die Daten können einfach definiert werden
  d. Einfache Definition von Pattern (Datenformate)
  e. Arbeit mit Daten aus Datenbanken ist einfacher

2. XML Schema benutzt XML Sytax
  a. keine neue Sprache muss erlernt werden
  b. Editieren, parsen und transformieren über den selben XML Editor

3. XML Schemas sind erweiterbar
  a. Eigene Datentypen können von den vordefineirten hergeleitete werden
  b. Schemas(die darin definierten Typen) können in anderen Schemas wiederverwendet werden
  c. Ein beliebiges XML-Dokument kann mehrere andere Schemas referenzieren

Beispeil Schema Code

Definiere ein neues Vokabular. Alle im Schema definierte Elemente gehören zum Target-Namespace.

<?xml version="1.0"  encoding="UTF-8" ?>
<xs:schema xmlns="http://www.blabla.com" targetNamespace="http://www.nana.com" elementFormDefault="qualified">

<xs:element name="note">
   <xs:complexeType>
      <xs:sequence>
         <xs:element name="to" type="xs:string">
         <xs:element name="from" type="xs:string">
         <xs:element name="heading" type="xs:string">
         <xs:element name="body" type="xs:string">
      </xs:sequence>
   </xs:complexeType>
</xs:element>
</xs:schema>

Instanzfile zu; Beispiel Schema-Code Definition

<?xml version="1.0" encoding="UTF-8" ?>
<note xmlns="http://www.nana.com" xmlns:xsdi="http://www.blabla.com/schema-instance" xsdi:schemaLocation="http://www.nana.com note.xsd">

<to>Bill</to>
<from>me</from>
<heading>hi</heading>
<body>don't forget me</body>
 

</note>

 

xmlns="http...." hier der default Namespace vom Schema definiert.
 

xmlns:xsdi="http..." namespace für alle xsdi-Befehle

 

xsdi:schemaLocation="http......" bezeichnet das Schemafile in selchem die Sprache definiert wird.

Was ist XSD?

1. Beschreibt Struktur eines XML Files

2. W3C recommendation

3. XML Schema = XSD (XML Schema Definition)

Beschreibe die Teile eines Schemas

1. Elementendeklaration

2. Typendefinition

 

Erläutere die XML Schema Definition

Bestimmt den Namen und Typen eines Elementes

Erläutere die XML Schema Typen Definition

1. Bestimmt den Namen eines Typens

2. Bestimmt die Zusammensetzung eines Typens

Globale Elementdeklarationen

1. Sind Kind Elemente von <schema>

2. Können als Dokumentelement eines Instanz-Dokumentes vorkommen

Beispiel:

<xs:schema ...>
   <xs:element name="note">
      <xs:complexeType>

   ....

      </ xs:complexeType>
   </xs:element>
</xs:schema>
 

Lokale Elementdeklarationen

1. Sind Kindelemente einer Typen-Definition

2. Nicht global bekannt

Beispiel:
 

...
<xs:complexeType name="adressTyp">
   <xs:sequence>
      <xs:element name="to" type="xs:string" />
      ...
   </ xs:sequence>
...

Was macht eine XSD-Deklaration

Beschreibt Elemente und Attribute welche im Instanzdokument (XML-File) vorkommen dürfen:

Beispiel:

...
<xs:element name="from" type="xs:string" />
<xs:element name="to" type="xs:string" />
...

Was definiert die XSD-Definition?

1. Definiert einen Typ der in Element- oder Attribut-Deklarationen verwendet werden kann

2. Lokale Typen (eingebettet in in Typ-Definition) nennt man lokale Typen

3. Typ-Definitionen haben immer ein "name"-Attribut (sonst keine Möglichkeit für weitere Verwendung).
Auch bekannt als -> Benannter Typ

Einfache Typen können...

1. Strings

2. Zahlen

3. Zeittypen oder

4. Listen

bzw. Vereinigungen dieser Vier Typen enthalten

Deklaration von einfachen Typen

...
<xs:element name="lastName" type="xs:string" />
<xs:element name="age" type="xs:short" />
<xs:element name="born" type="xs:date" />
...
 

Defaultwerte bei atomaren Typen - Beispiel

<xs:element name="color" type="xs:string" default="red">
<xs:element name="color" type="xs:string" fixed="red">

Vordefinierte primitive Schema Typen

1. date (Jahr-Monat-Tag)

2. gDay (nur Tag

3. gMonth (nur Monat)

4. gYear (nur Jahr)

5. gYearMonth(nur Jahr und Monat)

6. gMonthDay (nur Monat und Tag)

7. dateTime

8. time

9. duration

10. string (String Typen)

11. boolean

12. decimal (nummerische Typen)

13. double

14. anyURI

15. QName

16. float

 

Nummerinsche Typen

1. integer -> ganze Zahl

2. nonPositiveInteger -> eine negative Zahl inklusive 0

3. negativeInteger -> eine negative Zahl ohne 0

4. long -> -263 bis 263 -1

5. int -> -231 bis 231 -1

6. short -> -215 bis 215 - 1

7. byte -> -27 bis 27 - 1

8. nonNegativeInteger -> 0 bis unendlich

9. unsignedLong -> 0 bis 264 - 1

10. unsignedInt -> 0 bis 232 - 1

11. unsigendShort -> 0 bis 216 - 1

12. unsignedByte -> 0 bis 28 - 1

13. positiveInteger -> 1 bis unendlich

14. decimal -> eine beliebig lange Zahl der Form: 117.25, 98, +24.5...

15. float -> 32bit Zahl

16. double -> 64bit Zahl

minOccures / maxOccures

<xs:complexTypename="familyType">
   <xs:sequence>
      <xs:elementname="lastName" type="xs:string"/>
      <xs:elementname="childName" type="xs:string" maxOccurs="10" minOccurs="1" default="0" />
   </xs:sequence>
</xs:complexType>

Listen Type

<xs:simpleType name="regNumberType">
   <xs:list itemType="xs:int" />
</ xs:simpleType>

<xs:simpleType name="shortRegNumberType>
   <xs:restriction base="regNumberType">
      <xs:length value="4" />
   </xs:restriction>
</xs:simpleType>
 

Union Type

<xs:simpleType name="Vereinigung">
   <xs:union memberTypes="xs:int xs:boolean" />
</xs:simpleType>

Resultat:

....

<Vereinigung> 41 </Vereinigung> oder <Vereinigung> true </Vereinigung>