DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: XML Beginner | Thema: Problem mit XPath bzw document() | Von: G. Guest ( 27.09.2005 12:24)

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:

[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>
[/code]

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>
<!-- wenn die Kapitelueberschrift schon im vorhergehenden Dokument vorkam soll er sie nicht schreiben-->

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

[/code]

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()"/>
[/code]

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



Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Building und Connecting Know-how

© Copyright 2003 ppedv AG