在xsl 1.0中有没有办法提到下面的xpath表达式,以获取节点“a”的值
/Root/a - doesnt work
而不是
/Root/*[local-name() = 'a'] - this will work
这是我的xml文件
<Root xmlns:ns="http://abc">
<ns:a>value</ns:a>
</Root>
在我的xslt中,我在许多行中询问的原因是,我们将xpath表达式指定为/Root/a
(或其他节点),因为xml文件之前没有任何名称空间。但是,xml文件现在具有名称空间,我们必须使用*[local - name()]
随处更改。有没有办法在一个地方更改我的xsl,以便早期的xpath表达式也可以工作,即使命名空间包含xml?
答案 0 :(得分:0)
如果您使用的是XSLT 2.0,则可以声明xpath-default-namespace
。在XSLT 1.0中,最好声明名称空间前缀并在XPath表达式中使用它,而不是使用local-name()
函数,例如:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns="http://abc"/>
在XPath中:
/Root/ns:a