XML / XML Extended
XML
Version: 1.0
Aufbau: Kopfzeile, Katalogknotenpunkt, Produktknotenpunkt – Bitte keine weiteren Knotenpunkte öffnen (sog. „Unter-Attribute“)
Beispiel:
<?xml version="1.0" encoding="UTF-8"?> <products> <product> <id><![CDATA[1234]]></id> <description><![CDATA[Produktbeschreibung]]></description> <price><![CDATA[129.99]]></price> </product> <product> <id><![CDATA[5678]]></id> <description><![CDATA[Produktbeschreibung]]></description> <price><![CDATA[79.99]]></price> </product> </products>CODE
Maskierung (aller Attribute): <![CDATA[FELDINHALT]]>
Hinweis: Bitte übergeben Sie bei allen Datensätzen, alle Attribute, auch wenn diese nicht überall Inhalte aufweisen sollten. Zusätzlich wird empfohlen, dass Zeilenumbrüche verwendet werden.
XML Extended
Version: XML 1.0
Aufbau: XML Extended ist kein Dateiformat. Es ist eine interne Option, die das Auslesen von Produktdaten aus verschachteltem XML erlaubt.
XML Attribute können verarbeitet werden, solange sie innerhalb der Produktknotenebene auftreten.
Die Produktknotenebene beschreibt die Tiefe, in der sich die Produktdaten befinden. Sie wird in der Import-Konfiguration der Kampagne definiert.
Die Produktdaten können sich unterhalb eines oder mehrerer Elemente befinden.
Beispiel:
<?xml version="1.0" encoding="UTF-8"?> <feeds> <feed> <products> <product> // Produktknotenebene: 4 ; Produktknotenname: 'product' <id><![CDATA[1234]]></id> <description><![CDATA[Produktbeschreibung]]></description> <price><![CDATA[129.99]]></price> <images> <image><![CDATA[image_url 1]]></image> <image><![CDATA[image_url 2]]></image> ... </images> </product> <product type="test"> <id><![CDATA[5678]]></id> <description><![CDATA[Produktbeschreibung]]></description> <price><![CDATA[79.99]]></price> <images> <image><![CDATA[image_url 1]]></image> <image><![CDATA[image_url 2]]></image> ... </images> </product> </products> </feed> </feeds>CODEMaskierung (aller Attribute): <![CDATA[FELDINHALT]]>
Physischer Aufbau
Die Dokument-Entität (engl. Document entity) enthält das Hauptdokument.
Weitere mögliche Entitäten sind über Entitätenreferenzen (&name; für das Dokument bzw. %name; für die Dokumenttypdefinition) eingebundene Zeichenketten, eventuell auch ganze Dateien, sowie Referenzen auf Zeichenentitäten zur Einbindung einzelner Zeichen, die über ihre Nummer referenziert wurden (
&#Dezimalzahl;oder&#xHexadezimalzahl;).Eine XML-Deklaration wird verwendet, um XML-Version, Zeichenkodierung und eine mögliche Verarbeitbarkeit ohne DTD zu spezifizieren.
Eine Dokumenttypdefinition wird verwendet, um Entitäten sowie den erlaubten logischen Aufbau zu spezifizieren. Die Verwendung einer DTD kann in der XML-Deklaration abgewählt werden.
Logischer Aufbau
Der logische Aufbau entspricht einer Baumstruktur und ist damit hierarchisch organisiert.
Als Baumknoten gibt es:Elemente, deren physische Auszeichnung mittels
eines passenden Paars aus Start-Tag
<Tagname>und End-Tag</Tagname>odereines Leer-Tags
<Tagname/>erfolgen kann,
Attribute als bei einem Start-Tag oder Leer-Tag geschriebene zusätzliche Eigenschaften der Elemente in der Syntax Attributname
="Attributwert",Verarbeitungsanweisungen
<?ZielnameDaten?>(engl. Processing Instructions),Kommentare
<!--Kommentar-Text-->, undText, der als normale Zeichendaten oder in Form eines CDATA-Abschnittes
<![CDATA[beliebiger Text]]>auftreten kann.
Ein XML-Dokument muss genau ein Element auf der obersten Ebene enthalten. Unterhalb dieses Dokumentelements können weitere Elemente und Text verschachtelt werden.
Wohlgeformtheit
Ein XML-Dokument heißt „wohlgeformt, wenn es alle XML-Regeln einhält. Beispielhaft seien hier folgende genannt:
Das Dokument besitzt genau ein Wurzelelement. Als Wurzelelement wird dabei das jeweils äußerste Element bezeichnet.
Alle Elemente mit Inhalt besitzen einen Beginn- und einen End-Auszeichner (-Tag) (z. B.
<eintrag>Eintrag 1</eintrag>). Elemente ohne Inhalt können auch in sich geschlossen sein, wenn sie aus nur einem Auszeichner bestehen, der mit/>abschließt (z. B.<eintrag />).Die Beginn- und End-Auszeichner sind ebenentreu-paarig verschachtelt. Das bedeutet, dass alle Elemente geschlossen werden müssen, bevor die End-Auszeichner des entsprechenden Elternelements oder die Beginn-Auszeichner eines Geschwisterelements erscheinen.
Ein Element darf nicht mehrere Attribute mit demselben Namen besitzen.
Attributeigenschaften müssen in Anführungszeichen stehen.
Die Beginn- und End-Auszeichner beachten die Groß- und Kleinschreibung (z. B.
<eintrag></Eintrag>ist nicht gültig).
Einschränkungen
Entitätenreferenzen werden nicht behandelt.
Wenn im Dokumententext auf den Entitätsnamen referenziert wird, interpretiert XML Extended dies als normalen Text und ersetzt nicht die Referenz durch deren Entitätsinhalt.
Beispiel:<?xml version="1.0" encoding="UTF-8"> <feed> <!ENTITY description1 "This is supposed to be the long description"> <products> <product> <id>1</id> <description>'&description1;'</description> </product> </products> </feed>CODEDie Feeds können nicht richtig eingelesen werden, wenn sich die Produkte auf verschiedenen Tiefen befinden.
Beispiel:<products> <categorie_1> <subcategorie_1> <product> <!-- Tiefe: 4 --> <id>1</id> <title>Test product</title> </product> ... </subcategorie_1> ... </categorie_1> <categorie_2> <product> <!-- Tiefe: 3 --> <id>2</id> <title>Product of category 2</title> </product> ... </categorie_2> ... </products>CODEEs darf nur ein Element spezifiziert werden, das auf der gegebenen Tiefe als "Produkt" eingelesen wird (seine Unterelemente werden als Spalten im Mapping repräsentiert).
Beispiel:<feed> <categories> <category> <id>cat_1</id> <name>Kategorie 1</name> </category> ... </categories> <products> <product> <id>p_1</id> <title>Produkt 1</title> </product> ... </products> </feed>CODE
<!-- Aus diesem Feed können nicht sowohl die Kategorien als auch die Produkte eingelesen werden. -->Die Namespaces werden beim Einlesen einfach ignoriert.
Beispiel:<product> <a:product> ... </a:product> <b:product> ... </b:product> ... </product>CODE
<!-- Zwischen dem product mit Namespace a und dem - mit b wird kein Unterschied gemacht. Die werden beide als product Elemente interpretiert.-->