6

VBScriptを使用してXMLオブジェクトでXSLT変換を実行しようとしています。
私が翻訳しているXSLファイルには<xsl:import href="script.xsl"/>ディレクティブが含まれています。絶対URL(http://localhost/mysite/script.xsl)を使用すると、スタイルシートが正常にインポートされます。ただし、相対パス(script.xsl)を使用すると、「リソースが見つかりません」と報告されます。これを一連のマシン間で移植できる必要があるため、相対URIを使用できる必要があります。助言がありますか?

ノート:

  • VBScriptファイルはにありますhttp://localhost/myscript.asp
  • 最初のXSLファイルはhttp://localhost/mysite/styles.xsl
  • 2番目のXSLファイルはhttp://localhost/mysite/script.xsl
  • 相対パスの使用mysite/script.xslも機能しません

補遺:

みなさん、ありがとうございました。これを実行しているコードを深く掘り下げるほど、見知らぬ人になります。myscript.aspかなり珍しいコードのコンパイルです。何が起こるかは、XMLチャンク()としてstyles.xslのHTML出力に含まれ、そのチャンクは、クライアント側でVBScriptを使用してスタイルシートとしてロードされます。次に、このスタイルシートを使用して、XMLHTTPを介して取得されるXMLチャンクを変換します。したがって、問題は、のコンテキストがクライアント側のHTMLであり、どこにあるかとは関係がないことです。myscript.asp<xml src=...>styles.xslscript.xsl

4

7 に答える 7

1

SysinternalsProcessMonitorを実行してこれに取り組みます。このツールを実行すると、スクリプトが存在しない場合でも、スクリプトがどのファイルを開こうとしているのかを実際に確認できます。

于 2009-01-23T20:56:58.237 に答える
1

xsl:import、xsl:include、および document() 関数の現在のディレクトリは、それらを使用する変換を含むディレクトリです。したがって、使用していると言った xsl:import ディレクティブは機能するはずです。

私が考えることができる唯一のことはこれに影響を与える可能性があります: 相対パスを使用する場合、ファイルはファイル システムから直接読み取られますが、絶対 URI を使用する場合は Web サーバーから取得されます。スクリプトがこのディレクトリ内のファイルを読み取れないようにするセキュリティ設定がある可能性はありますか?

于 2008-09-27T02:07:58.540 に答える
1

@Jon私はあなたが非常に近いと思います...しかしそうではありません...

<xsl:import href="/mysite/script.xsl"/>

...先頭のスラッシュで?

于 2008-10-02T20:36:12.063 に答える
0

私が見ることができない (または、関連するドキュメントを読んでいないためにわからない) ライブラリで使用されているカスタム URI リゾルバーがあるため、私はよくこの問題に遭遇します。ではなく、Saxon/Java の世界では、カスタム URI リゾルバーは、include/import ステートメントと document() 関数の URI を解決しようとして、最初のクラックを取得します。URI を解決できない場合は、デフォルトの URI リゾルバーが試行します。これは通常、URI が絶対である場合に失敗することはありません。

したがって、アプリ コンテキストに基づいてコンテキスト駆動型 URI リゾルバーを使用しているのは、おそらく ASP エンジン内の何かです。

于 2008-10-13T05:58:12.533 に答える
0

相対パスの目的での「現在のディレクトリ」が、XSL ファイルではなく、ASP ページの場所である可能性はありますか? つまり、まだ試していない場合は、次のことを試してみてください。

<xsl:import href="mysite/script.xsl"/>
于 2008-09-26T21:30:32.000 に答える
0

最初の試み:

script.xsl を別の xml チャンクとして含め、インポート ステートメントを想像できるあらゆる方法で変更しようとしましたが、成功しませんでした。

最終的解決:

script.xsl をインクルードするための絶対 URL は最初から機能していたので、私の最終的な解決策は、正しい doctype を使用して style.xsl を style.asp に変換することでした。このファイルで、サーバー名、プロトコル、およびパスを取得し、asp を使用してインポート ステートメントの適切な場所にエコーすることができました。次に、このファイルが mysscript.asp に含まれたときに、サーバーの正しい絶対 URL が含まれていました。これはちょっとしたハックですが、このかなり複雑な状況を解決するために私が見つけた唯一の方法です。

于 2009-12-22T18:46:58.777 に答える
-1

JS、画像、または CSS ファイルをロードするときに、approot または webroot を定義する変数が必要です。

 <xsl:import href="{$approot}/somedir/script.xsl"/>

または、XML に値がある場合は、

 <xsl:import href="{/root/@approot}/somedir/script.xsl"/>
于 2008-10-13T13:55:32.587 に答える