HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - Problem mit XPath und document()

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Problem mit XPath und document()

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   XSL, XSLT, XPath, XLink, XPointer, X...
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
marvin
Gast





BeitragVerfasst am: 27.09.2005 11:25:55    Titel: Problem mit XPath und document() Antworten mit Zitat

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>


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>



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
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   XSL, XSLT, XPath, XLink, XPointer, X...
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.