非常感谢您立即回复。你发送的代码对我来说很好,但是当我们有下面这行时它会抛出一个错误。删除此行时,它可以正常工作
对于此行<xsl:strip-space elements="*" />
,我收到以下错误
无法从已加载的输入文档中删除空白区域 将输入文档改为
XmlReader
。
另外,我还有一个疑问:如果我们想要选择一些子节点而不是所有子节点,该怎么办。
例如:
<root type="object">
<items type="array">
<item type="object">
<elem1></elem1>
<elem2></elem2>
<elem3></elem3>
<elem4></elem4>
<elem5></elem5>
<elem6></elem6>
<elem7></elem7>
</item>
</items>
</root>
应该转变为:
<assets>
<item>
<elem1></elem1>
<elem3></elem3>
<elem6></elem6>
<elem7></elem7>
</item>
</assets>
答案 0 :(得分:0)
试试这个XSLT-1.0。它会使用elemX
复制所有需要的X€[1,3,6,7]
元素,并删除所有其他elemY
元素
所有空格均由<xsl:strip-space>
删除。
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:template match="/">
<assets>
<item>
<xsl:apply-templates select="@*|node()" />
</item>
</assets>
</xsl:template>
<xsl:template match="elem1|elem3|elem6|elem7" priority="1">
<xsl:copy-of select="." />
</xsl:template>
<xsl:template match="*[starts-with(local-name(.),'elem')]" />
</xsl:stylesheet>
输出结果为:
<?xml version="1.0"?>
<assets>
<item>
<elem1/>
<elem3/>
<elem6/>
<elem7/>
</item>
</assets>