# XPath Problem im Zusammenhang mit document()



## marvin (27. Sep 2005)

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:


```
<?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: 


```
<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:


```
<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


----------



## Gast (28. Sep 2005)

Das geht nicht, XPath ist für sowas nicht geeignet. Nimm lieber JBoss dafür.


----------



## Bleiglanz (28. Sep 2005)

versteh ich nicht

das xinclude sollte doch vollkkommen transparent sein, d.h. verschwinden

und im xsl dann so arbeiten, als ob der includete zeugs genau so im Dokument stehen würde??


----------

