1
我必须变换,其具有以下结构XSLT使用信息从一个兄弟在另一个
<NODEA d="8" m="1" xxxxx="WWWWWWWWWWWWWW"/>
<NODEA d="16" m="1" xxxxx="somethingelse"/>
<NODEB d="1" m="1" yyyyy="xx"/>
<NODEB d="2" m="1" yyyyy="xx"/>
<NODEB d="3" m="1" yyyyy="yy"/>
<NODEB d="4" m="1" yyyyy="zz"/>
<NODEB d="5" m="1" yyyyy="aa"/>
<NODEB d="6" m="1" yyyyy="ss"/>
<NODEB d="7" m="1" yyyyy="33"/>
<NODEB d="8" m="1" yyyyy="AAAAAAAAAAAAA"/>
<NODEB d="9" m="1" yyyyy="qq"/> etc
在XSLT我尝试合并两个节点时,属性“d”等于一个XML文档
<NewNode>
<d>8</d>
<m>1</m>
<xxxxx>WWWWWWWWWWWWWW</xxxxx>
<yyyyy>AAAAAAAAAAAAA</yyyyy>
</NewNode>
做这个
<xsl:template match="NODEB">
<xsl:element name="NewNode">
<xsl:apply-templates select="@d" />
<xsl:apply-templates select="@m" />
<xsl:apply-templates select="@yyyyy" />
<xsl:element name="xxxxx" >
<xsl:for-each select="//NODEA">
<xsl:if test="[email protected] eq @d">
<xsl:value-of select="[email protected]" />
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:element>
因此,if语句显然不起作用,但我该怎么做呢?
看来你还没有运行这个转换 - 它甚至不是格式良好的XML文档,并且有许多句法错误会阻止这个c甚至可以解析。 – 2011-12-28 17:38:24
你是对的,5个小错误已被纠正,代码转贴。 – 2011-12-28 17:55:38
FirstZero,如果有三个'NodeX'元素具有相同的'd'属性值,则您的解决方案会创建两个'NewNode'元素。然而,想要的结果是将所有这些合并成一个'NewNode'元素。 – 2011-12-28 19:09:04