我是xslt的新手,我想请求帮助创建一个.xsl文件,该文件将验证属性值是否具有相同的值。
<catalog>
<book id="bk101">aa</book>
<book id="bk102">bb</book>
<book id="bk103">cc</book>
<book id="bk101">dd</book>
</catalog>
选择&#39; @ id&#39;的值与其他&#39; @ id&#39;值不同,它将显示:
aa
bb
cc
dd
另一方面,它会显示:
你的&#39; @ id&#39;具有相同的值&#39; bk101&#39;
答案 0 :(得分:2)
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:key name="book-by-id" match="book" use="@id" />
<xsl:template match="/catalog">
<xsl:copy>
<xsl:apply-templates select="book"/>
</xsl:copy>
</xsl:template>
<xsl:template match="book">
<xsl:copy>
<xsl:copy-of select="@id"/>
<xsl:choose>
<xsl:when test="count(key('book-by-id', @id)) > 1">
<xsl:text>*** DUPLICATE ID ***</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于您的示例输入时,将返回:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="bk101">*** DUPLICATE ID ***</book>
<book id="bk102">bb</book>
<book id="bk103">cc</book>
<book id="bk101">*** DUPLICATE ID ***</book>
</catalog>