我有一个XML,我需要从所有节点中选择特定元素。实际XML的结构如下所示 -
<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>
我必须以表格格式从所有节点中选择元素<type>
和<value>
。第3个节点具有元素<value>
的列表值,对于此元素,该值应为&#39; true&#39;。预期的输出XML如下 -
<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>
编写的XSLT如下 -
<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>
但我无法获得所需的XML输出格式。任何帮助都是一个很好的补充。
答案 0 :(得分:1)
更改
<xsl:when test = "//node/value/listValues/value/value != null">
到
<xsl:when test = "value/listValues/value/value != ''">