0

エスケープ文字を含むファイル名で XML を解析しています。これはサーバー上のファイル名です:
Account-V%29%27%22%3B%3A%3E.layout

ドキュメント機能を適用すると、エスケープされた文字が自動的に変換されます。

`<xsl:apply-templates select="document('Account-V%29%27%22%3B%3A%3E.layout')/Layout"/>

サーバー上でこのファイルが見つからないため、上記のエラーが発生します:
Account-V)'";:>.layout

ファイル内のエスケープされた文字を変換しないように document() 関数に指示する方法はありますか? これを変数にラップしようとしましたが、うまくいきませんでした。

4

3 に答える 3

1

XSLT 2.0 を使用している場合は、encode-for-uri()

select="document(encode-for-uri('Account-V%29%27%22%3B%3A%3E.layout'))/Layout"
于 2013-07-17T22:29:36.463 に答える
0

document() 関数に渡す URI を逆参照する方法は、多くの点で実装によって定義されます。多くの XSLT プロセッサでは、ユーザーが作成した URIResolver を提供できるようにするなど、ある程度の制御が可能です。

したがって、XSLT プロセッサを知らずに質問に答えることはできないと思います。

于 2013-07-18T07:53:17.627 に答える
0

動作する回避策を見つけました。最もきれいではありませんが、XSLT を実行する前に、Java で文字列を置き換えて、fileNames.replace("%","%25") のようにします。これにより、document() 関数はパーセント記号をパーセントにエスケープします。これにより、サーバー上で正しいファイル名が生成されます。

于 2013-07-26T15:47:09.110 に答える