这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
<flag><xsl:value-of select=
"substring('1', 2 - not(child[compare != current()/child/compare]))"/></flag>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于以下 XML 文档时:
<parent>
<child>
<compare>1</compare>
</child>
<child>
<compare>1</compare>
</child>
</parent>
产生想要的正确结果:
<parent>
<child>
<compare>1</compare>
</child>
<child>
<compare>1</compare>
</child>
<flag>1</flag>
</parent>
在此 XML 文档上应用相同的转换时:
<parent>
<child>
<compare>1</compare>
</child>
<child>
<compare>2</compare>
</child>
</parent>
再次产生所需的正确结果:
<parent>
<child>
<compare>1</compare>
</child>
<child>
<compare>2</compare>
</child>
<flag/>
</parent>
请注意:
使用和覆盖身份规则。
根本没有使用明确的条件指令(或变量)。