2016-11-15 89 views
1

在XSLT樣式表中,我設置了xpath-default-namespace以匹配樣式表處理的輸入文檔。輸出文檔位於no命名空間中。在xpath表達式中不使用名稱空間

例如,在xsl:stylesheet元素具有指定的XPath默認命名空間:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xpath-default-namespace="http://my.example.com/" 
> 

在沒有命名空間的變換,我建立的元素,我需要匹配這些元素。現在,我使用的結構,如:

<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> 

這工作,但我很好奇,是有我的方式來指定沒有命名空間,如XPath表達式中的前綴?以上僅適用,因爲它匹配所有namesapces包括沒有命名空間

回答

2

在XSLT/XPath 3.0中,無論xpath-default-namespace的當前設置如何,您都可以編寫match="Q{}local"來匹配no-namespace元素。

除了重置xpath-default-namespace之外,在2.0中沒有辦法做到這一點,您可以在任何具有本地作用域的元素上執行該操作。

0

下工作,雖然,我仍然好奇,如果有某種方式來指定沒有namesapce如在比賽中表現的前綴

<xsl:template match="some_element" mode="something" xpath-default-expression=""> 
    ... 
    <xsl:sequence select="." /> 
    ... 
</xsl:template> 
相關問題