在XSLT样式表中,我设置<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xpath-default-namespace="http://my.example.com/"
>
以匹配样式表处理的输入文档。输出文档位于no名称空间中。
例如,xsl:stylesheet元素指定了xpath-default-namespace:
<xsl:variable name="vCustomElement" as="element()">
<some_element>
<!-- element content -->
</some_element>
</xsl:variable>
<xsl:apply-templates select="$vCustomElement" mode="something" />
.
.
<xsl:template match="*:some_element" mode="something">
...
<xsl:sequence select="." />
...
</xsl:template>
在转换中,我构建的元素没有命名空间,我也需要匹配这些元素。现在,我使用如下构造:
class User:
def __init__(self)
self.name = ''
class Patient(User):
def __init__(self):
self.data = []
这很有用,但我很好奇,有没有办法在xpath表达式中指定没有命名空间作为前缀?以上只适用,因为它匹配所有的名称,包括no namespace
答案 0 :(得分:2)
在XSLT / XPath 3.0中,无论xpath-default-namespace的当前设置如何,都可以编写match="Q{}local"
来匹配no-namespace元素。
除了重置xpath-default-namespace之外,没有办法在2.0中执行此操作,您可以对具有本地范围的任何元素执行此操作。
答案 1 :(得分:0)
以下是有效的,但是,如果有人在匹配表达式中指定no namesapce作为前缀,我仍然很好奇
<xsl:template match="some_element" mode="something" xpath-default-expression="">
...
<xsl:sequence select="." />
...
</xsl:template>