DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Andreas Rauch Artikel Drucken
        
XML Schema Komponenten Übersicht

Seit 2 Mai 2001 ist XML Schema als Standard verabschiedet. Natürlich gibt es Neuigkeiten und Unterschiede zu m bisherigen Interims Standard XDR.

Ein XML-Schema Dokument besteht aus der Kombination einzelner Schemakomponenten.
Es gibt 12 verschiedene, vordefinierte Komponenten, die grob in drei Klassen eingeteilt werden können:

1) Primäre Komponenten
Diese haben Namen und auf sie kann unabhängig zugegriffen werden
- Simple Type-Definitionen
- Complex Type-Definitionen
- Attribute-Deklarationen
- Element-Deklarationen


2) Sekundäre Komponenten
Diese können Namen haben und auf sie kann unabhängig zugegriffen werden
- Attribute Group-Definitionen
- Identity Constraint-Definitionen
- Model Group-Definitionen
- Notation-Definitionen


3) Hilfskomponenten
Kleine Teile anderer Komponenten, die nicht von ihrem Kontext unabhängig sind
und auf die auch nicht unabhängig zugegriffen werden kann
- Annotations
- Model Groups
- Particles
- Wildcards


Die Liste ist natürlich nicht komplett, aber ein gutes Nachschalgewerk finden sie unter msdn.microsoft.com/xml, sowie in der neuen MS XML 4.0 Parser SDK.
Gehen wir hier auf ein paar dieser Komponenten genauer ein:

ELEMENT

Elemente können in XSD auf unterschiedliche Arten definiert werden:beispielsweise so:

 <element name="name" type="type" minOccurs="int" maxOccurs="int"/>
 <element name="name" minOccurs="int" maxOccurs="int">
 <complexType>
 ?
 </complexType>
 </element>
<element name="name" minOccurs="int" maxOccurs="int">
 <simpleType>

 

ATTRIBUTE

Für Attribute besteht auch die Möglichkeit eigene Attribute zu definieren. Dazu dient
die Attribute Komponente und geschieht beispielsweise auf folgende Arten:

<attribute name="name" type= "simple-type"use="how-its-used" value="value"/>
<attribute name="name" use="how-its-used" value="value">
<simpleType>
<restriction base="simple-type">
<facet value="value"/>
 ?
 </restriction>
 </simpleType>
</attribute>

 

Ein kleines Beispiel für ein Attribut:

<attribute name="Category" use="required">
 <simpleType>
  <restriction base="string">
  <enumeration value="autobiography"/>
  <enumeration value="non-fiction"/>
  <enumeration value="fiction"/>
  </restriction>
 </simpleType>
</attribute>

Was aber neu ist, ist die Möglichkeit mehrere Attribute in einer Attributliste zusammenzufassen. Dabei wird eine Reihe von Attributen in einer benannten Gruppe zusammengefasst, die dann referenziert werden kann,was den Effekt hat, als stünden alle Attribute Definitionen an Stelle der Referenz. Dies sieht dann bspw. so aus:

<xs:attributeGroup name="smallGroup">
 <xs:attribute . . ./>
 . . .
 </xs:attributeGroup>
 . . .
 <xs:complexType name="NeuerTyp">
 . . .
 <xs:attributeGroup ref="smallGroup"/>
</xs:complexType>

 

MODEL GROUP

Eine Model Group ist einfach eine Gruppe die durch verschiedene Kombinations-möglichkeiten entsteht. Dies entspricht in etwa den logischen und/oder Verknüpfungen. Eine Group entsteht dabei entweder, indem alle Elemente genau einmal enthalten sein müssen (all), die Elemente mindestens einmal, aber auch öfter auftreten können (sequence) oder einer Auswahl aus mehreren Möglichkeiten (choice).

Beispiel dazu:

<all>
 <element name="Title" type="string" minOccurs="1" maxOccurs="1"/>
 <element name="Author" type="string" minOccurs="1" maxOccurs="1"/>
 <element name="Date" type="string" minOccurs="1" maxOccurs="1"/>
 <element name="ISBN" type="string" minOccurs="1" maxOccurs="1"/>
 <element name="Publisher" type="string" minOccurs="1" maxOccurs="1"/>
</all>

WILDCARDS

Eine eigentlich, man gestatte mir die Bemerkung, eine ganz witzige Sache. Eine Wildcard hat das any Element als Komponente. Damit kann in eine XML-Schema-
Instanz an ausgewiesenen Stellen beliebiger wohlgeformter XML Code eingefügt werden.
Dabei kann festgelegt werden, wie der Schemaprozessor mit dem ?fremden? Code umgehen
soll: strict um den Code validieren zu müssen, lax um zu validieren soviel geht und
skip um die Validierung zu umgehen. Im namespace Attribute wird festgelegt, wo der
eingefügte Code herstammt, um eventuell validieren zu können. Die Syntax des any Elements sieht an hand eines Beispiels folgendermaßen aus:

 

<element name="Review">
 <complexType>
  <sequence>
                   <any namespace="##local" minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
 </complexType>
</element>

 


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 11.05.2001
  Gültig bis: 10.06.2001
7 Ratings
Bewertung: 51,4%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG