输入XML
<?xml version="1.0"?>
<Response>
<TroubleResponse>
<Check>
<DStatus>
<GID>123456789</GID>
<FLAG/>
</DStatus>
<DStatus>
<GID>222233333</GID>
<FLAG/>
</DStatus>
<DStatus>
<GID>5555777788</GID>
<FLAG/>
</DStatus>
</Check>
<RAM>
<Details>
<RAMID>5555777788</RAMID>
</Details>
</RAM>
</TroubleResponse>
</Response>
我的问题是:
我想将元素标志值更新为TRUE,其中元素RAMID值与元素GID值匹配。
如何使用XSLT实现呢?
答案 0 :(得分:0)
与此模板结合使用身份模板
<xsl:template match="FLAG[../GID = ../../../RAM/Details/RAMID]">
<xsl:copy>TRUE</xsl:copy>
</xsl:template>
XSLT-1.0的身份模板是
<!-- Identity template -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
两者的结合达到了预期的结果。
如果您可以使用XSLT-2.0或更高版本,则可以将身份模板替换为
<xsl:mode on-no-match="shallow-copy"/>