Für SEPA (Single Euro Payment Area) wurde festgelegt, dass das europäische Kreditgewerbe für die Übermittlung von Zahlungsverkehrsnachrichten ein einheitliches Datenformat auf XML Basis (ISO 20022) verwenden muss.
Dieser einheitliche technische SEPA Standard bildet damit die Grundlage für die Interoperabilität von Zahlungsverkehr-Infrastrukturen und ermöglicht zugleich auch eine vollautomatisierte Abwicklung von Zahlungstransaktionen.
XML steht für eXtensible Markup Language und beschreibt prinzipiell einen plattformneutralen Klartextstandard zur Erstellung maschinen- und menschenlesbarer Dokumente in Form einer Baumstruktur.
Die in einem Dokument enthaltenen Informationen werden durch Markups (sogenannte Tags) strukturiert. Diese Tags können auch Attribute enthalten.
Da die technischen SEPA Strukturen hauptsächlich auf dem XML Standard basieren, werden nachfolgend hierzu ein paar grundsätzliche Erläuterungen beschrieben
XML ist ein W3C-Standard des World Wide Web Konsortiums mit der Zielsetzung strukturierte Daten mit Hilfe benutzerdefinierter XML Schemas in eine Textdatei, für die Standardrichtlinien (Regeln, Richtlinien und Konventionen) gelten, einzufügen.
Diese Textdatei soll dann von vielen verschiedenen Anwendungen gelesen werden können. XML ist wie HTML eine dokumentbeschreibende Sprache (also kein binär- kodiertes Datenaustauschformat).
Im Gegensatz zu HTML ist XML jedoch dazu gedacht, den Inhalt des Dokuments zu beschreiben statt die Informationen formatiert und gegliedert zu präsentieren.
HTML und XML arbeiten mit sog. Tags (Schlagwörter), die durch "<" und ">" gekennzeichnet werden. Die Befehle nach dem "öffnenden" Tag (<Befehlsbezeichnung>) gelten im jeweiligen Textabschnitt bis zum "schließenden" Tag (</Befehlsbezeichnung>).
Grundlegende Syntax vom XML- Dokumenten: |
|||||||||||||||||||||
|
Elemente |
||||||||||||||||||||
|
|
<elemtent1> |
» öffnender Tag, Inhalt Element (Information), schließender Tag |
||||||||||||||||||
|
|
|
<element2>Inhalt</element2> |
||||||||||||||||||
</element1> |
|||||||||||||||||||||
|
|||||||||||||||||||||
|
|
<leeresElement/> |
Ein Element benötigt keine Information innerhalb des Elements. Die abkürzende Syntax "/" des schließenden Tags steht dann am Ende des öffnenden Tags |
||||||||||||||||||
|
|||||||||||||||||||||
|
|
<Element>...</Element> ungleich <element>...</element> |
Beachtung Gross-/ Kleinschreibung |
||||||||||||||||||
|
|||||||||||||||||||||
|
|
<e1>Inhalt1</e1> |
Im Gegensatz zu Datenbanken ist bei einem (Text-) Dokument die Reihenfolge der Elemente von Bedeutung, da sonst sich der Sinn des Textes ändern würde. |
||||||||||||||||||
|
|||||||||||||||||||||
|
Attribute (= Hinzufügen zusätzlicher Information zu den Elementen) |
||||||||||||||||||||
|
|
Jedes XML- Element kann mit einem oder mehreren Attributen versehen werden. Attribute sind im Gegensatz zu Elementen unsortiert, die Reihenfolge, in der die Attribute angegeben sind, spielt keine Rolle. |
|||||||||||||||||||
|
|
<elementname attributname="attributwert">Inhalt</elementname> |
|||||||||||||||||||
|
|||||||||||||||||||||
|
|
Während der Informationsgehalt für eine Datenbank in den folgenden Beispielen exakt identisch ist, muss bei einem XML- Dokument beachtet werden, ob die Information als Attribut oder als Unterelement des Elements dargestellt werden soll, damit Anwendungen, die Informationen der XML- Datei korrekt verarbeiten können. |
|||||||||||||||||||
|
|
<beschreibung Sprache="Deutsch"> |
< beschreibung> |
||||||||||||||||||
|
|
|
<titel>Grundlage XML</titel> |
|
<titel>Grundlage XML</titel> |
||||||||||||||||
|
|
</ beschreibung> |
|
<sprache>Deutsch</sprache> |
|||||||||||||||||
|
|
|
</ beschreibung> |
||||||||||||||||||
|
|||||||||||||||||||||
|
|
Mittels Attributen können für Elemente auch Identifikatoren, die innerhalb eines XML- Dokuments eindeutig einem einzigen Element zugeordnet sein müssen, geschaffen werden. Die Attributbezeichnung ID und deren Bedeutung kann individuell bestimmt werden. |
|||||||||||||||||||
|
|
<elementname ID="identifikatorname">Inhalt</elementname> |
|||||||||||||||||||
|
|||||||||||||||||||||
|
|
Mit Hilfe von Referenzattributen ist es möglich, innerhalb von Elementen auf andere Elemente zu verweisen. Man kann damit Informationen in ein (weiteres) Element aufnehmen, ohne diese Information im Einzelnen erneut explizit angeben zu müssen. Hierbei gilt die Forderung, dass ein Identifikatorname im XML- Dokument als Identifikator existieren muss. Ein Elementname enthält somit zusätzlich zu der in Inhalt gegebenen Information auch alle Informationen aus dem mit identifikatorname bezeichneten Element. |
|||||||||||||||||||
|
|
<elementname idref ="identifikatorname">Inhalt</elementname> |
|||||||||||||||||||
|
|
|
|||||||||||||||||||
|
|
Oftmals erscheint es aber bei der Verwendung von Referenzen nicht sinnvoll, zusätzliche Informationen in die Referenzelemente zu packen, wenn z.B. diese Elemente in der Regel selbst keinen Inhalt haben. |
|||||||||||||||||||
|
|
<elementname ID-Ref ="identifikatorname"/> |
Abkürzenden Schreibweise für leere Elemente |
||||||||||||||||||
|
|||||||||||||||||||||
|
Beispiel für Elemente und Attribute in XML |
||||||||||||||||||||
|
<?xml version="1.0"?> |
<!-- deklariert, dass es sich um ein XML -Dokument handelt --> |
|||||||||||||||||||
|
<xml_tagung> |
<!-- dieses Element umschließt alles, entspricht dem <html> --> |
|||||||||||||||||||
|
|
<vortrag id="v1" sprache="Deutsch"> |
<!-- im folgenden: mehrere Unterelemente "vortrag",
mit |
||||||||||||||||||
|
|
|
<titel>Grundlage XML</titel> |
||||||||||||||||||
|
|
|
<redner idref ="name1"/> |
<!-- Referenz ein anderes Element --> |
|||||||||||||||||
|
|
</vortrag> |
|||||||||||||||||||
|
|
<vortrag id="v2" sprache="Englisch"> |
… </vortrag> |
||||||||||||||||||
|
|||||||||||||||||||||
|
|
<person name_id="name1"> |
<!-- nun mehrere Elemente "person" --> |
||||||||||||||||||
|
|
|
<vorname>Klaus</vorname> |
|
|||||||||||||||||
|
|
|
<nachname>Schulze</nachname> |
|
|||||||||||||||||
|
|
|
<vortragender_von idref="v1"/> |
<!-- Referenz --> |
|||||||||||||||||
|
|
</person> |
|
||||||||||||||||||
|
|
<person name_id="name2">...</person> ... ... ... |
|||||||||||||||||||
|
</xml_tagung > |
|
|||||||||||||||||||
|
|
||||||||||||||||||||
|
Anforderung um XML mit Datenbanken verbinden zu können -> gemeinsame Grammatik |
||||||||||||||||||||
|
Die vorhandene Informationen im Dokument, deren Position, Reihenfolge (im Sinne einer "inneren
Ordnung") |
||||||||||||||||||||
|
|
||||||||||||||||||||
|
DTD [Dokument Type Definition] als Grammatik für XML- Dokumente [Standard des W3C] |
||||||||||||||||||||
|
Die Deklaration erfolgt im Dokumentenkopf mit !DOCTYPE und einen Namen, der gleich dem Namen des XML- Elements, das das "umschließende" Element das XML- Dokuments ist, sein muss. Damit wird der Gültigkeitsbereich der DTD festgelegt. In den eckigen Klammern erfolgt die Deklaration der Grammatik. |
<?xml version="1.0"?> |
|||||||||||||||||||
|
<!DOCTYPE xml_tagung [Deklarationen]> |
||||||||||||||||||||
|
<xml_tagung> |
||||||||||||||||||||
|
… |
||||||||||||||||||||
|
</xml_tagung> |
||||||||||||||||||||
|
|
||||||||||||||||||||
|
Bei Verwendung einer gemeinsamen DTD für viele gleichartige Dokumente macht es Sinn statt expliziten Deklarationen einen Verweis / Link auf eine externe Datei zu setzen, die die DTD enthält, die für dieses Dokument gelten soll. Hierfür dient das Schlüsselwort SYSTEM. |
||||||||||||||||||||
|
<!DOCTYPE xml_tagung SYSTEM "http://www.h-ub.org/irgendwo_grammatik.dtd"> |
||||||||||||||||||||
|
|
||||||||||||||||||||
|
<!ELEMENT elementname (Inhalt)> |
Schlüsselwort !ELEMENT deklariert Elemente in einer DTD. In dem Beispiel soll elementname ein Element sein, das aus Inhalt besteht. |
|||||||||||||||||||
|
|||||||||||||||||||||
|
<!ELEMENT autor EMPTY> |
Schlüsselwort EMPTY deklariert, dass elementname leer sein soll, also keine Information innerhalb des Elements vorhanden sein darf. |
|||||||||||||||||||
|
|||||||||||||||||||||
|
<!ELEMENT titel (#PCDATA)> |
#PCDATA deklariert, dass die Information innerhalb des Elements in Form von "Parsed Character Data" vorliegen muss, d.h. konkret, dass dieses Element keine Unterelemente außer leer haben darf. |
|||||||||||||||||||
|
|||||||||||||||||||||
|
<!ELEMENT vortrag (titel, redner)> |
Festlegung von Unterelementen eines Elements. Das Element vortrag besteht hier also aus zwei Unterelementen, nämlich titel und redner. |
|||||||||||||||||||
|
|||||||||||||||||||||
|
Unterelemente eines Elements werden als eine Art regulärer Ausdruck ausgeben. |
||||||||||||||||||||
|
Möglichkeit: |
name |
name kommt genau einmal vor, sonst nichts |
||||||||||||||||||
|
name* |
name kommt beliebig oft vor (0, 1, 2, 3, ... mal) |
|||||||||||||||||||
|
name+ |
name kommt mindestens einmal vor (1, 2, 3, 4, ... mal) |
|||||||||||||||||||
|
name? |
name kommt einmal oder gar nicht vor (0 oder 1 mal) |
|||||||||||||||||||
|
name1 | name2 |
entweder name1 oder name2 kommt vor |
|||||||||||||||||||
|
name1, name2 |
name1 und name2 in dieser Reihenfolge, dabei ist name1 = name2 erlaubt |
|||||||||||||||||||
|
Auf Klammerausdrücke können die Operatoren ( * + ? | , ) ebenfalls angewendet werden |
||||||||||||||||||||
|
|||||||||||||||||||||
|
<!ELEMENT xml_tagung (vortrag | name)*> |
Bei xml_tagung dürfen die Unterelemente von vortrag und name in beliebiger Reihenfolge stehen. Bei Element person müssen die Unterelemente vorname, nachname, alter und vortrag_von in dieser Reihenfolge stehen müssen. Das Element alter ist optional. |
|||||||||||||||||||
|
<!ELEMENT person (vorname, nachname, alter?, vortrag_von)> |
||||||||||||||||||||
|
|||||||||||||||||||||
|
Attribute werden in DTD über ATTLIST (Attributliste), welches nicht unter der Elementdeklaration stehen muss, deklariert. Der Zusammenhang wird über den gleichlautenden elementname hergestellt. Der Attributs-name ist frei wählbar, muss dann aber genau dieser Form in den Elementen elementname vorkommen, d.h. als Zusatz ist entweder #REQUIRED oder #IMPLIED möglich. Im ersten Fall muss dieses Attribut attributname in jedem Element elementname dann auch vorkommen, im zweiten Fall kann es vorkommen. |
||||||||||||||||||||
|
<!ELEMENT elementname (Deklarationen)> |
|
|||||||||||||||||||
|
<!ATTLIST elementname attributname attributtyp zusatz attributname2 attributtyp2 zusatz2 ...> |
||||||||||||||||||||
|
|||||||||||||||||||||
|
Attributtypen |
||||||||||||||||||||
|
CDATA |
Der Inhalt des Attributs wird als String aufgefasst |
|||||||||||||||||||
|
ID |
Attribut soll ein (eindeutiger) Identifikator für das Element elementname sein |
|||||||||||||||||||
|
IDREF oder |
Inhalt des Attributs IDREF soll als Verweis auf ein anderes Element (mit gleichlautendem Identifikator) gewertet werden Es wird vorausgesetzt, dass dieser Identifikator existiert. Wenn IDREFS verwendet wird, müssen mehrere Referenzen angegeben werden. |
|||||||||||||||||||
|
|
||||||||||||||||||||
|
Beispiel Attribute: |
||||||||||||||||||||
|
<!ATTLIST vortrag id ID #REQUIRED sprache CDATA #IMPLIED> |
||||||||||||||||||||
|
<!ATTLIST autor idref IDREF #REQUIRED> |
||||||||||||||||||||
|
|||||||||||||||||||||
|
<!DOCTYPE xml_tagung [ |
Inhalt Textdatei mit Namen grammatik.dtd, die auf einem Webserver unter der URL
http://www.h-ub.org irgendwo_grammatik.dtd zu finden ist. |
|||||||||||||||||||
|
|
<!ELEMENT xml_tagung (vortag | person)*> |
|||||||||||||||||||
|
|
<!ELEMENT vortag (titel, redner)> |
|||||||||||||||||||
|
|
<!ATTLIST vortrag id ID #REQUIRED sprache CDATA #IMPLIED> |
|||||||||||||||||||
|
|
<!ELEMENT person (vorname, nachname, alter?, vortragender_von)> |
|||||||||||||||||||
|
|
<!ATTLIST person name_id ID #REQUIRED> |
|||||||||||||||||||
|
|
<!ELEMENT titel (#PCDATA)> |
|||||||||||||||||||
|
|
<!ELEMENT redner EMPTY> |
|||||||||||||||||||
|
|
<!ATTLIST redner idref IDREF #REQUIRED> |
|||||||||||||||||||
|
|
<!ELEMENT vorname (#PCDATA)> |
|||||||||||||||||||
|
|
<!ELEMENT nachname (#PCDATA)> |
|||||||||||||||||||
|
|
<!ELEMENT alter (#PCDATA)> |
|||||||||||||||||||
|
|
<!ELEMENT vortragender_von EMPTY> |
|||||||||||||||||||
|
|
<!ATTLIST vortragender_von idref IDREF #REQUIRED> |
|||||||||||||||||||
|
|
]> |
|||||||||||||||||||
|
|||||||||||||||||||||
|
Schwächen von DTD |
||||||||||||||||||||
|
<!ELEMENT alter (#PCDATA)> |
Das Alter einer Person ist - in Jahren angegeben - eine natürliche Zahl. Es macht also keinen Sinn, hier als Typ #PCDATA anzugeben. Besser wäre es, wenn es in DTD möglich wäre, z.B. #INTEGER anzugeben. Ein solcher Typ existiert aber nicht. |
|||||||||||||||||||
|
Für derartige Probleme gibt es Lösungsansätze, die dem W3C vorliegen, aber sich noch in der Entwicklungs-phase befinden. Im Gegensatz dazu wurde DTD gleich zusammen mit XML 1.0 vom W3C eingeführt. Zwei dieser (mächtigeren) Ansätze sind z.B. XML- Schema oder DCD (Document Content Description) |
Grundzüge Aufbau einer XML- Datei |
||||||||||||||||||||||||||||||||||||||||||
<?xml version="1.0" encoding="UTF-8" ?> |
<!-- Definition XML- Version; Zeichensatz --> |
|||||||||||||||||||||||||||||||||||||||||
<?xml-stylesheet type="text/xsl" href="Namensdatei.xsl"?> |
<!-- Info, ob man eine XSL Datei verwendet und wo sie sich befindet --> |
|||||||||||||||||||||||||||||||||||||||||
|
<Personen> |
<!-- Root- Element; Ausgangspunkt für alle anderen Elemente --> |
||||||||||||||||||||||||||||||||||||||||
|
|
<Name ID="1"> <!-- Hier steht ein Kommentar. 1 = Attribut --> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<Vorname>Peter</Vorname> |
<!-- Child- Element Vorname --> |
||||||||||||||||||||||||||||||||||||||
|
|
|
<Nachname>Mueller</Nachname> |
<!-- Child- Element Nachname --> |
||||||||||||||||||||||||||||||||||||||
|
|
</Name> |
<!-- Attribut ID zur Durchnummerierung verwendet --> |
|||||||||||||||||||||||||||||||||||||||
|
|
<Name ID="2"> … </ Name> |
||||||||||||||||||||||||||||||||||||||||
|
</Personen> |
|||||||||||||||||||||||||||||||||||||||||
Um die Seite einer XML- Datei gestalten zu können, wird XSL benötigt. Ein XSL- File kann für
mehrere XML- Dateien verwendet werden. Somit kann ein Aussehen von vielen Seiten einheitlich dargestellt werden. |
||||||||||||||||||||||||||||||||||||||||||
Grundzüge Aufbau einer XSL- Datei (Berücksichtig die Struktur der XML- Datei) |
||||||||||||||||||||||||||||||||||||||||||
<?xml version="1.0"?> |
Kopf der XSL- Datei gibt an, welcher |
|||||||||||||||||||||||||||||||||||||||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> |
||||||||||||||||||||||||||||||||||||||||||
. |
<xsl:template match="/"> |
Definition Standartformat für Root- Element |
||||||||||||||||||||||||||||||||||||||||
|
<TABLE border="4pt"> |
<!-- Tabelle wird mit 4 pt Rahmenstärke geöffnet --> |
||||||||||||||||||||||||||||||||||||||||
|
|
<TR STYLE="font-size:16pt; color:red"> |
<!-- Eine Zeile der Tabelle wird geöffnet --> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<TD>Vorname</TD> |
<!-- Erster Block mit Überschrift Vorname --> |
||||||||||||||||||||||||||||||||||||||
|
|
|
<TD>Nachname</TD> |
<!-- Zweiter Block mit Überschrift Nachnahme --> |
||||||||||||||||||||||||||||||||||||||
|
|
</TR> |
<!-- Hier wird die erste Zeile der Tabelle beendet. --> |
|||||||||||||||||||||||||||||||||||||||
|
<xsl:apply-templates/> |
<!-- Alle Elemente direkt unterhalb aufrufen, also hier: "Personen" --> |
||||||||||||||||||||||||||||||||||||||||
|
</TABLE> |
<!-- Beenden Tabelle, die oben aufgerufenen Elemente werden in die Tabelle eingefügt --> |
||||||||||||||||||||||||||||||||||||||||
</xsl:template> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<xsl:template match="Personen"> |
<!-- Hier beginnt die Regel für das Unterelement Personen --> |
|||||||||||||||||||||||||||||||||||||||||
|
<xsl:for-each select="Name"> |
<!-- Hier beginnt eine Schleife, alles was dazwischen steht, wird für jedes Name-Element extra ausgeführt --> |
||||||||||||||||||||||||||||||||||||||||
|
|
<TR STYLE="font-size:16pt; color:blue"> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<TD> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
|
<xsl:value-of select="Vorname"/> |
<!-- Hier wird der Inhalt von dem Element "Vorname" eingesetzt --> |
|||||||||||||||||||||||||||||||||||||
|
|
|
</TD> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<TD> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
|
<xsl:value-of select="Nachname"/> |
<!-- und hier von dem zweiten Element --> |
|||||||||||||||||||||||||||||||||||||
|
|
|
</TD> |
|||||||||||||||||||||||||||||||||||||||
|
|
</TR> |
||||||||||||||||||||||||||||||||||||||||
|
</xsl:for-each> |
<!-- Hier endet die Schleife --> |
||||||||||||||||||||||||||||||||||||||||
</xsl:template> |
|
|||||||||||||||||||||||||||||||||||||||||
</xsl:stylesheet> |
Stylesheet Tag muss wieder geschlossen werden |
|||||||||||||||||||||||||||||||||||||||||
Dafür wird das Tag <xsl:apply-templates/> benutzt. |
||||||||||||||||||||||||||||||||||||||||||
XSD (XML- Schema- Definition) |
||||||||||||||||||||||||||||||||||||||||||
XSD (Datei- Endung ".xsd") definiert Strukturen für XML- Dokumente und beschreibt in einer komplexen Schemasprache Datentypen, einzelne XML- Schema- Instanzen
(Dokumente) oder deren Gruppen. |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
XML Schema stellt einige grundlegende atomare Datentypen bereit: |
|||||||||||||||||||||||||||||||||||||||||
|
» |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
Hinzu kommen weitere XML- spezifische atomare Typen, unter anderem: |
|||||||||||||||||||||||||||||||||||||||||
|
» |
Qualified Name, eine global eindeutige Bezeichnung ist aufgebaut aus sog. NCNames (Non-Colonized Names), wobei jeder NCName bis auf den letzten einen Namensraum ("Namespace") bezeichnet. Die einzelnen NCNames werden mittels Punkt (.) zum OName zusammengesetzt. |
||||||||||||||||||||||||||||||||||||||||
|
» |
Uniform Resource Identifier (URI) |
||||||||||||||||||||||||||||||||||||||||
|
» |
Sprachbezeichnung, z. B. de-DE, en-US, fr |
||||||||||||||||||||||||||||||||||||||||
|
» |
Identifikationsattribut innerhalb von XML- Elementen |
||||||||||||||||||||||||||||||||||||||||
|
» |
Referenz auf einen ID- Wert |
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<xsd:simpleTypename="monatInt"> |
Das Beispiel definiert einen neuen XML- Datentyp mit dem Namen |
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:restriction base="xsd:integer"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:minInclusive value="1"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:maxInclusive value="12"/> |
|
|||||||||||||||||||||||||||||||||||||||
|
</xsd:restriction> |
|
||||||||||||||||||||||||||||||||||||||||
</xsd:simpleType> |
|
|||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||
<xsd:simpleType name="monate"> |
|
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:list itemType="monatInt"/> |
|
||||||||||||||||||||||||||||||||||||||||
</xsd:simpleType> |
|
|||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||
<monate> |
Eine Instanz des neuen Typs könnte so aussehen. Die einzelnen Elemente einer Liste werden durch Leerzeichen getrennt. |
|||||||||||||||||||||||||||||||||||||||||
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|||||||||||||||||||||||||||||||||||||||||
</monate> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<xsd:simpleType name="monatsname"> |
Zu den einfachen Typen gehören zusätzlich noch sogenannte Vereinigungen (engl. unions).
Ein neuer Typ wird als Vereinigung bereits bestehender Typen definiert. Das Beispiel definiert
einen weiteren Typ |
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:restriction base="xsd:string"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:enumeration value="Jan"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:enumeration value="Feb"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:enumeration value="Mär"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<!-- und so weiter ... --> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:restriction> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:simpleType> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<xsd:simpleType name="monat"> |
||||||||||||||||||||||||||||||||||||||||||
|
<xsd:union memberTypes="monatsname monatInt"/> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:simpleType> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Komplexe XML- Datentypdefinitionen bieten die Möglichkeit, Elementenstrukturen zusammenhängend zu definieren. Solche Strukturen können weitere Elemente und Attribute beinhalten. |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<xsd:complexType name="PC"> |
Das Beispiel definiert einen neuen Typ PC mit entsprechenden Kindelementen
|
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:sequence> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:element name="name" type="xsd:string"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:element name="hersteller" type="xsd:string"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:element name="prozessor" type="xsd:string"/> |
|
|||||||||||||||||||||||||||||||||||||||
|
|
<xsd:element name="mhz" type="xsd:integer" minOccurs="0"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:element name="kommentar" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:sequence> |
Beispiel: Elemente müssen |
||||||||||||||||||||||||||||||||||||||||
|
<xsd:attribute name="id" type="xsd:integer"/> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:complexType> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Kindelemente eines komplexen Typs können auf drei unterschiedliche Arten kombiniert werden: |
||||||||||||||||||||||||||||||||||||||||||
|
Jedes dieser Elemente kann keinmal, einmal oder mehrfach auftreten (Attribute
|
|||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
Aus einer Liste von Alternativen kann ein Element ausgewählt werden. |
|||||||||||||||||||||||||||||||||||||||||
<xsd:complexType name="computer"> |
Das Beispiel definiert einen Typ |
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:choice> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:element name="desktop" type="PC"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:element name="laptop" type="Laptop"/> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:choice> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:complexType> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
Gruppe von Kindelementen, von denen jedes maximal einmal auftreten darf (min- und maxOccurs dürfen nur die Werte 0 oder 1 annehmen). Die Reihenfolge der Elemente ist beliebig. |
|||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
XML- Elemente mit beliebigem Inhalt lassen sich mit Basistyps |
||||||||||||||||||||||||||||||||||||||||||
<xsd:element name="kommentar" type="xsd:anyType"/> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<xsd:element name="tagname"> |
Sollen in dem Inhalt Text und Tags in beliebiger Reihenfolge vorkommen können, muss der Wert für das Attribut "mixed" auf "true" gesetzt werden: |
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:complexType mixed="true"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:sequence> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<xsd:element minOccurs="0" maxOccurs="unbounded" name="child" type="xsd:integer"/> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<!-- Weitere Elemente ... --> |
|||||||||||||||||||||||||||||||||||||||
|
|
</xsd:sequence> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:complexType> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:element> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Ein Element kann eine "Liste" von einfachen Daten enthalten: |
||||||||||||||||||||||||||||||||||||||||||
<xsd:element name="intvalues" type="intlist"/> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
<xsd:simpleType name="intlist"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:list itemType="xsd:integer"/> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:simpleType> |
|||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
<intvalues>1 2 3</intvalues> |
Das Zeichen, das die Einträge der Liste trennt) ist das Leerzeichen |
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Leere Elemente (z. B. HTML Zeilenumbruch: |
|
|||||||||||||||||||||||||||||||||||||||||
Von leeren XML- Elementen spricht man, wenn das jeweilige Element aus nur einem
einzelnen XML- Tag besteht und keine weiteren XML- Elemente oder Text umschließt. Das XML Schema bedient sich hier eines kleinen Tricks: Es wird mittels |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Ableitung neuer Typen |
|
|||||||||||||||||||||||||||||||||||||||||
Neue Datentypen lassen sich zum einen durch die Definition eines neuen Typs erstellen oder durch
die Ableitung eines neuen Typs aus bereits bestehenden. Bei der Ableitung eines neuen Typs handelt es sich um die Wiederverwendung einer bestehender Typdefinitionen. |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Erweiterung eines Typs |
||||||||||||||||||||||||||||||||||||||||||
<xsd:complexType name="myPC"> |
Die Erweiterung eines bisherigen Typs (engl. extension) um weitere Eigenschaften,
d. h. neue Elemente oder Attribute werden hinzugefügt. |
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:complexContent> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:extension base="pc"> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<xsd:sequence> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
|
<xsd:element name="ram" type="xsd:integer"/> |
||||||||||||||||||||||||||||||||||||||
|
|
|
</xsd:sequence> |
|||||||||||||||||||||||||||||||||||||||
|
|
</xsd:extension> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:complexContent> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:complexType> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Einschränkung eines Typs |
Durch Einschränkung bereits bestehender Typen (engl. restriction) lassen sich
ebenfalls neue Definitionen ableiten. |
|||||||||||||||||||||||||||||||||||||||||
<xsd:complexType name="myPC2"> |
||||||||||||||||||||||||||||||||||||||||||
|
<xsd:complexContent> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:restriction base="pc"> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<xsd:sequence> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
|
<xsd:element name="name" type="xsd:string"/> |
||||||||||||||||||||||||||||||||||||||
|
|
|
|
<xsd:element name="hersteller" type="xsd:string"/> |
||||||||||||||||||||||||||||||||||||||
|
|
|
|
<xsd:element name="prozessor" type="xsd:string"/> |
||||||||||||||||||||||||||||||||||||||
|
|
|
|
<xsd:element name="mhz" type="xsd:integer" minOccurs="0"/> |
||||||||||||||||||||||||||||||||||||||
|
|
|
|
<xsd:element name="kommentar" type="xsd:string" minOccurs="0" maxOccurs="1"/> |
||||||||||||||||||||||||||||||||||||||
|
|
|
</xsd:sequence> |
|||||||||||||||||||||||||||||||||||||||
|
|
</xsd:restriction> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:complexContent> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:complexType> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
Zusätzlich zu der Einschränkung komplexer Typen ist es auch möglich, neue Typen als
Einschränkung einfacher Typen zu definieren. Ein neuer Typ |
|||||||||||||||||||||||||||||||||||||||||
|
» |
Beschränkt die Länge eines Strings oder einer Liste |
||||||||||||||||||||||||||||||||||||||||
|
» |
Beschränkung durch Angabe alternativer Werte |
||||||||||||||||||||||||||||||||||||||||
|
» |
Beschränkung durch Angabe eines regulären Ausdrucks |
||||||||||||||||||||||||||||||||||||||||
|
» |
Einschränkung des Wertebereichs |
||||||||||||||||||||||||||||||||||||||||
|
» |
Einschränkung der Dezimalstellen (Gesamtzahl + Nachkommastellen) |
||||||||||||||||||||||||||||||||||||||||
|
» |
Behandlung von Leerzeichen und Tabs |
||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
Beispiele: |
||||||||||||||||||||||||||||||||||||||||||
<xsd:simpleType name="celsiusKörperTemp"> |
||||||||||||||||||||||||||||||||||||||||||
|
<xsd:restriction base="xsd:decimal"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:totalDigitsvalue="3"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:fractionDigits value="1"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:minInclusive value="35.0"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:maxInclusive value="42.5"/> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:restriction> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:simpleType> |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
» Deutsche Postleitzahlen, optionales „D “ gefolgt von fünf Ziffern |
||||||||||||||||||||||||||||||||||||||||||
<xsd:simpleType name="plz"> |
||||||||||||||||||||||||||||||||||||||||||
|
<xsd:restriction base="xsd:string"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:pattern value="(D )?[0-9]{5}"/> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:restriction> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:simpleType> |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
» Größenangabe |
||||||||||||||||||||||||||||||||||||||||||
<xsd:simpleType name="size"> |
||||||||||||||||||||||||||||||||||||||||||
|
<xsd:restriction base="xsd:string"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:enumeration value="XS"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:enumeration value="S"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:enumeration value="M"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:enumeration value="L"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:enumeration value="XL"/> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:restriction> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:simpleType> |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
In der Definition eines Typs kann festgelegt werden, ob und auf welche Art vom Typ weitere XML-
Elementtypen abgeleitet werden dürfen. So kann man z.B. festlegen, dass von einem Typ |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<xsd:element name="pc-liste"> |
Das XML Schema erlaubt es, neue XML- Datentypen zu definieren und diese bei der Definition
eigener XML- Elemente zu verwenden. Das Beispiel veranschaulicht die Verwendung des bereits definierten Types |
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:complexType> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:sequence> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<xsd:element name="pc" type="pc-Typ" maxOccurs="unbounded"/> |
|||||||||||||||||||||||||||||||||||||||
|
|
</xsd:sequence> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:complexType> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:element> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Ein entsprechendes XML- Element könnte wie folgt aussehen: |
||||||||||||||||||||||||||||||||||||||||||
|
<pc-liste> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<pc> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<name>Dimension 3100 </name> |
Innerhalb dieses Beispiels erfolgt die Spezifikation des anonymen Listentyps direkt innerhalb der Elementdefinition, während die Spezifikation des pc-Typs extern erfolgt. |
||||||||||||||||||||||||||||||||||||||
|
|
|
<hersteller>Dell</hersteller> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<prozessor>AMD</prozessor> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<mhz>3060</mhz> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<kommentar>Arbeitsplatzrechner</kommentar> |
|||||||||||||||||||||||||||||||||||||||
|
|
</pc> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
|
|
<pc> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<name>T 42</name> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<hersteller> IBM </hersteller> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<prozessor> Intel </prozessor> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<mhz>1600</mhz> |
|||||||||||||||||||||||||||||||||||||||
|
|
|
<kommentar>Laptop</kommentar> |
|||||||||||||||||||||||||||||||||||||||
|
|
</pc> |
||||||||||||||||||||||||||||||||||||||||
|
</pc-liste> |
|||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Bei dem Entwurf eines komplexen XML- Schemas sollte sowohl die Wiederverwendbarkeit und Erweiterbarkeit der einzelnen XML- Elementtypen als auch die Lesbarkeit des Schemas selbst berücksichtigt werden. Die Verwendung anonymer XML- Elementtypen als Teil größerer Elemente gewährleistet im Allgemeinen eine bessere Lesbarkeit kleinerer XML- Schemata. Die Definition und Benennung einzelner, kleinerer und wiederverwendbarer XML- Elementtypen hingegen ermöglicht eine stärkere Modularisierung der XML- Schema-Struktur. |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Weiterführende Konzepte und Eigenschaften |
||||||||||||||||||||||||||||||||||||||||||
Mit einem XML Schema lassen sich eindeutige Schlüssel definieren. XML Schema unterscheidet zwischen der Eindeutigkeit (engl. unique) und der Schlüsseleigenschaft. |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Das nachfolgende Beispiel definiert ein neues Element pc-list mit einer Liste
von |
||||||||||||||||||||||||||||||||||||||||||
<xsd:element name="pc-list"> |
||||||||||||||||||||||||||||||||||||||||||
|
<xsd:complexType> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:sequence> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<xsd:element name="pc" type="pc-Typ" maxOccurs="unbounded"/> |
|||||||||||||||||||||||||||||||||||||||
|
|
</xsd:sequence> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:complexType> |
Die beiden Elemente
Im Beispiel wird festgelegt, dass die Kombination der Elemente |
||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
|
<xsd:unique name="her-name"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:selector xpath="computer"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:field xpath="name"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:field xpath="hersteller"/> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:unique> |
|||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
|
<xsd:key name="idKey"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:selector xpath="computer"/> |
||||||||||||||||||||||||||||||||||||||||
|
|
<xsd:field xpath="@id"/> |
||||||||||||||||||||||||||||||||||||||||
|
</xsd:key> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:element> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Beispiel: Referenzierung dieses Schlüssels mit dem Attribut refer und dem Schlüsselwort
@references. Mit |
||||||||||||||||||||||||||||||||||||||||||
<xsd:keyref name="idFremdKey" refer="idKey"> |
<!-- idKey von obigem Beispiel --> |
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:selector xpath="computerFremd"/> |
|||||||||||||||||||||||||||||||||||||||||
|
<xsd:field xpath="@references"/> |
|||||||||||||||||||||||||||||||||||||||||
</xsd:keyref> |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
XML Schema erlaubt es fremde Schemata wiederzuverwenden. Hierzu stehen der
|
||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
Typdefinitionen innerhalb eines Namensraumes, die auf mehrere Dateien verteilt sind, lassen sich
mittels include zusammenfügen: |
||||||||||||||||||||||||||||||||||||||||||
<schemaxmlns="http://www.w3.org/2001/XMLSchema" xmlns:pcTeile="http://www.h-ub.org/pcTeile" targetNamespace="http://www.h-ub.org/pcTeile"> |
||||||||||||||||||||||||||||||||||||||||||
|
...
<includeschemaLocation="http://www.h-ub.org/schemata/ram.xsd"/> ... |
|||||||||||||||||||||||||||||||||||||||||
</schema> |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
Annahme: Es gibt einen complexType Hersteller im Schema. |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<schemaxmlns="http://www.w3.org/2001/XMLSchema" xmlns:pcTeile=http://www.h-ub.org /pcTeile target Namespace=" http://www.h-ub.org /pcTeile"> |
||||||||||||||||||||||||||||||||||||||||||
|
... |
<!-- redefinition of Hersteller --> |
||||||||||||||||||||||||||||||||||||||||
|
<redefine schemaLocation="http://www.example.com/schemata/harddisk.xsd"> |
|||||||||||||||||||||||||||||||||||||||||
|
|
<complexType name="Hersteller"> |
||||||||||||||||||||||||||||||||||||||||
|
|
|
<complexContent> |
<!-- redefinition of Hersteller mit ''restriction'' oder auch ''extension'' etc. --> |
||||||||||||||||||||||||||||||||||||||
|
|
|
|
<restriction base="pcTeile:Hersteller"> |
||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
<sequence> |
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
<element name="hersteller" type="string" minOccurs="10" maxOccurs="10"/> |
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
</sequence> |
|||||||||||||||||||||||||||||||||||||
|
|
|
|
</restriction> |
||||||||||||||||||||||||||||||||||||||
|
|
|
</complexContent> |
|||||||||||||||||||||||||||||||||||||||
|
|
</complexType> |
||||||||||||||||||||||||||||||||||||||||
|
</redefine> |
|||||||||||||||||||||||||||||||||||||||||
|
… |
|||||||||||||||||||||||||||||||||||||||||
|
<include schemaLocation="http://www.h-ub.org/schemata/ram.xsd"/> |
|||||||||||||||||||||||||||||||||||||||||
|
<include schemaLocation="http:// www.h-ub.org /schemata/ram.xsd"/> |
|||||||||||||||||||||||||||||||||||||||||
|
… |
|||||||||||||||||||||||||||||||||||||||||
</schema> |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Verwendung von Links in XML |
||||||||||||||||||||||||||||||||||||||||||
<xsl:template match="/"> |
||||||||||||||||||||||||||||||||||||||||||
<H1>Ein Beispiel von <A HREF="http://www.h-ub.org">Hettwer UnternehmenB</A> !</H1> |
||||||||||||||||||||||||||||||||||||||||||
<!-- In das Root- Element eine Überschrift des Formates H1 eingefügt, das den Link zu dieser Seite beinhaltet --> |
||||||||||||||||||||||||||||||||||||||||||
</xsl:template> |
|
|||||||||||||||||||||||||||||||||||||||||
MS XML-Notepad |
http://www.w3.org/2001/XMLSchema-instance |
XML Funktionen in EXCEL |
|||||
|
|
||||
|
Importieren von XML- Daten |
||||
|
» Nicht unterstützte XML- Schemakonstrukte (kein Import möglich) |
||||
|
|
<any> |
Elemente einfügen, die nicht vom Schema deklariert werden sollen |
||
|
|
<anyAttribute> |
Attribute einfügen, die nicht vom Schema deklariert werden sollen |
||
|
|
||||
|
» Vermeidung von überschreiben vorhandenen Daten |
||||
|
|
1. Zelle im zugeordneten Bereich markieren |
|||
|
|
2. Listensymbolleiste auf Eigenschaften der XML- Zuordnung anklicken |
|||
|
|
3. Auf vorhandenen XML- Listen klicken um neue Daten zu erweitern und anschließend auf OK. |
|||
|
|
(Standardmäßig werden vorhandene Daten im zugeordneten Bereich beim Importieren überschrieben) |
|||
|
|
|
|
||
|
» Konvertierung XSD- Datentypen (XML- Schemadefinition) |
||||
|
|
XSD- Datentyp |
Excel- Anzeigeformat |
Anmerkung |
|
|
|
time |
h:mm:ss |
|
|
|
|
dateTime |
m/d/yyyy h:mm |
|
|
|
|
date |
Datum *3/14/2001 |
|
|
|
|
gYear |
Zahl, keine Dezimalstellen |
|
|
|
|
gDay |
Zahl, keine Dezimalstellen |
|
|
|
|
gMonth |
Zahl, keine Dezimalstellen |
|
|
|
|
gYearMonth |
Benutzerdefiniert mmm-yy |
|
|
|
|
gYearMonth |
Benutzerdefiniert d-mmm |
|
|
|
|
anytype |
Text |
|
|
|
|
anyURI |
Text |
|
|
|
|
base64Binary |
Text |
|
|
|
|
duration |
Text |
|
|
|
|
ENTITIES |
Text |
|
|
|
|
ENTITY |
Text |
|
|
|
|
hexBinary |
Text |
|
|
|
|
ID |
Text |
|
|
|
|
IDREF |
Text |
|
|
|
|
IDREFS |
Text |
|
|
|
|
language |
Text |
|
|
|
|
Name |
Text |
|
|
|
|
NCName |
Text |
|
|
|
|
NMTOKEN |
Text |
|
|
|
|
NMTOKENS |
Text |
|
|
|
|
normalizedString |
Text |
|
|
|
|
NOTATION |
Text |
|
|
|
|
QName |
Text |
|
|
|
|
string |
Text |
|
|
|
|
token |
Text |
|
|
|
|
boolean |
Boolesch |
|
|
|
|
decimal |
Allgemein |
Führende und nachfolgende Nullen werden ausgelassen. Plus- und Minuszeichen werden beachtet, obwohl nur Minuszeichen angezeigt werden. Excel speichert und berechnet mit einer Genauigkeit von 15 relevanten Stellen. |
|
|
|
float |
Allgemein |
||
|
|
double |
Allgemein |
||
|
|
byte |
Allgemein |
|
|
|
|
int |
Allgemein |
|
|
|
|
integer |
Allgemein |
|
|
|
|
long |
Allgemein |
|
|
|
|
negativeInteger |
Allgemein |
|
|
|
|
nonNegativeInteger |
Allgemein |
|
|
|
|
positiveInteger |
Allgemein |
|
|
|
|
short |
Allgemein |
|
|
|
|
unsignedByte |
Allgemein |
|
|
|
|
unsignedInt |
Allgemein |
|
|
|
|
unsignedLong |
Allgemein |
|
|
|
|
unsignedShort |
Allgemein |
|
|
|
|||||
|
Exportieren von XML- Daten |
||||
|
» Gültigkeitsprüfung |
Anhand der XML- Zuordnung, welche ein Stammelement enthalten muss |
|||
|
» Angewendete |
• UTF-8-Codierung wird zum Schreiben der Daten verwendet.
• Alle Namespaces sind im Stammelement definiert. Der Standardnamespace • Kommentarknoten bleiben nicht erhalten.
• Es werden keine leeren Elemente erstellt, wenn leere Zellen für ein optionales
• Es werden leere Elemente erstellt, wenn leere Zellen für ein erforderliches • Vorhandene Namespacepräfixe werden überschrieben |