3

最初に簡単なタスクの説明:

*.dll内にあるxslスタイルシートを参照するXMLファイルがあります。このXMLの始まりは次のようになります。

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type='text/xsl' href='res://name_xsl.dll/frameset.xsl'?>

このxmlファイルは、InternetExplorer内でHTMLとして開いて表示できます。IEのみです。(xslはxmlをhtmlに変換します)

ご覧のとおり、dllファイルが保存されているwin32システムフォルダを参照しています。「res://」での参照は機能します。

しかし今、私は自分のdllをシステムフォルダ内に保存したくありませんが、別のフォルダの下に%ALLUSERSPROFILE%(環境変数)と言うことができます。これは、たとえばWindows XPではC:\ Documents and Settings \ AllUsersまたはWin7C:\です。 Users \ Public(それについてはわかりません)。

そのフォルダにあるdllを参照するにはどうすればよいですか?システムに依存しないように、環境変数を使用してこれを行うことは可能ですか?どのような解決策をお勧めしますか。(すべてのhtml、xslデータは、ローカルコンピューターのdll内にローカルに保存されます。)

これまで、参照線を次のように変更しようとしました。

<?xml-stylesheet type='text/xsl' href='file:///c:/Documents and Settings/All Users/name_xsl.dll/frameset.xsl'?>

ルートフォルダc:でも同じことを試しましたが、絶対パスがなくても、すべてのファイル(xmlとdll)が同じフォルダにあります。res://を使用せずに試行すると、次のエラーメッセージが表示されました。

指定されたリソースを見つけることができません。リソースの処理中にエラーが発生しました'file:/// C:/ Documents and Settings / All Users / name_xsl.dll /...または'file:/// C:/name_xsl.dll/frameset.xsl '

手伝ってくれませんか。なぜファイルが見つからないのですか?(ファイル名は架空のものです)

4

1 に答える 1

1

これが解決策です:

<?xml-stylesheet type='text/xsl' href='res://C:%5CDocuments and Settings%5CAll Users%5Cname_xsl.dll/frameset.xsl'?>

ノート:

  1. ファイル内のリソースにアクセスするには、res://プロトコルを使用する必要があります。
  2. ファイルシステムの円記号は、%5Cとしてエンコードできます。おそらくスラッシュも機能します。

例:この例をfile://プロトコルでテストしましたが、res:プロトコルと同じように機能するはずです。私のシステムでは、次の場所にテキストファイルがあります。

C:\Program Files\CodeGear\Delphi for PHP\2.0\privacy.txt

このファイルにアクセスするには、Windowsファイルエクスプローラーのナビゲーションバーに移動します。

file:///%ProgramFiles%/CodeGear/Delphi for PHP/2.0/privacy.txt

バックスラッシュがフォワードスラッシュに変換され、スペースをエスケープする必要がないことに注意してください。これはテスト済みで、機能します。resプロトコルの同等のものはテストされていませんが、resプロトコルがリソースインデックス番号も含むという点でわずかに異なることを除いて、同じように機能するはずです。

構文については、http://msdn.microsoft.com/en-us/library/ie/aa767740 (v = vs.85).aspxを参照してください。

于 2012-02-21T23:05:01.990 に答える