2017-05-12 9 views
0

外部ファイルを単一のXSLT 1.0ファイルに統合する必要があります。変換は元のファイル構造にアクセスすることなくメモリ内で実行されるためです。 変数に読み込まれたファイルをどのようにマージするのか分かりません。document()依存関係を単一のXSLTに統合

元の変数宣言は次のようになります。 (pLangはselect文私はとのトラブルを持っているで必要とされるパラメータ):select文のルックス

<xsl:param name="pLang" select="'no'"/> 
<xsl:variable name="moduleDoc"> 
<module xmlns:mmx="http://funx" xmlns:svg="http://www.w3.org/2000/svg" xmlns:fnc="http://funx/fnc" xmlns:att="http://funx/att" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <document-merge> 
     <g-funcs> 
      <g name="IssueDate"> 
       <g-lang xml:lang="no">Fakturadato</g-lang> 
       <g-lang xml:lang="nn">Fakturadato</g-lang> 
       <g-lang xml:lang="en">Issue date</g-lang> 
      </g> 
      <!--snip --> 
     </g-funcs>   
    </document-merge> 
</module> 
</xsl:variable> 

<xsl:param name="pLang" select="'no'"/> 
<xsl:variable name="moduleDoc" select="document('Headlines.xml')"/> 

が、私はこのようなファイルの見出しの内容でmoduleDoc変数を満たしていますこのような:

<xsl:value-of select="$moduleDoc/module/document-merge/g-funcs/g[@name='IssueDate']/g-lang[lang($pLang)]"/> 

moduleDoc変数は、外部ファイルを参照するときにこれが正常に動作しますが、マージした後、私はサクソンのエラーが表示されます。

To use a result tree fragment in a path expression, either use exsl:node-set() or specify version='1.1'

変数でこれらのノードにアクセスする適切な方法は何ですか?

答えて

0

I溶液は、このような方法でノード・セット拡張を使用することであることが判明しffigured:

<xsl:value-of select="exsl:node-set($moduleDoc)/module/document-merge/g-funcs/g[@name='IssueDate']/g-lang[lang($pLang)]"/></b>  

名前空間宣言も必要とされている:

xmlns:exsl="http://exslt.org/common" 
関連する問題