我正在使用此输入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文件。
答案 0 :(得分:2)
完全转型:
<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>
<强>解释强>:
identity rule “按原样”复制每个节点。
它被两个模板覆盖。第一个忽略/删除每个body
元素。
覆盖标识模板的第二个模板也会覆盖第一个此类模板(删除每个body
元素),以覆盖其中第一个body
元素的body
元素家长。仅对于此第一个body
子项,将生成body
元素,并在其正文中生成所有节点,这些节点是其父级的任何body
子级的子节点(当前body
元素并且处理了所有body
兄弟姐妹。
答案 1 :(得分:1)
<xsl:template match="Content">
<body>
<xsl:apply-templates select="body/text"/>
</body>
</xsl:template>
<xsl:template match="body/text">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>