我有一个格式奇怪的XML文档,其中包含一些重复的标记;但是我需要使用不支持重复标记的工具来处理这些数据。
因此,我需要一种方法来连接重复标签中的数据。
我的初始文件如下:
<root>
<irrelevantTag1>irrelevantData1</irrelevantTag1>
<irrelevantTag2>irrelevantData2</irrelevantTag2>
<irrelevantTag3>
<irrelevantTag4>irrelevantData4</irrelevantTag4>
<keyword>one</keyword>
<keyword>two</keyword>
</irrelevantTag3>
<irrelevantTag5>irrelevantData5</irrelevantTag5>
</root>
我需要一个样式表来将值与两个“keyword”标签连接起来,并生成一个关键字标签,如下面的输出所示:
<root>
<irrelevantTag1>irrelevantData1</irrelevantTag1>
<irrelevantTag2>irrelevantData2</irrelevantTag2>
<irrelevantTag3>
<irrelevantTag4>irrelevantData4</irrelevantTag4>
<keyword>one,two</keyword>
</irrelevantTag3>
<irrelevantTag5>irrelevantData5</irrelevantTag5>
</root>
答案 0 :(得分:4)
这两个模板应该可以解决问题:
<xsl:template match="keyword[1]">
<keyword>
<xsl:for-each select="../keyword">
<xsl:if test=". != ../keyword[1]">,</xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
</keyword>
</xsl:template>
<xsl:template match="keyword"/>
对父元素的匹配使用apply-templates,或者只是将它们插入到身份转换中。