SEPA XML - eXtensible Markup Language

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>).

SEPA Beratung SEPA Experte SEPA Berater Profil SEPA Freiberufler SEPA Freelancer SEPA Spezialist SEPA Unternehmensberatung SEPA Informationsquelle SEPA News SEPA Nachrichten Zahlungsverkehr SEPA Wiki

HTML steht eine Reihe von vorgegebenen, statischen Befehlen zur Verfügung. Die Parameter der Befehle lassen sich zwar individuell festlegen, Befehle (und die Bedeutung) hingegen können nicht verändert/ definiert werden.
Da der Zweck von XML ist, die Daten übersichtlich und standardisiert in einer Textdatei zu strukturieren und nicht zu präsentieren, müssen die zu verwendeten Befehle individuell definiert werden können. In XML sind also nicht die Befehle sondern "nur" die Regeln, wie die Definition der Befehle erfolgen muss, vorzugehen.
Daraus folgt aber auch, dass ein XML- Dokument von einem Internetbrowser nicht direkt (d.h. ohne zusätzliche Informationen dargestellt werden kann. Eine Umsetzung des XML- Dokuments in ein HTML-Dokument kann über Stylesheets (Cascading Stylesheets; CSS oder XML Stylesheet Language; XSL) verwirklicht werden.

Grundlegende Syntax vom XML- Dokumenten:

 

Elemente

 

 

<elemtent1>

» öffnender Tag, Inhalt Element (Information), schließender Tag
» Ein Programm muss eine XML- Datei als fehlerhaft ansehen,
   wenn die Regel einer korrekte Verschachtelung verletzt wird

 

 

 

<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>
<e2>Inhalt2</e2>

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            
       unterschiedlichen IDs (und Sprachen) -->

 

 

 

<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")
und Aufbau (Verschachtelung, Beziehung der Elemente untereinander) müssen eindeutig bekannt sein.

Bei XML handelt es sich um ein Austauschformat für das Internet. Mehrere XML- Dokumente, die dieselbe definierte Form haben, können zu einer Art Klasse zusammengefasst werden. Eine Datenbankanwendung kann dann auf verschiedene XML- Dokumente zugreifen, prüfen, ob das Dokument der erwarteten Form entspricht, und dann die jeweils benötigte Information aus dem Dokument herauslesen bzw. bearbeiten.

 

 

 

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)>
oder
<!ELEMENT vorname (#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
IDREFS

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
vortrag muss ein Attribut namens id haben, das einen Identifikator darstellt und es kann ein Attribut namens sprache enthalten. Der Wert des Attributs wird als String interpretiert. Ein Element redner muss dagegen lediglich ein Attribut idref enthalten und bekommt darüber einen Verweis auf ein anderes Element.

Im Zusammenhang mit ID und IDREF wird es meist notwendig sein, diese Attribute als
#REQUIRED zu erklären. Ansonsten ergibt sich schnell das Problem, dass z.B. manche Elemente einen Identifikator bekommen, andere vom gleichen Typ aber nicht. Diese Elemente wären dann nicht referenzierbar.

 

 

<!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
Eine XML- Datei enthält Textinformationen, die von individuell bezeichneten Tags eingeschlossen sind. Beim Benennen der Elementnamen muss darauf geachtet werden, dass XML Groß- und Kleinschreibung unterscheidet. Wichtig ist auch das jedes geöffnete Tag und Element unbedingt wieder an der richtigen Stelle geschlossen wird.

<?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
Stylesheet benutzt wird (WICHTIG)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

.
.
S
t
y
l
e
s
h
e
e
t
.
.

<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


Attribute werden im Elementanfangstag angegeben, deren Inhalte werden mit einem Gleichheitszeichen und in Anführungszeichen dargestellt. Eine XSL- Datei besteht aus verschiedenen Regeln, welche für jedes Element beschreiben, wie es dargestellt werden soll. Den Anfang macht dabei im Idealfall eine Regel, die alle Elemente durchlaufen, da man sie so nicht jedes Mal wiederholen muss. Dieses Element beschreibt man mit "/".

Man muss beachten, dass jedes Element erst einmal aufgerufen werden muss, damit es bearbeitet wird.

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 unterscheidet zwischen einfachen (atomaren) Datentypen und komplexen Datentypen. Datentypen in XML Schema bezeichnen jeweils die abstrakte Spezifikation der Struktur eines Abschnitts innerhalb eines XML- Dokumentes und werden klassifiziert in eingebaute bzw. vordefinierte (built-in) und benutzerdefinierte (user defined) Datentypen.

Einfache XML- Datentypen dürfen weder XML- Kindelemente enthalten noch XML- Attribute besitzen. Außer den atomaren Datentypen gehören Listen und Unions (bestehend aus atomaren Elementen) zu den einfachen Typen.

 

 

XML Schema stellt einige grundlegende atomare Datentypen bereit:

 

» xsd:string

xsd:decimal

xsd:integer

xsd:float

xsd:boolean

xsd:date

xsd:time

 

 

Hinzu kommen weitere XML- spezifische atomare Typen, unter anderem:

 

» xsd:QName

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.

 

» xsd:anyURI

Uniform Resource Identifier (URI)

 

» xsd:language

Sprachbezeichnung, z. B. de-DE, en-US, fr

 

» xsd:ID

Identifikationsattribut innerhalb von XML- Elementen

 

» xsd:IDREF

Referenz auf einen ID- Wert

 

<xsd:simpleTypename="monatInt">

Das Beispiel definiert einen neuen XML- Datentyp mit dem Namen monatInt sowie eine Liste dieses neuen Typs:

 

<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 monatsname sowie einen Union Typ monat:

XML- Elemente vom Typ
monat dürfen sowohl Integer Werte im Bereich 1–12 enthalten als auch eine der entsprechenden Monatsbezeichnungen als Zeichenkette.

 

<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 name, hersteller etc., sowie einem Attribut id

 

<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 name, hersteller, prozessor einmal auftreten, mhz kann null- oder einmal auftreten, kommentar kann beliebig oft oder gar nicht auftreten.

 

<xsd:attribute name="id" type="xsd:integer"/>

</xsd:complexType>

 

Kindelemente eines komplexen Typs können auf drei unterschiedliche Arten kombiniert werden:

xsd:sequence

Jedes dieser Elemente kann keinmal, einmal oder mehrfach auftreten (Attribute minOccurs und maxOccurs). Falls kein occurs-Attribut vorhanden ist, wird in beiden Fällen der Default-Wert 1 verwendet. Die Elemente einer sequence müssen in der angegebenen Reihenfolge auftreten.

 

xsd:choice

Aus einer Liste von Alternativen kann ein Element ausgewählt werden.

<xsd:complexType name="computer">

Das Beispiel definiert einen Typ computer, der als Kindelement entweder ein desktop- Element besitzt (vom Typ PC ) oder ein laptop- Element

 

<xsd:choice>

 

 

<xsd:element name="desktop" type="PC"/>

 

 

<xsd:element name="laptop" type="Laptop"/>

 

</xsd:choice>

</xsd:complexType>

 

xsd:all

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 anyType definieren. Der nachfolgende Code spezifiziert Element kommentar mit beliebigen Inhalt (komplexe XML- Elemente, Text etc. können vorkommen).

<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: <br />)

 

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 xsd:complexType ein neuer Typ definiert, ohne ein Kindelement anzugeben. Da xsd:complexType nach Vorgabe nur komplexe XML- Kindelemente als Inhalt zulässt, bleibt das jeweilige Element in diesem Fall leer.

 

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.
Die Ableitung eines neuen Typs kann auf zweierlei Arten erfolgen: Erweiterung oder Einschränkung.

 

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.
Der neu definierte XML-Typ
myPC besteht aus allen Kindelementen des Typs pc sowie dem Element ram.
Letzteres wird, wie in einer
xsd: sequence-Definition, an die bisherigen Kindelemente angehängt. Da keine Substituierbarkeit gegeben ist, darf an einer Stelle an der ein Element vom Typ pc erwartet wird nicht ohne weiteres ein Element vom Typ myPC verwendet werden.

 

<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.

Zu diesem Zweck müssen alle Elementdefinitionen des Basistyps wiederholt werden, verändert um die jeweiligen restriktiveren Einschränkungen. Im folgenden Beispiel wird ein neuer Typ
myPC2 von pc abgeleitet. In diesem Fall darf maximal ein kommentar-Element auftreten (im Gegensatz zu einer beliebigen Anzahl beim Typ pc)

<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 monatInt wird als Einschränkung des Typs Integer auf den Wertebereich 1–12 definiert. Primitive, die Einschränkungen auf einfachen Typen beschreiben sind:

 

» length, maxLength, minLength

Beschränkt die Länge eines Strings oder einer Liste

 

» enumeration

Beschränkung durch Angabe alternativer Werte

 

» pattern

Beschränkung durch Angabe eines regulären Ausdrucks

 

» minExclusive, minInclusive,
  
maxExclusive, maxInclusive

Einschränkung des Wertebereichs

 

» totalDigits, fractionDigits

Einschränkung der Dezimalstellen (Gesamtzahl + Nachkommastellen)

 

» whiteSpace

Behandlung von Leerzeichen und Tabs

 

 

 

Beispiele:
» Komponenten: Körpertemperatur, 3 Dezimalstellen, 1 Nachkommastelle, Minimal- und Maximalwert

<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 pc weitere Typen nur durch das Setzen weiterer Einschränkungen abgeleitet werden dürfen und nicht durch das Hinzufügen neuer Kindelemente.

 

<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 pc-Typ innerhalb einer Liste von pc- Elementen:

 

<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 pc-Kindelementen:

<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 unique und key selektieren mit einem XPath Pfadausdruck (im Beispiel: computer) eine Menge von computer-Elementen. Für diese Menge muss die jeweilige Eindeutigkeits- bzw. Schlüsselbedingung erfüllt werden.

Im Beispiel wird festgelegt, dass die Kombination der Elemente name und hersteller für jedes computer-Element innerhalb dieser Liste eindeutig sein muss.

Durch das
key-Element wird festgelegt, dass das Attribut id innerhalb dieser Liste eindeutig sein muss und von außerhalb referenziert werden kann.

 

 

 

 

<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 refer bezieht man sich auf das name-Attribut einer Schlüsselbedingung, nicht auf das Schlüsselfeld. Die Werte in references müssen also immer unter den Schlüsseln zu den computern zu finden sein.

<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 include- als auch der import-Tag zur Verfügung sowie die Möglichkeit einer neuen Definition bzw. Anpassung fremder Schemata beim Einbinden.

 

 

 

Typdefinitionen innerhalb eines Namensraumes, die auf mehrere Dateien verteilt sind, lassen sich mittels include zusammenfügen:
» mehrere Schemata können inkludiert werden
» targetNamespace des harddisk.xsd muss mit dem des inkludierenden Schemas übereinstimmen

<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/harddisk.xsd"/>
<includeschemaLocation="http://www.h-ub.org/schemata/ram.xsd"/>

...

</schema>

 

 

 

Annahme: Es gibt einen complexType Hersteller im Schema.
redefine kann an Stelle von include verwendet werden. Der Name des Typs ändert sich dabei nicht.

harddisk.xsd.

<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

www.SelfXML.de

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
Regeln

• UTF-8-Codierung wird zum Schreiben der Daten verwendet.

• Alle Namespaces sind im Stammelement definiert. Der Standardnamespace
   erhält das Präfix ns0, nachfolgende werden die Präfixe ns1, ns2 bis ns
   <Anzahl> zugewiesen, wobei <Anzahl> für die Anzahl der Namespaces steht,
   die in die XML- Datei geschrieben sind.

• Kommentarknoten bleiben nicht erhalten.

• Es werden keine leeren Elemente erstellt, wenn leere Zellen für ein optionales
   Element vorhanden sind.

• Es werden leere Elemente erstellt, wenn leere Zellen für ein erforderliches
   Element vorhanden sind.

• Vorhandene Namespacepräfixe werden überschrieben

SEPA XML - eXtensible Markup Language - SEPA XML - eXtensible Markup Language - SEPA XML - eXtensible Markup Language - SEPA XML - eXtensible Markup Language - SEPA XML - eXtensible Markup Language - SEPA XML - eXtensible Markup Language - SEPA XML - eXtensible Markup Language -

Im Gegensatz zu HTML ist XML jedoch dazu gedacht, den Inhalt des Dokuments zu beschreiben statt die Informationen formatiert und gegliedert zu präsentieren.

Hettwer UnternehmensBeratung

Hettwer UnternehmensBeratung GmbH - Spezialisierte Beratung - Umsetzungsdienstleistungen im Finanzdienstleistungssektor – Experte im Projekt- und Interimsauftragsgeschäft - www.hettwer-beratung.de

H-UB ERFOLGSGESCHICHTE

Auszeichnung:

Gold-Partner-Zertifikat

Hettwer UnternehmensBeratung GmbH wurde aufgrund der erbrachten Beraterleistungen in den exklusiven Kreis der etengo Gold-Partner aufgenommen.

H-UB EXPERTENWISSEN

Hettwer UnternehmensBeratung GmbH – Expertenprofil Klaus Georg Hettwer (Geschäftsführer): Beratungskompetenz, Fachliche Kompetenz, Methodische Kompetenz, Soziale Kompetenz, Kommunikationskompetenz; Sonderthemen: SEPA, EMIR, TARGET2, MiFID, T2S

- Eine Beratung mit PROFIL -

H-UB Leistungskatalog

H-UB Leistungskatalog.pdf
Adobe Acrobat Dokument 89.4 KB

Projekt:

Hanseatische Container Logistik GmbH

Spedition, Logistik

Projekt:

WERDER BAU Bremen GmbH

Bauunternehmen

Projekt: Vino Bello

„La Dolce Vita“

 

H-UB SOCIAL MEDIA PRÄSENZ

© 2010-2024 Hettwer UnternehmensBeratung GmbH