2017-09-04 3 views
0

Ich habe eine XML, wo ich bestimmte Elemente von allen Knoten auswählen muss. Die Struktur der eigentlichen XML sieht aus wie this-xslt zum Validieren eines Elementattributs eines Knotens oder nicht

<host> 
<node> 
    <type>fruit1</type> 
    <value>10</value> 
</node> 
<node> 
    <type>fruit2</type> 
    <value>20</value> 
</node> 
<node> 
    <type>fruit3</type> 
    <value xsi:type="valueList"> 
     <listValues> 
     <value> 
      <value>30</value> 
      <code>abc</code> 
     </value> 
     </listValues> 
    </value> 
</node> 
<node> 
    <type>fruit4</type> 
    <value>40</value> 
</node> 
<node> 
    <type>fruit5</type> 
    <value>50</value> 
</node> 
</host> 

ich die Elemente wählen <type> und <value> von allen Knoten in einem Tabellenformat anzeigen. Der 3. Knoten hat Listenwerte für das Element <value> und für dieses Element sollte der Wert 'true' sein. Die erwartete Ausgabe von XML ist wie folgt -

<html> 
<body> 
<table border="1"> 
<tr> 
    <td>fruit1</td> 
    <td>10</td> 
</tr> 
<tr> 
    <td>fruit2</td> 
    <td>20</td> 
</tr> 
<tr> 
    <td>fruit3</td> 
    <td>true</td> 
</tr> 
<tr> 
    <td>fruit4</td> 
    <td>40</td> 
</tr> 
<tr> 
    <td>fruit5</td> 
    <td>50</td> 
</tr> 
</table> 
</body> 
</html> 

Die XSLT geschrieben ist als folgt-

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
<html> 
<body> 
<table border="1"> 
    <xsl:for-each select="host/node"> 
    <tr> 
     <td><xsl:value-of select="type" /></td> 
     <xsl:choose> 
     <xsl:when test = "//node/value/listValues/value/value != null"> 
      <td>true</td> 
     </xsl:when> 
     <xsl:otherwise> 
      <td><xsl:value-of select="value" /></td> 
     </xsl:otherwise> 
     </xsl:choose> 
    </tr> 
    </xsl:for-each> 
</table> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

Aber ich bin nicht in der Lage die gewünschte XML-Ausgabeformat zu erhalten. Jede Hilfe wäre ein großes Plus.

Antwort

1

ändern

<xsl:when test = "//node/value/listValues/value/value != null"> 

zu

<xsl:when test = "value/listValues/value/value != ''"> 
+0

Hallo Rupesh, es arbeitet danken jetzt Sie. Gibt es eine Möglichkeit, den relativen Pfad für zu skripten, wenn wir mehrere Knoten wie Knoten 3 in der angegebenen XML haben? –

+0

können Sie Als relativen Pfad verwenden – Rupesh

Verwandte Themen