HaCkAttaCk2001
Grünschnabel
Hi.
Seit 21 Uhr bin ich am tüfteln, wie ich 2 meiner XML-Dateien verknüpfen kann, um dann später per XSL-FO ein PDF auszugeben.
Die Angelegenheit erscheint sooo simpel: in einer XML sind Eingaben mit Kategorien als Nummer, in einer anderen XML sind die Nummern und deren zugehöriger Name. Die Nummer soll in der ausgegebenen PDF in den Name umtransformiert werden.
Hier mal die stark zusammengekürzten Dateien zum Verständnis:
Objekte.xml
Kategorien.xml
In der XSL-Datei gebe ich ein Standard-A4-Format aus und die Übersicht der Zellen.
pdf.xsl
Ich suche praktisch die Entsprechung eines SELECT Bezeichnung FROM Kategorien.xml WHERE nummer = kategorie
Dass das mit dem zweiten Attribut nicht funktioniert, habe ich bereits gemerkt, es wird wohl eine Variable nötig sein, als [@kategorie=$nummer]. Nur wie fülle ich diese korrekt?
Noch vor <xsl:template match="Objekte"> habe ich folgendes angefangen. Doch es ist absolut nicht korrekt, da ich mich nicht in die Syntax hineindenken kann.
Ich hoffe, ihr könnt mir helfen.
Seit 21 Uhr bin ich am tüfteln, wie ich 2 meiner XML-Dateien verknüpfen kann, um dann später per XSL-FO ein PDF auszugeben.
Die Angelegenheit erscheint sooo simpel: in einer XML sind Eingaben mit Kategorien als Nummer, in einer anderen XML sind die Nummern und deren zugehöriger Name. Die Nummer soll in der ausgegebenen PDF in den Name umtransformiert werden.
Hier mal die stark zusammengekürzten Dateien zum Verständnis:
Objekte.xml
Code:
<Objekte>
<Objekt kategorie="1.3">
<Bezeichnung>Objekt 1</Bezeichnung>
</Objekt>
</Objekte>
Kategorien.xml
Code:
<Kategorien>
<Kategorie nummer="1.3">Bauteil</Kategorie>
</Kategorien>
In der XSL-Datei gebe ich ein Standard-A4-Format aus und die Übersicht der Zellen.
pdf.xsl
Code:
...
<xsl:template match="Objekte">
...
<fo:table-body>
<xsl:apply-templates>
</fo:table-body>
...
</xsl:template>
<xsl:template match="Objekt">
...
<fo:table-cell>
<fo:block>
<xsl:value-of select="Bezeichnung"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="document('Kategorien.xml')/Kategorien/Kategorie[@kategorie=@nummer]"/>
</fo:block>
</fo:table-cell>
...
Ich suche praktisch die Entsprechung eines SELECT Bezeichnung FROM Kategorien.xml WHERE nummer = kategorie
Dass das mit dem zweiten Attribut nicht funktioniert, habe ich bereits gemerkt, es wird wohl eine Variable nötig sein, als [@kategorie=$nummer]. Nur wie fülle ich diese korrekt?
Noch vor <xsl:template match="Objekte"> habe ich folgendes angefangen. Doch es ist absolut nicht korrekt, da ich mich nicht in die Syntax hineindenken kann.
Code:
<xsl:template match="/">
<xsl:for-each select="document('Kategorien.xml')/Kategorien/Kategorie">
<xsl:variable name="@nr"><!-- Name der Kategorie und Zuordnung zur Ziffer... wie? --></xsl:variable>
</xsl:for-each>
</xsl:template>
Ich hoffe, ihr könnt mir helfen.
Zuletzt bearbeitet: