Portrait

 

Konferenzen rund um XML

 

Wer sich für aktuelle Entwicklungen zu den XML-Technologien interessiert, sollte sich die Veröffentlichungen ansehen, die auf internationalen Konferenzen bereitgestellt werden.

Die Konferenz in Prag finder in der Regel im Frühjahr statt, Material dazu finden Sie unter:
http://www.xmlprague.cz/archive/


Im Sommert findet das Internationale Symposion Balisage statt. http://www.balisage.net

 

 

Aktuelle Hinweise zu XML

Der Standard Office Open XML

 

Anders als noch in der Version Office 2003 kombiniert Microsoft die XML-Formate mit der inzwischen zu einem Quasi-Standard gewordenen ZIP-Technologie. Wird ein Dokument erstellt, entsteht also ein ZIP-Archiv, auch wenn die Dateiendungen für die verschiedenen Anwendungen – .docx für Word, .xlsx für Excel und .pptx für Powerpoint – dies nicht auf den ersten Blick erkennen lassen.

 

Wenn Sie ein solches Archiv mit einem üblichen ZIP-Programm öffnen und den Inhalt in einen Ordner extrahieren, finden Sie eine mehrstufige Hierarchie von Komponenten, die über entsprechende Auflistungen zusammengehalten werden. Die Mehrzahl der Komponenten sind XML-Dateien. Im Container können aber auch nicht-XML-Komponenten vorhanden sein, etwa Binärdateien, die eingebettete Bilder oder OLE-Objekte darstellen. Der Zusammenhang der einzelnen Komponenten wird durch spezielle Beziehungskomponenten festgelegt. Durch die Zusammenfassung der Komponenten in einem ZIP-Container bleibt das Dokument für den Anwender eine einzelne Dateiinstanz, die er wie gewohnt speichern oder öffnen kann. Der komplexe Untergrund bleibt so im Verborgenen.

 

Vorteile der XML-basierten Formate

 

Einer der Vorteile dieses auf den ersten Blick komplizierteren Verfahrens ist, dass das Dokument auch dann noch verwendet werden kann, wenn einzelne Komponenten defekt sind, etwa durch Übertragungsfehler im Netz. Bei einer binären Datei führt ein solcher Fehler oft dazu, dass die Datei insgesamt nicht mehr geöffnet werden kann. Ein weiterer Vorteil ist, dass einzelne Komponenten, etwa ein eingefügtes Bild, ausgetauscht werden können, ohne auf die jeweilige Office-Anwendung zurückgreifen zu müssen. Da es sich ansonsten bei den Komponenten um reine Textdateien handelt, die sich sehr gut komprimieren lassen, sind im Endeffekt auch kleinere Dateigrößen möglich.

Dokumenteigenschaften wie der Name des Autors, Themen oder Stichwörter lassen sich ebenfalls »von außen« ändern, etwa durch eine kleine Batch-Anwendung, die in mehreren Dokumenten nach einem Namen sucht und ihn austauscht.

 

Die von der ISO veröffentlichte mehrteilige Spezifikation ist – wegen der jeweils beigefügten Beispiele - insgesamt über 7000 Seiten stark, was es nicht gerade einfach macht, kompatible Lösungen zu entwickeln. Es ist allerdings zu bedenken, dass die meisten Anwendungen nur einen kleinen Teil der Funktionen nutzen, die in der Spezifikation berücksichtigt sind.

 

Struktur der Open XML-Formate

 

Eine Datei im OOXML-Format besteht aus einer beliebigen Anzahl von Komponenten, die über eine Auflistung zusammengehalten werden. Die Mehrzahl der Komponenten sind XML-Dateien, im Container können aber auch nicht-XML-Komponenten vorhanden sein, etwa Binärdateien, die eingebettete Bilder oder OLE-Objekte darstellen. Der Zusammenhang der einzelnen Komponenten wird durch spezielle Beziehungskomponenten festgelegt.

Durch die Zusammenfassung der Komponenten in einem ZIP-Container bleibt das Dokument für den Anwender eine einzelne Dateiinstanz, die er wie gewohnt speichern oder öffnen kann. Der komplexe Untergrund bleibt im Verborgenen.

Eigene Namensräume per XML-Schema - targetNamespace

 

Werden Schemas für aktuelle XML-Dokumente modelliert, sollten die Möglichkeiten der Namensräume genutzt werden. Das gilt vor allem, wenn das Schema ein Vokabular für einen bestimmten Gegenstandsbereich definiert, auf den sich zahlreiche Anwendungen beziehen. Die Zuordnung von Namen zu den Komponenten eines bestimmten Schemas kann in jedem Fall einen eigenen Namensraum konstituieren, die Empfehlung nennt ihn target namespace. Dieser Zielnamensraum wird dadurch gebildet, dass er über eine entsprechende Deklaration identifiziert wird. Dafür können entsprechende Attribute in das Element eingefügt werden. Allerdings ist dies nicht unbedingt erforderlich, der Zielnamensraum ist optional.

 

Das folgende Schema zeigt ein Beispiel:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:org="http://xmlbeispiele.com/org" 
            targetNamespace="http://xmlbeispiele.com/org">  
  <xsd:element name="Organisation" type="org:Org"/>  
  <xsd:complexType name="Org">    
    <xsd:sequence>      
      <xsd:element name="Abteilung" type="org:Abt" 
                   minOccurs="1" maxOccurs="unbounded"/>    
    </xsd:sequence>    
    <xsd:attribute ref="org:Bezeichnung"/>  
  </xsd:complexType>  
  <xsd:complexType name="Abt">    
    <xsd:sequence>      
      <xsd:element name="Mitglied" type="org:Person" 
                   minOccurs="1" maxOccurs="unbounded"/>    
    </xsd:sequence>    
    <xsd:attribute name="Funktion" type="xsd:string"/>  
  </xsd:complexType>  
  <xsd:complexType name="Person">    
    <xsd:sequence>      
      <xsd:element name="Name" type="xsd:string"/>      
      <xsd:element name="Position" type="xsd:string"/>    
    </xsd:sequence>    
    <xsd:attribute name="Code" type="xsd:string"/>  
  </xsd:complexType>  
  <xsd:attribute name="Bezeichnung" type="xsd:string"/>  
</xsd:schema>
Als Vorgabe gehören zu diesem neuen Namensraum nur die Namen der globalen Element-, Attribut- und Typdeklarationen, also die Namen der direkten Kindelemente des Wurzelelements.

 

Besonderheiten globaler Elemente und Attribute

 

Für globale Elemente gelten zwei Einschränkungen. Sie dürfen nicht selbst mit dem ref-Attribut arbeiten und außerdem sind Angaben über die Häufigkeit des Vorkommens mit minOccurs oder maxOccurs nicht erlaubt. Auch Attribute können global definiert werden, wenn sie als direkte Kinder des Elements eingefügt werden. Sie können dann innerhalb untergeordneter Elemente mit dem Attribut ref verwendet werden. Allerdings darf das Attribut use nicht in einer globalen Attributdeklaration verwendet werden.

 

Namensraumpräfix für den Zielnamensraum

 

Wird dem mit targetNamespace deklarierten Namensraum zusätzlich ein Präfix zugeordnet, benötigen die globalen Elemente und Attribute im XML-Dokument ebenfalls dieses Präfix zur Qualifizierung der Namen. Das angezeigte Schema verwendet globale Deklarationen für das Element Organisation, das Attribut Bezeichnung und die Typen Org, Abt und Person. Die anderen Elemente und Attribute sind lokal. Im Schema selbst verwenden die Werte für die Attribute type und ref ebenfalls mit dem Präfix qualifizierte Namen, weil sie sich ja auf globale Element- oder Attributdeklarationen beziehen.

 

Lokalisierung des Schemas

 

Im XML-Dokument stellt - anders als bei Schemas ohne Zielnahmensraum, die dafür xsi:noNamespaceLocation verwenden - das Attribut xsi:schemaLocation den Bezug zum Schema und gleichzeitig zu dem dort deklarierten Zielnamensraum her. Das Attribut erwartet in diesem Fall ein Wertepaar, das aus dem Namen für den Zielnamensraum und der Adresse der Schemadatei zusammengesetzt ist. Der folgende Auszug zeigt eine Beispielinstanz:

<org:Organisation org:Bezeichnung="NewMedia" 
  xsi:schemaLocation="xmlbeispiele.com/org org.xsd" 
  xmlns:org="http://xmlbeispiele.com/org" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  <Abteilung Funktion="Controlling">    
    <Mitglied Code="x311">      
      <Name>...
</org:Organisation>

Das Listing bestätigt, dass im XML-Dokument nur das Element <org:Organisation> und das Attribut <org:Bezeichnung> mit dem Präfix des Zielnamensraums qualifiziert sind, die untergeordneten, lokalen Elemente oder das Attribut Code dagegen nicht.

 

Umgang mit lokalen Elementen und Attributen

 

Die beiden Schema-Attribute elementFormDefault und attributeFormDefault erlauben dem Schemadesigner, global festzulegen, dass bei der Validierung eines dem Schema zugeordneten XML-Dokuments die Namen der verwendeten lokalen Elemente und Attribute generell auf Übereinstimmung mit dem jeweiligen Namensraum geprüft werden sollen oder nicht. Die Vorgabe bei beiden Attributen ist unqualified. In diesem Fall gehören die lokalen Elemente und Attribute nicht zu dem mit targetNamespace deklarierten Namensraum, wie das letzte Beispiel auch belegt. Um diese Vorgabe explizit zu machen, könnte das Start-Tag so aussehen:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:org="http://xmlbeispiele.com/org" 
          targetNamespace="http://xmlbeispiele.com/org"
          elementFormDefault="unqualified"
          attributeFormDefault="unqualified">

Das Ergebnis bliebe gleich. Ein Problem würde sich nur ergeben, wenn Sie versuchen, in einem XML-Dokument den Zielnamensraum als Vorgabe zu verwenden.

<Organisation Bezeichnung="NewMedia" 
  xsi:schemaLocation="xmlbeispiele.com/org org.xsd" 
  xmlns="http://xmlbeispiele.com/org" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Abteilung Funktion="Controlling">
    <Mitglied>
      <Name>...
</Organisation>

Warum führt dies zu einem Fehler bei der Gültigkeitsprüfung? Nun, es wird hier ein Namensraum angegeben, der dem im verwendeten Schema deklarierten Zielnamensraum entspricht. Wenn das Dokument auf Gültigkeit geprüft wird, sucht der Prozessor die Namen der Elemente und Attribute in diesem Namensraum. Der Namensraum ist hier aber als Default-Namensraum angegeben worden. Mit dem Element <Organisation> hat der Prozessor kein Problem, weil es ein globales Element ist, das immer qualifiziert wird. Das heißt in diesem Fall, dass der Elementname im angegebenen Namensraum gefunden wird, da der Namensraum Vorgabe ist und das Präfix nur weggelassen ist. Bei dem Attribut <Bezeichnung> erwartet der Prozessor dagegen ebenfalls ein qualifiziertes Attribut, da es ja im Schema global deklariert ist. Da das Attribut aber bei einem Default-Namensraums nicht die Zugehörigkeit zum Namensraum des Elements erben kann, findet der Prozessor das Attribut nicht. Die Nutzung eines Vorgabenamensraumes ist in diesem Fall also nicht brauchbar.

 

Qualifizierte Elemente

 

Sollen auch die lokalen Elemente zum Zielnamensraum des Schemas gehören, müsste das Start-Tag so aussehen:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:org="http://xmlbeispiele.com/org" 
            targetNamespace="http://xmlbeispiele.com/org"
            elementFormDefault="qualified">
In der Beispielinstanz werden entsprechend auch die lokalen Elemente mit dem Präfix ausgestattet:
<org:Organisation org:Bezeichnung="NewMedia" 
  xsi:schemaLocation="xmlbeispiele.com/org org.xsd" 
  xmlns:org="http://xmlbeispiele.com/org" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <org:Abteilung Funktion="Controlling">
    <org:Mitglied Code="x311">
      <org:Name>
      ...
</org:Organisation>
Qualifizierte Attribute

 

Wie für die lokalen Elemente kann auch für die lokalen Attribute zwischen Qualifizierung und Nichtqualifizierung gewählt werden. Sollen alle Elemente und Attribute, die im Schema deklariert werden mit qualifizierten Namen versehen werden, sieht das Start-Tag im Beispiel so aus:

				
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:org="http://xmlbeispiele.com/org" 
            targetNamespace="http://xmlbeispiele.com/org"
            elementFormDefault="qualified"
            attributeFormDefault="qualified">

In diesem Fall sind alle Elemente und Attribute im XML-Dokument durch das Präfix für den Namensraum qualifiziert.

<org:Organisation org:Bezeichnung="NewMedia" 
  xsi:schemaLocation="xmlbeispiele.com/org org.xsd" 
  xmlns:org="http://xmlbeispiele.com/org" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <org:Abteilung Funktion="Controlling">
    <org:Mitglied org:Code="x311">
      <org:Name>...
</org:Organisation>			

 

Anstelle der beschriebenen generellen Festlegung zur Qualifizierung der Namen lässt sich auch gezielt für einzelne Elemente oder Attribute festlegen, ob sie qualifiziert werden müssen. Dafür wird das Attribut form verwendet.

<attribute name="Code" type="string" form="qualified"/>

verlangt die explizierte Qualifizierung für ein bestimmtes Attribut. In der Dokumentinstanz muss dann das betreffende Attribut mit dem passenden Präfix ausgezeichnet werden.

Windows XP, Excel, Excel-Vorlagen, JavaServer Pages, Windows XP, Office, GoLive, XML, Digitale Fotografie, Video, XML Schema