2011-11-29 67 views
4

我有一个奇怪格式的XML文档,其中包含几个重复的标签;但我需要使用不支持重复标记的工具处理这些数据。使用XSL连接重复标签

因此,我需要一种方法来连接重复标签中的数据。出现

我最初的文件如下:

<root> 
    <irrelevantTag1>irrelevantData1</irrelevantTag1> 
    <irrelevantTag2>irrelevantData2</irrelevantTag2> 
    <irrelevantTag3> 
     <irrelevantTag4>irrelevantData4</irrelevantTag4> 
     <keyword>one</keyword> 
     <keyword>two</keyword> 
    </irrelevantTag3> 
    <irrelevantTag5>irrelevantData5</irrelevantTag5> 
</root> 

我需要一个样式表来连接与两个“关键字”标签的值,并产生一个关键字标签,如下面的输出:

<root> 
    <irrelevantTag1>irrelevantData1</irrelevantTag1> 
    <irrelevantTag2>irrelevantData2</irrelevantTag2> 
    <irrelevantTag3> 
     <irrelevantTag4>irrelevantData4</irrelevantTag4> 
     <keyword>one,two</keyword> 
    </irrelevantTag3> 
    <irrelevantTag5>irrelevantData5</irrelevantTag5> 
</root> 

回答

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"/> 

使用申请,临时为父元素匹配,或简单地将它们插入到标识转换中。

+0

谢谢布伦特:这个伎俩! – zabelc