XIP Format: Unterschied zwischen den Versionen

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
Zeile 67: Zeile 67:
 
</source>
 
</source>
  
Das zusammenfassen von Elementen mit dem <code><xip></code>-Element und über Pool-Elemente läßt sich auch kombinieren, so das auch die unterschiedlichsten Elemente innerhalb einer XML-Datei zusammengefasst werde können.
+
Das zusammenfassen von Elementen mit dem <code><xip></code>-Element und über Pool-Elemente läßt sich auch kombinieren, so das auch die unterschiedlichen Elemente innerhalb einer XML-Datei zusammengefasst werde können.
 
<source lang="xml">
 
<source lang="xml">
 
<?xml version="1.0" encoding="UTF-8" ?>
 
<?xml version="1.0" encoding="UTF-8" ?>

Version vom 8. Mai 2009, 07:21 Uhr

Im einfachsten Fall besteht ein XIP aus einer XML-Datei. Die auszutauschenden Daten werden in einem definierten XML-Format beschrieben. Bei komplexeren Daten kann ein XIP aus mehreren Dateien bestehen, die unterhalb eines Verzeichnis liegen müssen, aber auch Unterverzeichnisse beliebiger Tiefe enthalten können. Dieses Verzeichnis kann auch mit ZIP zu einer ZIP-Datei zusammengefasst werden.

Ein XIP ist ein drei verschiedenen Formen gültig.

  1. Einfache XML-Datei
  2. Verzeichnisstruktur mit Dateien
  3. ZIP-Datei, die Verzeichnisstrukturen mit Dateien enthält


Einfache XML Datei

Eine einfache XML Datei kann eines der Folgenden Elemente enthalten:

Eine einfache XIP-Datei mit einem Artikel könnte z.B. so aussehen:

<?xml version="1.0" encoding="UTF-8" ?>

<article anchor="article.example.xip.1" name="Example 1" parent="pool.tutorial.xip" template="tpl.content" filename="article.example">
   <text name="sp_title">Einfache XIP-Datei</text>
</article>

Um mehrere Elemente in einer XML Datei zu definieren können alle oben aufgeführten Elemente innerhalb eines <xip>-Elementes liegen.

Eine einfache XML-Datei mit mehreren Artikeln könnte z.B. so aussehen:

<?xml version="1.0" encoding="UTF-8" ?>

<xip>
   <article anchor="article.example.xip.1" name="Example 1" parent="pool.tutorial.xip" template="tpl.content" filename="article.example">
      <text name="sp_title">Einfache XIP-Datei 1 von 2</text>
   </article>
   <article anchor="article.example.xip.2" name="Example 1" parent="pool.tutorial.xip" template="tpl.content" filename="article.example">
      <text name="sp_title">Einfache XIP-Datei 2 von 2</text>
   </article>
</xip>

Um ganze Poolstrukturen zu importieren, können innerhalb eines Pool-Elementes weitere Elemente und Unterpools liegen.

Eine einfache XML-Datei mit Poolstruktur könnte z.B. so aussehen:

<?xml version="1.0" encoding="UTF-8" ?>

<articlepool anchor="pool.tutorial" name="IES Tutorial" parent="gui.informations" directory="/tutorial">
   <articlepool anchor="pool.tutorial.xip" name="XIP" parent="pool.tutorial.xip" directory="/xip">
      <resource>
         <text name="container" anchor="is5:gui.container.infosite.standard"/>
         <text name="editorTemplatePool" anchor="standard.container.editing"/>
         <text name="registrationTemplate" anchor="is5:gui.container.infosite.standard.all"/>
      </resource>

      <article anchor="article.example.xip.1" name="Example 1" parent="pool.tutorial.xip" template="tpl.content" filename="article.example">
         <text name="sp_title">Einfache XIP-Datei 1 von 2</text>
      </article>
      <article anchor="article.example.xip.2" name="Example 1" parent="pool.tutorial.xip" template="tpl.content" filename="article.example">
         <text name="sp_title">Einfache XIP-Datei 2 von 2</text>
      </article>

   </articlepool>
</articlepool>

Das zusammenfassen von Elementen mit dem <xip>-Element und über Pool-Elemente läßt sich auch kombinieren, so das auch die unterschiedlichen Elemente innerhalb einer XML-Datei zusammengefasst werde können.

<?xml version="1.0" encoding="UTF-8" ?>

<xip>

   <articlepool ...>
      <article ...>...</article>
      <articlepool ...>
         <article ...>...</article>
      </articlepool>
   </articlepool>

   <userpool ...>
      <user ...>...</user>
   </userpool>

   <template ...>...</template>

</xip>

Verzeichnisstruktur mit Dateien

XIP Daten können nicht nur aus einer XML-Datei, sondern auch aus mehreren Dateien in einer Verzeichnisstruktur beliebiger Tiefe bestehen. In einem gemeinsamen Verzeichnis können mehrere XML-Dateien abgelegt werden, die, wie im obigen Abschnitt beschrieben, aufgebaut sein können.

Artikel des IES können auch Medien enthalten. Um Medien eines Artikels in XIP zu beschreiben, bestehen zwei Möglichkeiten.

  1. Die binären Daten des Mediums werden BAS64-Encodiert in der XML-Datei abgelegt
  2. Das Medium wird als eigene Datei in der Verzeichnisstruktur des XIP abgelegt. Der Pfad zu dem Medium kann innerhalb der XML-Datei des Artikels relativ zu dieser Datei angegeben werden.

XIP-INF Verzeichnis

Für den Aufbau eines XIP ist es Sinnvoll alle in einem Pool liegenden Elemente auch als XIP-Dateien in einem Verzeichnis abzulegen. Bei den oben beschriebenen XML-Dateien muss aber für jedes Element ein parent angegeben werden, um zu bestimmten, in welchem Pool das Element enthalten ist. Soll nachträglich das Element in einem anderen Pool (also in einem anderen Verzeichnis) abgelegt werden, muss auch immer das parent-Attribut für den neuen Pool gesetzt werden. Um flexibler mit XIP-Element-Dateien innerhalb von Verzeichnissen umgehen zu können, kann ein Verzeichnis als Pool definiert werden. Hierzu muss dieses Verzeichnis ein Unterverzeichnis XIP-INF besitzen. In diesem Unterverzeichnis wird eine Datei pool.xml abgelegt, die die XIP-Pool-Daten enthält. Alle XIP-Element-Dateien in diesem als Pool definierten Verzeichnis benötigen kein parent-Attribut mehr. Durch das Verzeichnis wird definiert, in welchem Pools sich das Element befindet.

XIP-Basis-Verzeichnis
|
+-- Tutorial-Verzeichnis
    |
    +-- XIP-INF
    |   |
    |   +-- pool.xml
    |
    +-- XIP-Verzeichnis
        |
        +-- XIP-INF
        |   |
        |   + pool.xml
        |
        +-- Beispiel_1.xml
        |
        +-- Beispiel_2.xml

Tutorial-Verzeichnis/XIP-INF/pool.xml

<?xml version="1.0" encoding="UTF-8" ?>

<articlepool anchor="pool.tutorial" name="IES Tutorial" parent="gui.informations" directory="/tutorial">
</articlepool>

Tutorial-Verzeichnis/XIP-Verzeichnis/XIP-INF/pool.xml

<?xml version="1.0" encoding="UTF-8" ?>

<articlepool anchor="pool.tutorial.xip" name="XIP" directory="/xip">
   <resource>
      <text name="container" anchor="is5:gui.container.infosite.standard"/>
      <text name="editorTemplatePool" anchor="standard.container.editing"/>
      <text name="registrationTemplate" anchor="is5:gui.container.infosite.standard.all"/>
   </resource>
</articlepool>

Tutorial-Verzeichnis/XIP-Verzeichnis/Beispiel_1.xml

<?xml version="1.0" encoding="UTF-8" ?>

<article anchor="article.example.xip.1" name="Example 1" template="tpl.content" filename="article.example">
  <text name="sp_title">Einfache XIP-Datei 1 von 2</text>
</article>

Lange Verzeichnisnamen unter Windows

Auch wenn es für XIP keine Begrenzung der Verzeichnistiefe gibt, sollte dennoch beachtet werden das unter Windows ein Dateiname mit Verzeichnis-Pfad aus maximal 255 Zeichen bestehen darf. Aus dem im XIP enthaltenen Pfaden (die relativ sind) muss auch immer noch das Basis-Verzeichnis dazugerechnet werden (Z.B. C:\Programme\Sitepark oder ein beliebiges Verzeichnis, in dem mit XIP gearbeitet wird)