Hi Leute,
hab mal wieder ein Problem, und zwar:
Mittels einer XSL baue ich mir aus mehreren XML-Dateien eine FO, bzw PDF datei.
Meine Frage ist jetzt wie kann ich Mittels XPath auf ein Element in zugreifen was aus einer anderen XML stammt.
Also ich hab eine Xml in der alle Verweise auf die benutzten XMLs sind. Sieht so aus:
Einbinden tue ich das ganze mittels der document Funktion, in etwa so:
Es geht darum zu ueberpruefen ob die Kapitelueberschriftim vorhergehenden XML-dokument die selbe war oder nicht und daran zu entscheiden ob sie geschrieben wird oder nicht.
Funktioniert alles bis auf diese Zeile:
Hat jemand ne Ahnung wie Document() behandelt wird? Befinden sich dann alle XML-Dokumente in einem Baum oder nicht? Oder kann man sonst irgendwie auf das vorhergehende Dokument zugreifen?
Helt mir bitte, bastle schon ewig dran rum.
mfg
Marvin
hab mal wieder ein Problem, und zwar:
Mittels einer XSL baue ich mir aus mehreren XML-Dateien eine FO, bzw PDF datei.
Meine Frage ist jetzt wie kann ich Mittels XPath auf ein Element in zugreifen was aus einer anderen XML stammt.
Also ich hab eine Xml in der alle Verweise auf die benutzten XMLs sind. Sieht so aus:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document SYSTEM "../sys/m.dtd">
<document xmlns:xinclude="http://www.w3.org/1999/XML/xinclude">
<xinclude:include href="..\content\1_001_006_neu.xml" />
<xinclude:include href="..\content\2_112_020_neu.xml" />
.
.
.
</document>
Einbinden tue ich das ganze mittels der document Funktion, in etwa so:
Code:
<xsl:template match="document">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="xinclude:include">
<xsl:apply-templates select="document(@href)"/>
</xsl:template>
<xsl:template match="Seite">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="Kapitelueberschrift">
<xsl:variable name="lastKap" select="preceding::xinclude:include/Seite/Kapitelueberschrift[last()]/text()"/>
<xsl:choose>
<xsl:when test="text()=$lastKap">
</xsl:when>
<xsl:otherwise>
<fo:block font-size="22pt" space-before="1em">
<xsl:value-of select="text()"/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Es geht darum zu ueberpruefen ob die Kapitelueberschriftim vorhergehenden XML-dokument die selbe war oder nicht und daran zu entscheiden ob sie geschrieben wird oder nicht.
Funktioniert alles bis auf diese Zeile:
Code:
<xsl:variable name="lastKap" select="preceding::xinclude:include/Seite/Kapitelueberschrift[last()]/text()"/>
Hat jemand ne Ahnung wie Document() behandelt wird? Befinden sich dann alle XML-Dokumente in einem Baum oder nicht? Oder kann man sonst irgendwie auf das vorhergehende Dokument zugreifen?
Helt mir bitte, bastle schon ewig dran rum.
mfg
Marvin