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>
    CODE
  • Maskierung (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> oder

        • eines 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<?Zielname Daten?> (engl. Processing Instructions),

      • Kommentare<!-- Kommentar-Text -->, und

      • Text, 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

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

    2. Die 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>
      CODE

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

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

      -->