我想将XML文件转换为文本,但我还想要一些不被转换的元素。
例如输入:
<parent> Some parent text
<child1>child text</child>
more parent text
</parent>
预期产出:
Some parent text <child1>child text</child> more parent text
我目前的XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:output method="text" indent="no"/>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="child1">
<xsl:element name="child1">
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
但我得到的是:
Some parent text child text more parent text
无论如何我可以修复这个以包含一些子元素吗?
答案 0 :(得分:2)
此XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no" omit-xml-declaration="yes"/>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="parent">
<xsl:apply-templates select="node()"/>
</xsl:template>
</xsl:stylesheet>
应用于此XML输入文档:
<parent> Some parent text
<child1>child text</child1>
more parent text
</parent>
将生成所请求的(格式不正确的XML)输出文档:
Some parent text
<child1>child text</child1>
more parent text
当然,您也可以匹配child1
个元素:
<xsl:template match="child1">
<xsl:element name="child1_NEW">
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:template>
以不同的方式处理它们:
Some parent text
<child1_NEW>child text</child1_NEW>
more parent text