我有一个XML数据,如下所示
输入XML
<?xml version = "1.0" encoding = "UTF-8"?>
<Root>
<Child ID = "1">
<condition>true</condition>
<code>Error-1</code>
</Child>
<Child ID = "2">
<condition>false</condition>
<code>Error-2</code>
</Child>
<Child ID = "3">
<condition>true</condition>
<code>Error-3</code>
</Child>
<Child ID = "4">
<condition>false</condition>
<code>Error-4</code>
</Child>
<Child ID = "5">
<condition>true</condition>
<code>Error-5</code>
</Child>
<Child ID = "6">
<condition>true</conditions>
<code>Error-6</code>
</Child>
<Child ID = "7">
<condition>false</condition>
<code>Error-7</code>
</Child>
</Root>我的要求是迭代所有子节点下的条件元素。
如果条件元素的值是true,那么我必须在代码元素中获取相关的值
预期产出:
<?xml version = "1.0" encoding = "UTF-8"?>
<code>Error-1</code>
<code>Error-3</code>
<code>Error-5</code>
<code>Error-6</code>我一直试图基于子节点的属性ID来实现这一点。在迭代条件元素时,如何获得它的父节点(即子元素)的属性ID,并保留它以获取相关代码(如果条件元素的值为true )。
发布于 2014-02-11 10:39:04
您需要以下样式表:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Child">
<xsl:if test="condition[.='true']">
<xsl:apply-templates select="code"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>发布于 2014-02-07 12:59:13
不知道您正在使用的XSLT的上下文,我可以说,您可以很容易地使用正确的XPath来完成这个任务。
Root/Child[condition='true']/code只要使用正确的谓词,就可以根据需要调整上下文。
https://stackoverflow.com/questions/21627850
复制相似问题