ausgabe einer schleife
holger
- xsl
0 Cheatah0 holger0 Cheatah0 Thomas J.S.
hallo alle zusammen,
ich habe ein problem mit einer xsl-transformation.
mittels dreier schleifen will ich eine xml-datei in eine html-liste überführen. meine xml-datei sieht so aus (kleiner ausschnitt):
<?xml version="1.0" encoding="iso-8859-1"?>
<katalog name="Tools">
<kapitel nummer="1" name="Schraubwerkzeug">
<hersteller name="BMW">
<file nummer="4">TOOLS_MORE_S04.pdf</file>
<file nummer="5">TOOLS_MORE_S05.pdf</file>
<file nummer="6">TOOLS_MORE_S06.pdf</file>
<file nummer="7">TOOLS_MORE_S07.pdf</file>
<file nummer="8">TOOLS_MORE_S08.pdf</file>
<file nummer="9">TOOLS_MORE_S09.pdf</file>
</hersteller>
<hersteller name="Mercedes">
<file nummer="10">TOOLS_MORE_S10.pdf</file>
<file nummer="11">TOOLS_MORE_S11.pdf</file>
<file nummer="12">TOOLS_MORE_S12.pdf</file>
<file nummer="13">TOOLS_MORE_S13.pdf</file>
<file nummer="14">TOOLS_MORE_S14.pdf</file>
<file nummer="15">TOOLS_MORE_S15.pdf</file>
</hersteller>
<hersteller name="VW">
<file nummer="16">TOOLS_MORE_S16.pdf</file>
</hersteller>
</kapitel>
soweit eigentlich eine ganz einfache datei, finde ich.
zum transformieren habe ich mir folgendes xsl gebaut:
<xsl:template match="kapitel">
<ul>
<xsl:for-each select=".">
<li>
Kapitel <xsl:value-of select="@nummer" />:
<b><xsl:value-of select="@name" /></b>
</li>
<ul>
<xsl:for-each select="./hersteller">
<li><xsl:value-of select="@name" /></li>
<ul>
<xsl:for-each select="./hersteller/file">
<li>
<xsl:value-of select="@nummer" />
<xsl:value-of select="file" />
</li>
</xsl:for-each>
</ul>
</xsl:for-each>
</ul>
</xsl:for-each>
</ul>
</xsl:template>
das klappt auch ganz gut, aber wenn ich mir in einer schleife die dateinamen ausgeben lassen will, passiert da ums verrecken nicht:
<xsl:for-each select="./hersteller/file">
<li> <xsl:value-of select="@nummer" /> <xsl:value-of select="file" />
</li>
</xsl:for-each>
probier da jetzt schon den ganzen morgen dran rum, aber entweder bin ich zu dämlich oder ich stolpere über irgendwas...?
hat da jemand eine idee?
viele grüße,
holger
Hi,
<xsl:for-each select="./hersteller/file">
<li>[...]<xsl:value-of select="file" />
probier da jetzt schon den ganzen morgen dran rum, aber entweder bin ich zu dämlich oder ich stolpere über irgendwas...?
nun, innerhalb Deiner <file>-Elemente befindet sich halt kein <file>-Element, welches selektiert werden könnte.
Cheatah
hi cheatah,
nun, innerhalb Deiner <file>-Elemente befindet sich halt kein <file>-Element, welches selektiert werden könnte.
steh ich jetzt auf dem schlauch?
aus der xml-datei:
<file nummer="4">TOOLS_MORE_S04.pdf</file>
da muss ich doch über die schleife an das "TOOLS_MORE_S04.pdf" rankommen und es ausgeben lassen, oder?!
grüße,
holger
Hi,
nun, innerhalb Deiner <file>-Elemente befindet sich halt kein <file>-Element, welches selektiert werden könnte.
steh ich jetzt auf dem schlauch?
aus der xml-datei:
<file nummer="4">TOOLS_MORE_S04.pdf</file>
ja. Wo innerhalb Deines <file nummer="4"> kommt ein <file>-Element vor?
da muss ich doch über die schleife an das "TOOLS_MORE_S04.pdf" rankommen und es ausgeben lassen, oder?!
Sicher. Nur halt nicht über die Selektierung eines nicht vorhandenen inneren Elements. Überlege Dir, was Du da überhaupt vorliegen hast, und suche nach entsprechenden XSLT- bzw. XPath-Möglichkeiten.
Cheatah
Hallo,
steh ich jetzt auf dem schlauch?
Ja.
Du bist mit:
<xsl:for-each select="./hersteller/file">
bereits _im_ <file>
wenn du jetzt noch nach <xsl:value-of select="file" /> sucht, siehr es so aus:
./hersteller/file/file und das gibt es nicht, wie Cheatch schon zweimal betonte.
<xsl:for-each select="./hersteller/file">
<li>
<xsl:value-of select="@nummer" />
<xsl:value-of select="." />
</li>
</xsl:for-each>
Grüße
Thomas