我有一个文档,其中根元素定义了一个命名空间,当我编写一个 xsl 进行转换时,我没有看到任何匹配的元素。
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//supplydetail/price"/>
</xsl:stylesheet>
XML 文件如下所示:
<?xml version="1.0" encoding="iso-8859-1"?>
<ONIXmessage xmlns="http://www.editeur.org/onix/2.1/short">
<header>
<m173>2012086</m173>
<m174>foobar</m174>
</header>
<product>
<supplydetail>
<j137>Foo Bar</j137>
<j396>20</j396>
<price>
<j148>42</j148>
<j151>5.99</j151>
<j152>AUD</j152>
<b251>AU</b251>
</price>
</supplydetail>
</product>
</ONIXmessage>
我看到的是我的supplydetail/price
元素根本不匹配,即使它存在于文档中/ONIXmessage/product/supplydetail/price
我试图在 xsl 中指定从 root 开始的完整路径,但这也不起作用。我得到的输出是输入的直接副本,我期望的是输入的副本,除了价格元素。我认为原因是输入 XML 的 ONIXmessage 元素中的命名空间声明,但我如何在 xsl.xml 中指定它。
谢谢