2016-11-15 19 views
1

XSLTスタイルシートでは、スタイルシートが処理する入力文書と一致するようにxpath-default-namespaceを設定しました。出力ドキュメントは名前空間にありません。 stylesheet要素のxpath-デフォルトの名前空間に指定しています:XSLは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の現在の設定に関係なく、no-namespace要素に一致するようにmatch="Q{}local"を書くことができます。

xpath-default-namespaceをリセットする以外に、2.0でこれを行う方法はありません。これは、ローカルスコープの任意の要素に対して実行できます。

0

以下の作品、が、私はまだ好奇心のマッチングとして、働く

<xsl:template match="some_element" mode="something" xpath-default-expression=""> 
    ... 
    <xsl:sequence select="." /> 
    ... 
</xsl:template> 
関連する問題