0

予想される問題に遭遇しました。私よりも優れた解決策があるかどうか疑問に思っています。

だから、私はドキュメントノード変数を持っています:

   <xsl:variable name="variableNode" as="document-node()">
        <xsl:document>
            <root>
             <element>...content...</element>
        <root>  
        </xsl:document>    
    </xsl:variable>

このドキュメント ノード変数の内容は、後で for-each ループによって処理されます。

<xsl:for-each select="$variableNode/root/element">
...content...
</xsl:for-each>

この for-each ループの内容から、この xslt スタイルシートによって処理されている実際の xml ファイルの要素を取得しようとしました。しかし、それはうまくいきませんでした。

したがって、ファイル名を次のような変数に入れます

<xsl:variable name="actual_filename" select="base-uri()"/>

doc-Functionによって目的の要素を取得しました。( doc($実際のファイル名)/ )

これは私の場合はうまく機能しますが、特に入力がファイルではなく他の xml コンテンツである場合、それがエレガントなソリューションであるかどうか疑問に思っています。

より良い解決策を考えられますか?ありがとうございました!

4

1 に答える 1

3

通常のアプローチはトップレベルです

<xsl:variable name="main-root" select="/"/>

メインの入力ドキュメント ノードを変数に格納し、別のドキュメントのコンテキスト ノードを持つ for-each またはテンプレート内で、常に変数にアクセスできます。

<xsl:for-each select="$variableNode/root/element">
  <xsl:value-of select="$main-root//foo[@id = current()/@id]"/>
</xsl:for-each>
于 2013-10-30T10:18:51.017 に答える