【发布时间】:2019-08-18 11:23:51
【问题描述】:
考虑以下 XML:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<price>30.00</price>
<contents>jjjadLKjlkdasndlakjd...</contents>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<price>29.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<price>39.95</price>
<contents>jjjadLKjlkdasndlakjd...</contents>
</book>
</bookstore>
目标是排除“内容”元素并按原样获取生成的 XML。
我尝试了轴和其他运算符。但是,使用 XPath 似乎无法实现这一点。如果我错了,请纠正我。
如果 XPath 解决方案不可行,下面的 XSLT 可以工作吗?
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8"/>
<!-- For each element, create a new element with the same local-name (no namespace) -->
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="*[not(self::company)]"/>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
XPath 只能从源文档中选择元素,它不能以任何方式修改它们(例如,通过删除一些子元素)