从XML文档中删除双标记

时间:2014-05-08 09:50:09

标签: xml transformation

我试图将文档转换为

之类的文档
<tag1>
   <tag1>
      <tag2>....</tag2>
      <tag3>....</tag3>
      <tag4>
         <tag4>
           <tag5>...</tag5>
           .
           .
         </tag4>
    </tag1>
</tag1>

我想删除重复的tag1和tag4。在打开xml文件之前,我不知道标签的名称。


更新

右。我有

<xsl:template match="body/body"> 
    <xsl:apply-templates select="@*|node()"/> 
</xsl:template> 

这是一项删除测试...

<body> 
    <body> 
        ---more xml here-- 
    </body> 
</body> 

这样可以正常删除其中一个body标签。我需要的是一个更通用的匹配表达式,允许我捕获并删除任何双标签,因为直到运行时才知道双标签是什么。

我应该在xsl样式表中写什么?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我会在这里发布,以防其他人遇到同样的问题:

<xsl:template match="*[name()=name(..)]">
    <xsl:apply-templates select="@*|node()"/>
</xsl:template>   

它将标记的名称与父标记的名称(name(..))进行比较。