XIP Format

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen

Beschreibung

XIP (eXchange Information Package) ist ein von Sitepark entwickeltes Format zum Austausch von Daten in und aus dem IES.


Artikel

Für die drei Artikeltypen steht jeweils ein eigener XML-Tag zur Verfügung, über den die Daten angelegt, bzw. aktualisiert werden. Die Regeln für den Import der eigentlichen Inhaltsfelder ist danach für alle Artikeltypen identisch.

Die unterschiedlichen Inhaltsfelder werden in Contenttypen unterschieden. Alle Contenttypen werden über einen eigenen XML-Tag beschrieben. Die Typen sind analog zu den Typen aus InfoSite. Neben dem Attribut name wird auch das Attribut locale für alle Tags unterstützt. Die Tags im einzelnen sind:

text
Import einfacher Textinhalte
<text name="sp_headline">Die Rubrikseite</text>
<text name="sp_intro" locale="de">Links auf alle anderen importierten Seiten</text>
date
Import Long-Werte als Typ Date
<date name="sp_date">1165408738935</date>
number
Import Zahlen als Typ Number
<number name="sp_number" locale="de_DE">123</number>
mail
Import von Text-Feldern vom Typ Mail. Inhalte werden nicht validiert und können über ".mail" ausgegeben werden.
<mail name="sp_mail">Email: support@sitepark.com</mail>
email
Import von Text-Feldern vom Typ Email. Inhalte können validiert werden. Dieser Typ wird in der Regel vom Newsletter oder ähnlichen Modulen verwendet und kann über ".email" ausgegeben werden.
<text name="sp_mail">Email vom Sitepark Support</text>
<email name="sp_mail">support@sitepark.com</email>
query
Import von Queries.
<query name="sp_query">parent = !{myparent}</query>
url
Import manuell eingegebener URLs
<text name="external">www.google.de</text>
<url name="external">http://www.google.de</url>
link, navlink, systemlink
Import von Links zu anderen Artikeln (können bereits bestehen, oder werden ebenfalls importiert) Die Verknüpfung erfolgt über einen Anker. Wenn der angegebene Anker (noch) nicht verfügbar ist, wird dieses Feld nicht importiert.
<systemlink name="sp_link" anchor="article.x"/>
<link name="sp_simplelink" anchor="article.y"/>
list und item
Mit diesen XML-Tags werden Listen erstellt. Über Listen werden vom System Iterate-Felder angelegt, die entsprechend der Inhalte gefüllt sind. Mehrere "item"-Blöcke untereinander erstellen mehrere Iterate-Blöcke.
<!-- ein Iterator (hier für Texte und Links) -->
<list name="sp_main_iterate">
  <item>
    <!-- Einfache Inhaltsfelder -->
    <text name="sp_subheadline">Content:</text>
    <text name="sp_part">Link auf die Rubrikseite</text>

    <!-- Link auf einen anderen Artikel -->
    <link name="sp_link" anchor="article.rubric"/>
  </item>
</list>
binary
Mit diesem Tag werden Upload-Felder definiert. Dies ermöglicht das Einbinden von Medien in Artikel, oder das Anlegen von Medienartikeln. Das Attribut "url" gibt an, wo sich die zu importierende Datei befindet. Hier ist die Angabe eines relativen oder absoluten Pfades ebenso wie die Angabe einer externen URL möglich:
  <binary name="sp_externalmedia_1" url="file://../media/a.gif"/>
  <binary name="sp_externalmedia_1" url="file://./image.gif"/>
  <binary name="sp_externalmedia_2" url="file:///tmp/level_1/media/b.gif"/>
  <binary name="sp_externalmedia_3" url="http://www.sitepark.com/btn_ies.gif"/>
publication-state
Dieser Tag dient zur Steuerung der Publikation des Artikels. Die Angabe kann sowohl über die Publisher-ID, als auch über den entsprechenden Anker vorgenommen werden. Es sind hier nur die Publikationsbereiche anzugeben, in denen der Artikel publiziert werden soll. Alle übrigen Publikationsbereiche können weggelassen werden. Alternativ kann auch der Status auf 0 gesetzt werden. Beachten Sie, dass die Rechte des Import-Nutzer ausreichen.
<publication-state publisher-id="pub1" status="1"/>
<publication-state publisher-id="pub2" status="0"/>
<publication-state anchor="preview" status="1"/>
calendar
Dieser Tag dient zur Beschreibung von Terminen. Auch Angaben zur Freischaltung erfolgen über diesen Tag. Zu beachten ist, dass die Zeiten als Long-Werte (Millisekunden seit 00:00:00 Uhr 01.01.1970) angegeben werden müssen.

Details zu Terminen werden über den entry-Tag beschrieben. Folgende Attribute sind hier möglich:

from
Long Wert für den Beginn des Termins
to
Long Wert für das Ende des Termins
type
Typ des Termins (day, daily, weekly, monthlyByDay, monthlyByOccurrence, yearlyByDay, yearlyByOccurrence, yearlyByMonth)
interval
Wiederholungsintervall des Termins (z.B. jeden 2-ten Tag)
all-day
Ganztägiger Termin (true, false)
repetition-count
Anzahl der Wiederholungen
repetition-date
Long Wert für das Ende der Wiederholungen
dow
Tage der Woche, an denen der Termin stattfindet (sun,mon,tue,wed,thu,fri,sat)
dom
Zahl für den Tag des Monats
doy
Zahl für den Tag des Jahres
oom
Zahl für das Vorkommen in der Woche (z.B. 1. Freitag im Monat)
moy
Zahl für den Monat des Jahres (0=Januar, 11=Dezember)

Ein Wiederhol-Termin könnte z.B: durch folgenden XML-Code beschrieben werden:

<calendar name="sp_date">
  <entry from="1208296800000" to="1208296800000"
    type="weekly"
    interval="0"
    all-day="true"
    repetition-date="1208383200000"
    dow="wed,thu"/>
</calendar>

Um einen Artikel von Zeitpunkt A bis zum Zeitpunkt B in den Publikationsbereichen "www" und "preview" freizugeben, ist folgender XML-Code zu generieren:

<calendar name="publicationFrom">
  <entry from="978351240000" to="978351240000"/>
  <publish-task template="my.template.anchor">
    <publisher anchor="www"/>
    <publisher anchor="preview"/>
  </publish-task>
</calendar>
<calendar name="publicationTo">
  <entry from="1355353140000" to="1355353140000"/>
  <depublish-task template-id="1010100000026042-6000">
    <publisher publisher-id="pub1"/>
    <publisher anchor="preview"/>
  </depublish-task>
</calendar>
linktree (ab Version 2.0.1)
Import vom LinkTrees wie z.B. Sitemaps.

Folgende Attribute sind hier möglich:

name
Name des Feldes
parentlink
Name des Links, der auf einen, in der zu erstellenden Struktur, übergeordneten Artikel verweist.
rootelement-anchor
Anchor des Root-Elements des Baums. Ist kein Root-Element angegeben, wird der dazugehörige Artikel als Root-Element verwendet.
attributes
Eine Kommaseparierte Liste von Attributen, die der Artikel enthalten und auf dessen Änderungen er reagieren soll.
localelink
Mit diesem Attribut kann angegeben werden, ob ein Linktree sprachabhängig aufgebaut werden soll. Wird localelink auf true gesetzt, wird die Sprache des Publikationsbereichs für den Tree verwendet. Die Parentlinks, die den Baum ergeben, müssen dann mit einer Sprache definiert werden.
sortkeys
Attribute des Artikels, nach denen der Baum sortiert werden soll. Jede Ebene des Baums wird für sich sortiert.
sortsequences
Für jedes Sortierkriterium muss eine Sortierreihenfolge festgelegt werden, mit der bestimmt wird, ob mit dem Sortierkriterium aufsteigend (desc), absteigend (asc) oder zufällig (random) sortiert wird.
sorttypes
Für jedes Sortierkriterium kann ein Sortiertyp festgelegt werden, der bestimmt, wie sortiert wird. Dabei ist eine Sortierung von Zeichenketten (text) oder eine Sortierung von Zahlen (number) möglich.

Beispiel für einen LinkTree import:

<linktree
  name="sp_sitemap" parentlink="sp_parent.link" rootelement-anchor="information.sg.homepage"
  localelink="true" attributes="sp_title,sp_tooltip,sp_menuSperre,sp_parent.link,editor_template"
  sortkeys="name"/>

Eigene Seiten

Um einen Artikel zu importieren muss eine XML-Datei erstellt werden, die das Root-Element "article" verwendet. Attribute des Tags erlauben die Beschreibung des Artikels. Alle Angaben neben Systemwerten werden über den oben beschriebenen Tag vorgenommen.

anchor
Anker des Artikels. Dient beim wiederholten Import als Primärschlüssel dieser Daten (String).
name
Name des Artikels.
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).
template
Anker des Templates, welches diesem Artikel zugewiesen werden soll. Die Angabe muss über einen Anker erfolgen (String).
filename
Der Dateiname des Artikels. Fehlt dieses Attribut, so wird der Dateiname automatisch vergeben (String).

Hier ein vollständiges Beispiel eines Artikels:

<!--
Einen Artikel anlegen:

<article    legt einen Artikel an
<media      legt ein Medium an
<resource   legt einen Resource-Artikel an

anchor      Anker des Artikels (dient beim wiederholten Import als Primärschlüssel)
name        Name des Artikels
parent      Anker des Parentpools (Angabe muss über einen Anker erfolgen)
template    Anker des verwendeten Templates (Angabe muss über einen Anker erfolgen)
filename    Dateiname des Artikels (nur für den Typ <article)
-->
<article
  anchor="article.america"
  name="The World according to America"
  parent="import.pool.1"
  template="tpl.content"
  filename="article.america">

    <!-- Kommantarfeld des Artikels -->
    <comment>kann: Ein kleiner Kommentar</comment>

    <!-- Publikationsstatus des Artikels -->
    <publication-state publisher-id="pub1" status="1" />
    <publication-state publisher-id="pub2" status="1" />

    <!-- Einfache Inhaltsfelder -->
    <text name="sp_headline">The World According To America</text>
    <text name="sp_intro">
      Kleine Zeichnung zum amerikanischen Verständnis der Welt.
    </text>

    <!-- Beispiel für einer Checkbox true/false -->
    <text name="sp_textHTML">true</text>

    <!-- Beispiel für eine Selectbox -->
    <text name="sp_select">left</text>

    <!-- ein Iterator (hier für Texte und Links) -->
    <list name="sp_main_iterate">
        <item>
            <!-- Einfache Inhaltsfelder -->
            <text name="sp_subheadline">The World:</text>
            <text name="sp_part">
              Hier kommt die Grafik und ein Link auf die Rubrikseite
            </text>

            <!-- Systemlink auf einen anderen Artikel -->
            <systemlink name="sp_mon_link" anchor="article.rubric"/>

            <!-- Navlink auf einen anderen Artikel -->
            <systemlink name="sp_nav_link" anchor="article.content.2"/>

            <!-- Link auf einen anderen Artikel -->
            <link name="sp_link" anchor="article.rubric"/>
            <text name="sp_link">link auf article.rubric</text>

            <!-- Link auf ein Medium -->
            <systemlink name="sp_image" anchor="image.america"/>

            <!-- Externe URL und Linktext -->
            <text name="sp_external">www.google.de</text>
            <url name="sp_external">http://www.google.de</url>
        </item>
    </list>

    <!-- 
      ein Upload-Feld (das Medium wird beim Import von der angegebenen URL
      (extern oder relativ) geladen)
    -->
    <binary name="sp_externalmedia" url="http://www.sitepark.com/btn_ies.gif"/>
</article>

Medien

Um ein Medium zu importieren, muss neben dem eigentlichen Medium eine XML-Datei erstellt werden, die das Root-Element "media" verwendet. In dieser Datei wird das Medium beschrieben und ein Anker zugewiesen. Alle Angaben neben Systemwerten werden über den oben beschriebenen Tag vorgenommen.

Hier ein vollständiges Beispiel eines Medienimports:

<!--
Einen Artikel anlegen:

<article    legt einen Artikel an
<media      legt ein Medium an
<resource   legt einen Resource-Artikel an

anchor      Anker des Artikels (dient beim wiederholten Import als Primärschlüssel)
name        Name des Artikels
parent      Anker des Parentpools (Angabe muss über einen Anker erfolgen)
template    Anker des verwendeten Templates (Angabe muss über einen Anker erfolgen)
filename    Dateiname des Artikels (nur für den Typ <article)
-->
<media
  anchor="image.america"
  name="The World according to America (IMAGE)"
  parent="import.pool.media">

    <!-- Kommantarfeld des Artikels -->
    <comment>kann: Ein kleiner Kommentar</comment>

    <!-- Publikationsstatus des Artikels -->
    <publication-state publisher-id="pub1" status="1" />
    <publication-state publisher-id="pub2" status="1" />

    <!-- 
      ein Upload-Feld (das Medium wird beim Import von der angegebenen URL
      (extern oder relativ) geladen)
    -->
    <binary url="file://./america.gif"/>
</media>

Resourcen

Falls Resourceartikel importiert werden sollen, steht der Tag "resource" zur Verfügung. Die Beschreibung der Daten erfolgt analog zu den anderen Artikeltypen. Lediglich das Root-Element muss vom Typ "resource" sein.

Hier ein vollständiges Beispiel eines Medienimports:

<!--
Einen Artikel anlegen:

<article    legt einen Artikel an
<media      legt ein Medium an
<resource   legt einen Resource-Artikel an

anchor      Anker des Artikels (dient beim wiederholten Import als Primärschlüssel)
name        Name des Artikels
parent      Anker des Parentpools (Angabe muss über einen Anker erfolgen)
template    Anker des verwendeten Templates (Angabe muss über einen Anker erfolgen)
filename    Dateiname des Artikels (nur für den Typ <article>)
-->
<resource
  anchor="article.externe.url"
  name="Eine externe URL"
  parent="import.pool.1"
  template="tpl.external">

    <!-- Kommantarfeld des Artikels -->
    <comment>kann: Ein kleiner Kommentar</comment>

    <!-- Publikationsstatus des Artikels -->
    <publication-state publisher-id="pub1" status="1" />
    <publication-state publisher-id="pub2" status="1" />

    <!--
      Externe URL und Linktext.
      name "external" sorgt bei Resource-Artikeln automatisch für die Ausgabe
      der richtigen URL
    -->
    <text name="external">www.google.de</text>
    <url name="external">http://www.google.de</url>

</resource>

Nutzer

Neben Artikeln können auch alle anderen IES-Elemente bzw. Pools über diese Schnittstelle importiert werden. Die Eigenschaften der Nutzer werden über Attribute bestimmt. Zusäzliche Inhalte (z.B. Telefonnummer) werden über eine Resource beschrieben. Hier gelten die selben Bedingungen wie bei Resource-Artikeln.

Attribute des XML-Elements "user"

anchor
Anker des Nutzers. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).
firstname
Vorname des Nutzers (String).
lastname
Nachname des Nutzers (String).
login
Login des Nutzers (String).
type
Nutzertyp (Integer).
password
binäres Passwort des Nutzers (i.d.R. wird das Attribut "clear-password" verwendet, um ein Passwort zu setzen) (Base64-Encoded Bytes).
clear-password
Klartextpasswort des Nutzers (String).
email
System-E-Mail-Adresse des Nutzers (String).
locale
Sprache des Nutzers (z.B. "de" oder "de_DE") (String).
sex
Geschlecht des Nutzers (0=female, 1=male, -1=unknown) (Integer).
valid-from
Ein Long-Wert mit der Angabe der Freischaltungszeit (Long).
valid-to
Ein Long-Wert mit der Angabe der Freischaltungszeit (Long).
disabled
Sperre des Nutzers (Boolean).

Templates

Die Eigenschaften für Templates werden ebenfalls über Attribute bestimmt. Zusäzliche Inhalte (z.B. das Layout) werden über eine Resource beschrieben. Hier gelten die selben Bedingungen wie bei Resource-Artikeln.

Attribute bzw. Unterelemente des XML-Elements "template"

anchor
Anker des Templates. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
name
Name des Templates (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).
type
Optionaler Typ des Templates (Template: 6000, Tag: 6001) (Integer).
spml-version
Optionale Angabe der SPML-Version, auf der das Template basiert (String).
suffix
Dateiendung für Artikel die mit diesem Template angelegt werden (String).
source
Der SPML-Quellcode des Templates als sog. Body-Tag: < source > ... < /source > (String).


Das Feld "layout" wird als "text" innerhalb einer "resource" definiert und hat folgende Werte:

common
Normales Template.
handler
Template welches eigene Handler-Aufrufe enthält.
tag
Ein Tag-Template.
container
Ein Template mit Angaben zum Container.

Rollen

Die Eigenschaften für Rollen werden ebenfalls über Attribute bestimmt. Zusäzliche Inhalte können über eine Resource beschrieben werden. Hier gelten die selben Bedingungen wie bei Resource-Artikeln. Die Angabe der Publisher für diese Rolle wird über einen eigene Tag gesteuert. Dieser steht innerhalb des Tags "role".

Attribute des XML-Elements "role"

anchor
Anker der Rolle. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
name
Name der Rolle (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).
new-element
Das Recht neue Elemente anzulegen (Boolean).
read-element
Das Recht Elemente zu lesen (Boolean]).
modify-element
Das Recht Elemente zu verändern (Boolean).
delete-element
Das Recht Elemente zu löschen (Boolean).
duplicate-element
Das Recht Elemente zu duplizieren (Boolean).
max-element
Maximale Anzahl von Elementen (Integer).
read
Das Recht den aktuellen Pool zu lesen (Boolean).
modify
Das Recht den aktuellen Pool zu verändern (Boolean).
duplicate
Das Recht den aktuellen Pool zu duplizieren (Boolean).
new-pool
Das Recht neue Pools anzulegen (Boolean).
delete-pool
Das Recht Pools zu löschen (Boolean).
max-pool
Maximale Anzahl von Pools (Integer).
editor-level
Angabe des Level (Kommaseparierte Liste von Strings)
is-workflow-role
Angabe, ob diese Rolle für Workflow verwendet werden soll (Boolean).
publisher
Dieser Tag dient zur Konfiguration der Publisher dieser Rolle. Die Angabe kann sowohl über die Publisher-ID, als auch über den entsprechenden Anker vorgenommen werden. Das Feld "hide" (Boolean) steuert, ob der Publisher sichtbar sein soll oder nicht.
<publisher publisher-id="pub1" hide="true"/>
<publisher publisher-id="pub2" hide="false"/>
<publisher anchor="preview" hide="false"/>

Artikelpools

Um einen Artikelpool zu importieren, muss eine XML-Datei erstellt werden, die das Root-Element "articlepool" verwendet. Attribute des Tags erlauben die Beschreibung des Pools. Alle Angaben neben Systemwerten werden innerhalb eines Resource-Tags vorgenommen. Hier gelten die selben Bedingungen wie bei Resource-Artikeln.

Attribute des XML-Elements "articlepool"

anchor
Anker des Pools. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
name
Name des Pools (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).
directory
Angabe des Arbeitsverzeichnisses dieses Artikelpools (String).

Hier ein vollständiges Beispiel eines Artikelpools:

<!--
Einen Artikelpool anlegen:

<articlepool    legt einen Artikel an

anchor          Anker des Pools (dient beim wiederholten Import als Primärschlüssel
                und als Parent für die Artikel)
name            Name des Pools
parent          Anker des Parentpools (Angabe muss über einen Anker erfolgen)
directory       Angabe des Arbeitsverzeichnisses dieses Artikelpools
-->

<articlepool
  anchor="import.pool.1"
  name="Pool für importierte Artikel (Ebene 1)"
  parent="gui.informations"
  directory="/level_1">

    <!--
      Sämtliche META-Daten eines Pools werden vom System implizit in einer
      Resource gespeichert
    -->
    <resource>
        <!--
          einfache Textfelder, in denen die Konfiguration der Artikelpools
          steht (auch hier über die Angabe von Ankern gelöst)
        -->

        <!--
          Angabe des Containers:
          "is5:gui.container.infosite.standard" oder
          "is5:gui.container.infosite.media" möglich
        -->
        <text name="container" anchor="is5:gui.container.infosite.standard"></text>

        <!--
          Angabe des Template-Pools, für die Auswahl von Templates in diesem Pool:
          Ein Anker aus dem eigenem System
        -->
        <text name="editorTemplatePool" anchor="standard.container.editing"></text>

        <!--
          Angabe des Templates für die Artikelanmeldung:
          "is5:gui.container.infosite.standard.all"
          erlaubt beispielsweise das Anlegen aller Artikeltypen
        -->
        <text
          name="registrationTemplate"
          anchor="is5:gui.container.infosite.standard.all">
        </text>

        <!-- beliebige weitere Eingabefelder -->
        <text name="sp_rubric">demo</text>
        <systemlink name="sp_parentLink" anchor="article.rubric"/>
    </resource>
</articlepool>

Angaben zur Konfiguration

Damit ein Artikelpool in InfoSite 5 so funktioniert wie ein manuell ersteller Pool, müssen bestimmte Felder mit entsprechenden META-Daten angelegt werden. Hierzu zählen im Besonderen die Angaben zum Feld "container" und "registration_template". Die Felder "editor_template_pool" und "editor_template" verweisen auf das ausgewählte Template bzw. den Templatepool, der dem Redakteur zur Verfügung steht.

<!--
Angabe des Containers:
  is5:gui.container.infosite.standard
  is5:gui.container.infosite.media
-->
<text name="container" anchor="is5:gui.container.infosite.standard"></text>

<!--
Angabe des Template-Pools, für die Auswahl von Templates in diesem Pool:
  Ein Anker aus dem eigenem System
-->
<text name="editorTemplatePool" anchor="standard.container.editing"></text>

<!--
Angabe des Templates für die Artikelanmeldung:
  is5:gui.container.infosite.standard.all
  (erlaubt z.B. das Anlegen aller Artikeltypen)
-->
<text
  name="registrationTemplate"
  anchor="is5:gui.container.infosite.standard.all">
</text>

Standard InfoSite Container

Der "Standard InfoSite Container" wird i.d.R. für alle normalen Artikelpools verwandt. Hierüber ist ein Redakteur in der Lage, Artikel jeden Typs anzulegen. Die Konfiguration der möglichen Artikeltypen wird über das Feld "registration_template" vorgenommen. Dies erfolgt in InfoSite über eine Select-Box. Im XML-Dokument müssen diese Werte manuell über Anker eingestellt werden. Folgende Anker sind dafür vorhanden:

"alle Artikel-Typen"
gui.container.infosite.standard.all
"nur Medien anlegen"
gui.container.infosite.standard.media
"nur Ressourcen anlegen"
gui.container.infosite.standard.resource
"nur Seiten anlegen"
gui.container.infosite.standard.page
"nur Seiten ohne Namensvergabe anlegen"
gui.container.infosite.standard.pageAutoName
"nur Seiten und Medien anlegen"
gui.container.infosite.standard.pageAndMedia
"nur Seiten und Ressourcen anlegen"
gui.container.infosite.standard.pageAndResource

Standard Medien Container

Der "Standard Medien Container" wird für reine Medienpools verwandt. Hier sind neben der Angabe Container keine weiteren Angaben notwendig.

Nutzer-, Template- und Rollenpools

Um einen Nutzer-, Rollen oder Templatepool zu importieren, muss eine XML-Datei erstellt werden, die das entsprechende Root-Element, also "userpool", "templatepool" oder "rolepool" verwendet. Attribute des Tags erlauben die Beschreibung des Pools. Alle Angaben neben Systemwerten werden innerhalb eines Resource-Tags vorgenommen. Hier gelten die selben Bedingungen wie bei Resource-Artikeln.

Attribute der XML-Elemente "userpool", "templatepool", "rolepool"

anchor
Anker des Pools. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
name
Name des Pools (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).