Mindgap: Zusammenführen mehrere XML Dokumente in ein HTML via XSLT

Hallo,

ich stehe vor der Aufgabe, ein XSLT Stylesheet für die Transformation mehrerer XML Dokumente in eine HTML Datei zu entwickeln. Genaugenommen handelt es sich um ein Newsletter, der mit unterschiedlichen Artikeln gefüllt werden soll.

Die Frage ist jetzt, wie gehe ich am besten an die XSLT Geschichte ran? Eine normale Transformation stellt für mich kein Problem dar. Doch bei dieser Aufgabe habe ich das Problem, dass ich

  1. mehrere XML Dokumente (Artikel) vorliegen habe

  2. das diese in unterschiedlichen Sektionen des Newsletters publiziert werden müssen.

Wer kann mir helfen?

Grüße,
Mindgap

  1. Hallo!

    1. mehrere XML Dokumente (Artikel) vorliegen habe

    2. das diese in unterschiedlichen Sektionen des Newsletters publiziert werden müssen.

    Mit der XPath-Funktion document()  solltest Du Dein Vorhaben umsetzen können.

    André Laugks

    --
    Die Frau geht, die Hilti bleibt!
  2. Hallo,

    ich stehe vor der Aufgabe, ein XSLT Stylesheet für die Transformation mehrerer XML Dokumente in eine HTML Datei zu entwickeln. Genaugenommen handelt es sich um ein Newsletter, der mit unterschiedlichen Artikeln gefüllt werden soll.

    Die Frage ist jetzt, wie gehe ich am besten an die XSLT Geschichte ran? Eine normale Transformation stellt für mich kein Problem dar. Doch bei dieser Aufgabe habe ich das Problem, dass ich

    1. mehrere XML Dokumente (Artikel) vorliegen habe

    Es empfiehlt sich in so einenm Fall ein "Sammel-XML" zu erstellen, in der nur diese Artikel "verlinkt" sind:

    <dokumente>
      <artikel>http://www.exaple.org/artikel1.xml</artikel>
      ...
      <artikel>http://www.exaple.org/artikel99.xml</artikel>
    </dokumente>

    Dann die XSL-Transformation auf dieses Sammeldokument anzuwenden, dabei, wie schon André sagte, mit der document()-Funktion auf die einzelnen Artikel zugreifen.

    1. das diese in unterschiedlichen Sektionen des Newsletters publiziert werden müssen.

    Den Satz verstehe ich nicht.

    Grüße
    Thomas

    1. Hallo ihr beiden, vielen Dank erstmal für eure Antworten!

      1. mehrere XML Dokumente (Artikel) vorliegen habe

      Es empfiehlt sich in so einenm Fall ein "Sammel-XML" zu erstellen, in der nur diese Artikel "verlinkt" sind:

      <dokumente>
        <artikel>http://www.exaple.org/artikel1.xml</artikel>
        ...
        <artikel>http://www.exaple.org/artikel99.xml</artikel>
      </dokumente>

      Dann die XSL-Transformation auf dieses Sammeldokument anzuwenden, dabei, wie schon André sagte, mit der document()-Funktion auf die einzelnen Artikel zugreifen.

      Das mit der Sammel-XML leuchtet mir ein. Ist es denn auch möglich, die URL´s der Artikel automatisch zu generieren? Soll bedeuten, das ich nicht jedes mal lust habe, die gesamte Sammel-XML von Hand neu zu erstellen.

      1. das diese in unterschiedlichen Sektionen des Newsletters publiziert werden müssen.

      Den Satz verstehe ich nicht.

      Sorry, da hab ich mich anscheinend etwas missverständlich ausgedrückt. Ich meinte damit, dass es mehrere Themengebiete gibt, zu denen die Artikel zugeordnet werden müssen. Ich glaube zu wissen, dass es da so eine "Gruppieren" funktion in XSLT 2.0 gibt.

      1. Tach mindgap,

        Das mit der Sammel-XML leuchtet mir ein. Ist es denn auch möglich, die URL´s der Artikel automatisch zu generieren? Soll bedeuten, das ich nicht jedes mal lust habe, die gesamte Sammel-XML von Hand neu zu erstellen.

        Da im Posting auf XSLT 2.0 Bezug genommen wird, wäre die neue XSLT-Funktion unparsed-text() interessant. Schreibe die relevanten Dateinamen etwa mittels

        dir *.xml /b > dateinamen.txt

        in die angegebene Datei und lies diese dann mit unparsed-text() ein und splitte die einzelnen Namen über fn:tokenize() an den Zeilenumbrüchen und erzeuge damit die gesuchte XML-Struktur.

        Man liest sich,
        svg4you

      2. Hallo,

        Das mit der Sammel-XML leuchtet mir ein. Ist es denn auch möglich, die URL´s der Artikel automatisch zu generieren? Soll bedeuten, das ich nicht jedes mal lust habe, die gesamte Sammel-XML von Hand neu zu erstellen.

        Natürlich geht das, aber wie du das mahst ist dir überlassen, ob mit der schon beschriebenen Methode, oder ob du das XML mit PHP/APS/etc. direkt als XML am Server generierst. Kommt ganz auf deine eigene Anforderungen und Möglichkeiten an.

        1. das diese in unterschiedlichen Sektionen des Newsletters publiziert werden müssen.

        Den Satz verstehe ich nicht.

        Sorry, da hab ich mich anscheinend etwas missverständlich ausgedrückt. Ich meinte damit, dass es mehrere Themengebiete gibt, zu denen die Artikel zugeordnet werden müssen. Ich glaube zu wissen, dass es da so eine "Gruppieren" funktion in XSLT 2.0 gibt.

        Verstehe, gruppieren kannst du auch im XSLT 1, es kommt letzlich darauf an, wie und was dann letzlich in der Ausgabe stehen muss. Rein theoretisch kann man auch nicht viel mehr dazu sagen.

        Grüße
        Thomas