holger: ausgabe einer schleife

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

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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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

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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. 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

        --
        Surftip: kennen Sie schon Pipolino's Clowntheater?
        http://www.clowntheater-pipolino.net/