如何获取转换后的 xml 文件,其中包含仅一个父标签下每次出现的父标签的所有子标签

2024-01-02

我正在使用这个输入 xml 文件。

                 <Content>
                <body><text>xxx</text></body>
                    <body><text>yy</text></body>
               <body><text>zz</text></body>
               <body><text>kk</text></body>
                   <body><text>mmm</text></body>
                        </Content>

Xslt 转换后的输出应该是

                        <Content>
                 <body><text>xxx</text>
                       <text>yy</text>
                           <text>zz</text>
                     <text>kk</text>
                   <text>mmm</text></body>
                     </Content>

谁能提供其相关的 Xsl 文件。


这彻底的转变:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

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

 <xsl:template match="body"/>
 <xsl:template match="body[1]">
  <body>
   <xsl:apply-templates select="../body/node()"/>
  </body>
 </xsl:template>
</xsl:stylesheet>

当应用于提供的 XML 文档时:

<Content>
    <body>
        <text>xxx</text>
    </body>
    <body>
        <text>yy</text>
    </body>
    <body>
        <text>zz</text>
    </body>
    <body>
        <text>kk</text>
    </body>
    <body>
        <text>mmm</text>
    </body>
</Content>

产生想要的正确结果:

<Content>
   <body>
      <text>xxx</text>
      <text>yy</text>
      <text>zz</text>
      <text>kk</text>
      <text>mmm</text>
   </body>
</Content>

解释:

  1. The 身份规则 http://www.dpawson.co.uk/xsl/sect2/identity.html“按原样”复制每个节点。

  2. 它被两个模板覆盖。第一个忽略/删除每个body元素`。

  3. 覆盖身份模板的第二个模板也会覆盖第一个此类模板(删除每个body元素)对于任何body第一个元素body其父母的孩子。为此首先body只有孩子,一个body生成元素,并且在其主体中作为任何元素的子节点的所有节点body其父级的子级(当前body元素及其所有body兄弟姐妹)已处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取转换后的 xml 文件,其中包含仅一个父标签下每次出现的父标签的所有子标签 的相关文章

随机推荐