Alles über XML & Co. (XML Schema, XSLT, XPath, XQuery)

Dienstag, Juli 26, 2005

Flop statt Top: AltovaXml

Einem geschenkten Gaul schaut man nichts in Maul - zu recht. Doch bei Werbegeschenken ist das anders. Mit AltovaXml stellt die Firma Altova, Hersteller des bekannten XMLSpy, eine kostenlose Implementierung von XQuery 1.0, XSLT 1.0 und XSLT 2.0 bereit - schema-aware versteht sich. Und das auch noch sowohl für .NET und COM als auch Java. Bei näherem Hinsehen entpuppen sich die Bibliotheken jedoch nur als Wrapper um ein Kommandozeilenprogramm namens AltovaXml.exe. Ob da die Performance mitspielt? Abgesehen hiervon hat das Geschenk einen weiteren Haken: Wird eine Instanz des obligatorischen Application-Objekts erzeugt, erscheint auch ein Konsolenfenster mit folgendem Inhalt - quasi Bannerwerbung auf dem Desktop:
AltovaXML 2005
Copyright (c) 1998-2005 Altova GmbH. All rights
reserved.
Use of this software is subject to the license agreement at
http://www.altova.com/xsltdla

Zu allem Überdruss verschwindet das Fenster auch dann nicht, wenn die Host-Anwendung geschlossen wird - zumindest unter .NET. Bei Nutzung der COM-Schnittstelle zeigt sich dieses Verhalten nicht. Die API ist übrigens sehr rudimentär, aber dafür einfach zu benutzen:

Dim Altova As New Application
Dim xq As XQuery = Altova.XQuery
xq.XQueryFromText = "//*"
xq.InputXMLFileName = "Input.xml"
xq.Execute("Output.xml")

Da bietet Saxon.NET schon eine ausgefeiltere, aber dafür auch kompliziertere Schnittstelle an.

Montag, Juli 25, 2005

Tester gesucht ...

... für ein Eclipse-Plug-In aus dem Bereich Web Service-Design. Mehr Infos auf Christian Weyer's Blog.

Freitag, Juli 22, 2005

Erweiterungselemente und der leere Namensraum

Die BPEL hat einen kleinen Schönheitsfehler: Zwar können Elemente von fremden Namensräumen eingefügt werden (z.B. in eine copy-Zuweisung), nicht aber Elemente aus dem leeren Namensraum (xmlns=""). Die Ursache liegt im BPEL-XML Schema:

<any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>

Das Schlüsselwort ##other besagt, dass nur Elemente aus einem Namensraum erlaubt sind, der nicht der Zielnamensraum ist. Elemente, die dem leeren Namensraum zugeordnet sind, sind hiervon ausgenommen, da sie tatsächlich keinem Namensraum zugeordnet sind.

Um eine derartige Einschränkung in eigenen Schemas zu vermeiden, sollte folgende Deklaration verwendet werden, die explizit auch Elemente aus dem leeren Namensraum erlaubt:

<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##other" processContents="lax"/>
<xs:any namespace="##local" processContents="lax"/>
</xs:choice>

Mittwoch, Juli 20, 2005

XPathReader

Ein interessantes (Lese-)Zugriffsmodel für XML-Daten bietet der XPathReader: Er vereint das Pull-Konzept der XmlReader-Klasse mit der Möglichkeit, den XML-Datenstrom mittels XPath nach bestimmten Elementen zu durchsuchen.

Dienstag, Juli 12, 2005

xml:id Is a W3C Proposed Recommendation

Die als xml:id bezeichnete Spezifikation wurde nun offiziell als Recommendation vom W3C verabschiedet. Das spezielle xml:id-Attribut erlaubt es, einem Element einen eindeutigen Bezeichner zu zuweisen, ohne dass hierfür explizit ein ID-Attribut für dieses Element definiert werden muss.

Freitag, Juli 08, 2005

Office 12 XML Fakten

Hier einige interessante Fakten zu dem XML-Format in Office 12:
  • Die XML-Dateien werden gezippt und erhalten die Endungen DOCX, XLSX, PPTX.
  • Eine solche ZIP-Datei enthält mehrere XML-Dateien (z.B. für Kommentare eine separate XML-Datei) und weitere binäre Dateien (z.B. für eingefügte Bilder).
  • Ist die ZIP-Datei beschädigt, sind hiervon meist nur wenige Dateien betroffen, so dass ein Dokument weitgehend wiederhergestellt werden kann.
  • Außerdem lassen sich so bestimmte Infos (z.B. die Kommentare) einfach und schnell aus einem Dokument entfernen.
  • Es wird für Office 2003 und XP eine Erweiterung geben, so dass auch diese Versionen die neuen Formate lesen und schreiben können.
  • Man kann auch weiterhin die "alten" binären Dateiformate als Standardformat verwenden.

CDATA-Sektionen

Hier einige Fakten und Tipps zu den CDATA-Sektionen (aus einem Chalk&Talk von Michael Rys zum Thema "XML und XQuery"):
  • Auch innerhalb von CDATA-Sektionen dürfen keine ASCII-Steuerungszeichen (wie z.B. Form Feed) verwendet werden.
  • CDATA-Sektionen sind hauptsächlich für die vereinfachte, manuelle Erstellung von XML-Dokumenten gedacht, und eben nicht für die Generierung von XML mittels einer Anwendung.
  • Aus diesem Grund werden CDATA-Sektionen beispielsweise im SQL Server nicht verwendet. Statt dessen werden Sonderzeichen mittels Entitätsreferenzen codiert.
  • CDATA-Sektionen sind also ein syntaktisches (Hilfsmittel für den Parser) und kein semantisches Mittel, weshalb in vielen XML-APIs auch keine direkte Unterstützung für CDATA-Sektionen zu finden ist.
  • Die Abschlussmarke "]]>" darf natürlich innerhalb der CDATA-Sektion nicht auftauchen - ein weiterer Grund CDATA-Sektionen nur bei der manuellen Bearbeitung einzusetzen. Eine Zeichenfolge wie "]]>" kann jedoch auf mehrere CDATA-Sektionen verteilt werden, - also z.B. wie folgt gesplittet werden: "]", "]>"

TechEd 2005 in Amsterdam

Geschafft! Die letzten Stunden auf der TechEd 2005 in Amsterdam. Man glaubt gar nicht, wie anstrengend eine solche viertägige Konferenz sein kann: Eine Menge Interviews, Meetings, Sessions, Talks und natürlich Parties. Apropos Interviews: Ein sehr interessantes Interview hatte ich mit Michael Rys (Mitglied der XQuery-Group am W3C, Program Manager für SQL Server XML-Technologien) zu den Themen: XML, XQuery und SQL Server 2005.

Eine gekürzte Fassung des Interviews (immerhin ging es beinahe eine Stunde) wird in der Ausgabe 10.05 des dot.net-Magazins in der XML-Corner zu lesen sein. Thema dieser XML-Corner wird dann selbstverständlich der SQL Server 2005 und seine XML-Funktionen sein - passend zum Schwerpunkt der Ausgabe: Datenbanken.

Donnerstag, Juli 07, 2005

Australian Types

Warum die XML Schema-Typen gDay, gMonth, etc. auch "Australian Types" gennant werden (z.B. in diesem Posting), erfuhren die Besucher der TechEd Europe 2005 in dem Chalk & Talk-Vortrag "XML und XQuery" von Michael Rys. "gDay" steht nicht nur für "Gregorian Day", sondern zumindest in Australien auch für "G'Day" bzw. "Good Day", also für die dort übliche Anrede. Über denn Sinn und Unsinn der Australian Types wurde und wird übrigens heftig diskutiert.

PS: Chalk & Talk-Sessions werden ohne PowerPoint-Präsentationen abgehalten. Statt dessen steht dem Vortragenden ein Pinboard zur Verfügung, und das Thema bzw. die Themen geben die Zuhörer durch ihre konkreten Fragen vor. Fazit: Sehr empfehlenswert und oftmals weitaus spannender als die üblichen Slide-Marathons.