XIP Package Import

Aus SiteparkWiki
Version vom 9. Juli 2008, 10:18 Uhr von Ole (Diskussion | Beiträge) (Die Seite wurde neu angelegt: Der Import von Daten via XML ist neben dem SOAP-Import in einer deutlich komplexeren Form über eine native Java-Schnittstelle möglich. Hierüber können zur Zeit Date...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Der Import von Daten via XML ist neben dem SOAP-Import in einer deutlich komplexeren Form über eine native Java-Schnittstelle möglich. Hierüber können zur Zeit Daten von

  • Artikeln (Eingene Seiten, Medien, Resourcen)
  • Artikelpools (inkl. Metadaten)

angelegt oder aktuallisiert werden. Eine Verknüpfung mit anderen Daten ist hierbei vollständig über Anker realisiert. Dadurch sind sowohl Beziehungen zu neuen, wie auch vorhandenen Daten möglich. Jedes Element muß für den Import über einen eindeutigen Anker verfügen. Dieser dient als Primärschlüssel. Bei einem nochmaligen Import wird das entsprechende Element hierüber identifiziert und aktuallisiert. Auch Verknüpfungen mit anderen Elementen für z.B. Systemlinks erfolgen über den Anker. Auch die Angabe des "parent" für Elemente, wie auch die Beziehung zum Template erfolgt über einen Anker.

Der Import kann beliebig oft ausgeführt werden. Ist ein Element bereits vorhanden, so werden die in XML beschriebenen Felder ersetzt bzw. ergänzt. Auf diese Weise können sich auch wechselseitige Beziehungen zwischen Elementen und Pools importieren.

Importiert werden können:

  • Einzelne XML-Dateien
Ein XML-Dokument welches sich genau auf einen Artikel bzw. -pool bezieht kann einzeln importiert werden
  • Eine Ordnerstruktur von XML-Dateien
Eine verschachtelte Ordnerstruktur mit XML-Daten kann verwendet werden, um mehrere XML-Dokumente zu importieren. Dabei kann die Verschachtelung verwendet werden um auf die Reihenfolge des Imports Einfluss zu nehmen. Artikelpools sollten i.d.R. vor Artikeln, die in diesem neuen Pool gespeichert werden sollen, importiert werden. Die Verschachtelung der XML-Dokumente hat dabei keinen direkten Einfluß auf Beziehungen im IES. Diese Beziehungen werden ausschließlich über Anker realisiert. Aber dadurch, dass ein Pool oder Element in einem Ordner "oberhalb" eines anderen Elementes liegt, wird dieses erst importiert. Zum ersten Elemente kann das zweite dann eine Beziehung über den Anker aufbauen.
  • XIP-Dateien
XIP Dateien sind gezippte XML-Strukturen (siehe oben). Der Vorteil liegt darin, dass bei einem Upload nur eine Datei angegeben werden muß. Dieses Format wird in Zukunft noch weiter ausgebaut.

Import

Für den Import wird das Java-Commandline-Tool "iespkg" ausgeführt. es werden folgende Parameter benötigt:

usage: iespkg import <login> <password> <client> <pkg-file>
  • import
Das eigentliche Kommando dieses Tools. Zur Zeit ist hier nur "import" möglich.
  • login
Account, mit dem die Daten angelegt werden sollen. Beachten Sie bitte, dass ausreichend Rechte für den Import gegeben sind.
  • password
Das Passwort des Accounts.
  • client
Der Namespace / Anker des Mandanten, in den die Daten importiert werden sollen. In diesem Mandanten muss auch der Nutzer des Imports konfiguriert sein.
  • pkg-file
Die XML-Datei bzw. der Ordner oder das XIP-Paket mit den XML-Dateien, in denen die Informationen für den Import stehen.

Alternativ kann der Import in einer Propertydatei konfguriert werden. Damit lassen sich auch Einstellungen zum Loggin vornehmen. Der Aufruf ist dann nur noch der folgende:

usage: iespkg <property-file> <pkg-file>

Artikel

Im Gegensatz zum SOAP-Import ist hier der Import von allen Medientypen möglich. Für die drei Artikeltypen steht jeweils ein eigener XML-Tag zur Verfügung, über den die Daten angelegt bzw. aktuallisiert 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 Attribute 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 i.d.R. vom Newsletter o.ä. 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 eingegebene 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, so wird dieses Feld nicht importiert.
      <systemlink name="sp_link" anchor="article.x"/>
      <link name="sp_simplelink" anchor="article.y"/>
</soource>

*;<code>list und item</code>
: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.
<source lang="xml">
      <!-- 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>
<source>

*;<code>binary</code>
: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 relative oder absoluten Pfades ebenso wie die Angabe einer externen URL möglich:
<source lang="xml">
      <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 der 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>

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 Tags 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 Artikel (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 Tags 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 Artikel (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 Artikel (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>