2011-07-13 15 views
18

exclude-result-prefixesextension-element-prefixの違いは何ですか?どちらもXSLTのヘッダーで使用されます。 EXSLTを使用しているときにextension-element-prefixが見つかりました。EXSLT website Howtoには、「結果ツリーに拡張名前空間が出力されないようにする」の意味でextension-element-prefixが使用されています。XSLT名前空間宣言のexclude-result-prefixesとextension-element-prefixの違いは何ですか?

これは(libxsltを使用して)真実ではありません。 exclude-result-prefixesのみが拡張名前空間を削除します。だから私はextension-element-prefixが必要ですか?

サンプル:libxsltは(xsltprocの)と

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:exsl="http://exslt.org/common" version="1.0" 
    extension-element-prefix="exsl"> 

<xsl:template match="/"> 
    <blabla/> 
</xsl:template> 

</xsl:stylesheet> 

マイ出力:

<?xml version="1.0"?> 
<blabla xmlns:exsl="http://exslt.org/common"/> 

答えて

12

あなたがextension-element-prefix属性を必要としない名前空間http://exslt.org/common内の1つのようEXSLT関数を使用します。これは、ネームスペースhttp://exslt.org/functionsfunc:functionのような拡張要素を使用する場合にのみ必要です。 extension-element-prefix属性は、その接頭辞を持つ要素がリテラルの結果要素ではなく、XSLT言語で定義された命令に加えて拡張命令であることを単に伝えます。

exclude-result-prefixesについては、スタイルシートで宣言され使用されているパスの式や一致パターンのノードを選択したり、拡張要素を挿入するためにのみ、結果要素の名前空間宣言を避けることができます。

+0

ああ。意味あり。私は 'extension-element-prefix'を' http:// exslt.org/common'で完全に削除できるので、なぜ私が 'extension-element-prefix'を使うべきか疑問に思っていました。この部分では、EXSLTのドキュメントが**間違っているようです**。 – therealmarv

+0

または 'extension-element-prefix'は出力ツリーから' extension-element-prefix'を必要とする要素だけを隠します。保存パス上にあるために、私はEXSLTのような拡張ライブラリを使うときに 'extension-element-prefix'と' exclude-result-prefixes'を同時に使用します。 – therealmarv

+1

EEPには2つの効果があるため、エクステンション要素プレフィックスはexclude-result-prefixesだけが必要なときに常に使用します.EEPには拡張要素の名前空間(無視できる権限)を使用できるため、名前空間をERPリストに追加します。 –

関連する問題