1
4

2 に答える 2

1

渡すのsubstring-before()は単なる文字列 ( '%RolesPath%') です。Windows 環境変数を使用しようとしているようです。これは、あなたが使用している方法では機能しません。

2つのオプションがあると思います:

オプション1

xsl:paramスタイルシートを呼び出すときに、環境変数の値を として渡します。これは、XSLT 1.0 または 2.0 で機能します。

次のものが必要ですxsl:param

<xsl:param name="RolesPath"/>

そして、これはあなたがそれを参照する方法です:

<a href="{concat('file:///', substring-before($RolesPath, 'roles'),'Flores.chm')}"/>

オプション 2

機能を使用してくださいenvironment-variable()これは、Saxon-PE や EE などの XSLT 3.0 プロセッサでのみ機能します。

例:

<a href="{concat('file:///', substring-before(environment-variable('RolesPath'), 'roles'),'Flores.chm')}"/>

environment-variable()関数が実際に機能していることを示す別の例を次に示します。

XSLT 3.0

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="/">
        <environment-variable name="TEMP" value="{environment-variable('TEMP')}"/>
    </xsl:template>

</xsl:stylesheet>

出力(整形式の XML に適用した場合)

<environment-variable name="TEMP" value="C:\Users\dhaley\AppData\Local\Temp"/>
于 2013-03-15T18:30:46.770 に答える
1

次の短い表現を使用します

<a href="file:///{substring-before($RolesPath, 'roles')}Flores.chm"/>

where$RolesPathは、外部のグローバル パラメータとして変換に渡されます。

外部パラメータを変換に渡す正確な方法は、XSLT プロセッサによって異なります。XSLT プロセッサのドキュメントを参照してください。一部の XSLT プロセッサでは、文字列型のパラメーターをコマンド ライン実行ユーティリティから変換に渡すこともできます。

于 2013-03-16T05:03:23.930 に答える