我想基于重复节点创建一个字符串,我需要跳过重复的值。
输入文件:
<items>
<item>
<code>
<str>MN</str>
</code>
</item>
<item>
<code>
<str>PT</str>
</code>
</item>
<item>
<code>
<str>MN</str>
</code>
</item>
<item>
<code>
<str>TS</str>
</code>
</item>
<item>
<code>
<str>MP</str>
</code>
</item>
<item>
<code>
<str>MN</str>
</code>
</item>
<item>
<code>
<str>TS</str>
</code>
</item>
</items>
必需输出:
<items>MN#PT#TS#MP</items>
在这里,我需要删除重复的值。
答案 0 :(得分:1)
使用密钥按代码字符串查找item
个元素。这是well-known method,也用作分组技术。
您的输入XML格式不正确,因为items
元素未正确关闭。
XSLT样式表
<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="item-by-code-str" match="item" use="code/str"/>
<xsl:template match="items">
<xsl:copy>
<xsl:for-each select="item[generate-id() =
generate-id(key('item-by-code-str', code/str)[1])]">
<xsl:value-of select="code/str"/>
<xsl:if test="position() != last()">
<xsl:text>#</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
XML输出
<?xml version="1.0" encoding="UTF-8"?>
<items>MN#PT#TS#MP</items>