2016-12-14 4 views
0

Ich versuche, ein HTML aus dem folgenden XML zu generieren.Wie man Filter ausgibt Tags in xslt

Ich schreibe eine xsl-Datei für die Generierung der folgenden Tabelle.

tag  subtag action 
class    update 
section    update 
ravi  skill  update 
gauri    insert 

Meine xsl-Datei sieht so aus.

<xsl:template match="/*"> 
    <h2>My CD Collection</h2> 
    <table> 
     <tr> 
     <th>tag</th> 
     <th>subtag</th> 
     <th>action</th> 
     </tr> 
    <xsl:for-each select="//*"> 
     <xsl:choose> 
     <xsl:when test="@Action"> 
     <tr> 
     <td><xsl:value-of select="local-name()"/></td> 
     <td></td> 
     <td><xsl:value-of select="@Action"/></td> 
     </tr> 
     </xsl:when> 
     <xsl:otherwise>  
     </xsl:otherwise> 
     </xsl:choose> 
    </xsl:for-each> 
</table> 
</xsl:template> 

Aber das erzeugt die folgende Tabelle.

tag  subtag action 
class  update   
section update   
skill  update   
student insert   

Wie kann ich die Student-Tags separat behandeln. Bitte helfen Sie. Ich bin neu in XSLT.

+1

Ihre XML nicht wohlgeformt ist, wie Sie '

haben B'. Weder ist Ihr XSLT, als Sie eine schließende '' ohne eine entsprechende öffnende Marke. Außerdem fehlt das schließende Tag für das ''. Können Sie diese korrigieren, damit wir Ihr Problem neu erstellen können? Vielen Dank! –

+0

@TimC Danke, dass Sie diese hervorgehoben haben. Entschuldigen Sie die Unannehmlichkeiten. Ich hoffe jetzt, dass die XSL in Ordnung ist, um das Problem neu zu erstellen. –

Antwort

0

diese Vorlage Versuchen Sie stattdessen als Starter

<xsl:template match="/*"> 
<table> 
    <tr> 
     <th>tag</th> 
     <th>subtag</th> 
     <th>action</th> 
    </tr> 
    <xsl:for-each select="*"> 
     <tr> 
      <td> 
       <xsl:choose> 
       <xsl:when test="name"><xsl:value-of select="name"/></xsl:when> 
       <xsl:otherwise><xsl:value-of select="local-name()"/></xsl:otherwise> 
       </xsl:choose> 
      </td> 
      <xsl:choose> 
       <xsl:when test="@action"> 
       <td></td> 
       <td><xsl:value-of select="@action"/></td> 
       </xsl:when> 
       <xsl:otherwise> 
       <td><xsl:value-of select="local-name(*[@action])"/></td> 
       <td><xsl:value-of select="*/@action"/></td> 
       </xsl:otherwise> 
      </xsl:choose> 
     </tr> 
    </xsl:for-each> 
    </table> 
</xsl:template> 
+0

Zunächst einmal danke für die Lösung. Es funktioniert gut. Aber wie können wir Fälle behandeln, bei denen mehrere Änderungen für ein Tag vorliegen? –

+0

Es ist schwer zu sagen, weil Sie dies in Ihrer Frage nicht gezeigt haben, also weiß ich nicht, was Sie erwarten, dass die Ausgabe in diesem Fall ist. Möglicherweise müssen Sie eine neue Frage stellen. Vielen Dank! –

+0

vielen Dank für die Hilfe. Ich werde eine neue Frage stellen. –