Elessedil: Xpath-Fehler???

Hallo zusammen,
ich hab hier ein Problem und hoffe, dass mir jemand helfen kann.
Hier Ausschnitt aus XML-Datei:

<zubereitung gesamtdauer="00:20" vorbereitungszeit="00:10">
    <zeile aufzählungszeichen="true">
      <text />
      <zutat ref_zutat="a">Karottensaft</zutat>
    </zeile>
    <zeile>
      <text>, </text>
      <zutat ref_zutat="b">Apfelsaft</zutat>
    </zeile>
    <zeile>
      <text>, </text>
      <zutat ref_zutat="c">Orangensaft</zutat>
    </zeile>
    <zeile>
      <text> mischen und einen Schuss </text>
      <zutat ref_zutat="d">Olivenöl</zutat>
    </zeile>
    <zeile neueZeile="true">
      <text> hinzugeben</text>
    </zeile>
    <zeile neueZeile="true">
      <text>und anschliessend das Getränk geniessen</text>
    </zeile>
    <zeile aufzählungszeichen="true" neueZeile="true">
      <text>:)).</text>
    </zeile> .......

ich möchte jetzt mit meinem XSL-Stylesheet die Ausgabe schön formatieren, und zwar möchte ich feststellen, ob das vorherige Zeile-Element das Attribut neueZeile besitzt. Sollte dies der Fall sein soll eine neue zeile erzeugt werden. Hier Ausschnitt aus XSL-Datei:

<xsl:if test="zubereitung/zeile">
  <tr>
     <td align="left" colspan="2">

<xsl:for-each select="zubereitung/zeile">

xsl:choose

<xsl:when test="preceding-sibling::zeile[count(*)-1]/@neueZeile">
<tr>
   <td><xsl:if test="@aufzählungszeichen">xsl:text●   </xsl:text></xsl:if><xsl:value-of select="text"/><xsl:if test="zutat"><xsl:value-of select="zutat"/></xsl:if></td>
</tr>
</xsl:when>

xsl:otherwise
        <xsl:if test="@aufzählungszeichen">xsl:text●   </xsl:text></xsl:if><xsl:value-of select="text"/><xsl:if test="zutat"><xsl:value-of select="zutat"/></xsl:if>
       </xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</td>
</tr>
</xsl:if>

leider klappt das net:(((
hoffe ihr könnt mir helfen

  1. Hallo,

    ich hab hier ein Problem und hoffe, dass mir jemand helfen kann.
    Hier Ausschnitt aus XML-Datei:

    ich möchte jetzt mit meinem XSL-Stylesheet die Ausgabe schön formatieren, und zwar möchte ich feststellen, ob das vorherige Zeile-Element das Attribut neueZeile besitzt. Sollte dies der Fall sein soll eine neue zeile erzeugt werden. Hier Ausschnitt aus XSL-Datei:

    <xsl:if test="zubereitung/zeile">
      <tr>
         <td align="left" colspan="2">

    <xsl:for-each select="zubereitung/zeile">

    xsl:choose

    <xsl:when test="preceding-sibling::zeile[count(*)-1]/@neueZeile">
    <tr>
       <td>

    Das ist schon von HTML her so nicht möglich, denn eine Ausgabe würde so etwas erzeugen:

    <tr>
       <td align="left" colspan="2">
          <tr>
             <td>

    </td>
          </tr>
       </td>
    </tr>

    So genau verstehe ich nicht was du eigentlich errreichen möchtest. Aber vor allem nicht, warum du eine Tabelle verwendest, wenn es sich hier eher eine Liste eignen würde. Und wenn ich mir so ansehe, was dann am Ende ein Code jetzt da rauskommen würde, bin ich der Meinung, dass das alles andere als "schön" anzusehen sein wird. Aber wie gesagt, ich verstehe nicht ganz welche Ausgabe du erreichen willst.
    Wenn du jetzt noch ein Beispiel für deine Wunschausgabe hier postest, können wir dir aber sicherlich weiterhelfen.

    Grüße
    Thomas

    <xsl:if test="@aufzählungszeichen">xsl:text●   </xsl:text></xsl:if><xsl:value-of select="text"/><xsl:if test="zutat"><xsl:value-of select="zutat"/></xsl:if></td>

    </tr>
    </xsl:when>

    xsl:otherwise
            <xsl:if test="@aufzählungszeichen">xsl:text●   </xsl:text></xsl:if><xsl:value-of select="text"/><xsl:if test="zutat"><xsl:value-of select="zutat"/></xsl:if>
           </xsl:otherwise>
    </xsl:choose>
    </xsl:for-each>
    </td>
    </tr>
    </xsl:if>

    leider klappt das net:(((
    hoffe ihr könnt mir helfen