このソリューションは、Windows 7 のコンソール アプリケーション フォームの Saxon-HE 9.4.0.3N XSLT プロセッサにのみ関連します。
私の実験では、document() 関数がファイル名または URI を受け入れることがわかりました。ただし、短い形式にする必要があるため、ファイル名は避けます。長い形式を使用すると、ファイル名は拒否されます。
あなたの文書が...
c:\path\to\document.xml
ドライブ「j」にマップされているサーバー「servername」上。
これを document() パラメータ値として使用して URI を形成するには...
file:///j:/path/to/document.xml
URI に関しては、Saxon が長い形式を受け入れないという誤解がありました。これはファイル名にのみ適用されます。ただし、落とし穴がいくつかあります...
- スラッシュに注意してください。バックスラッシュは機能しません。
- 実行可能なファイルを作成する方法が見つかりませんでした: UNC 名だけの URI。ドライブを文字にマッピングする必要があります。
- 何らかの理由でドキュメントを開けない場合は、同じエラーとして報告されます。ファイル システムでは、問題が発生する可能性が非常に高いため、ファイルを開けない場合に URI が間違っていると想定するのは安全ではありません。特定の時間にファイルを開くことができないのには、多くのありふれた理由が考えられます。
- ファイアウォールの問題に注意してください。これらが役割を果たします。
- NotePad++ などの多くのテキスト エディターは、BOM がなく、2 つの UTF-16 エンコーディングのいずれかでエンコードされていない場合、テキスト ファイルがシステム コード ページでエンコードされていると想定します。Saxon は、ファイルが UTF-8 でエンコードされているというデフォルトの想定を行うため、NotePad++ でこのような文字 (ä) と私のコード ページがある場合、Saxon はダミーを吐き出し、開くことができないと報告します。ファイル。(余談ですが、私のコードページが何であるかはわかりません。私のOSはWin7で、現在のシステムロケールは英語(オーストラリア)です。システムコードページを決定するのはシステムローカルです)。Saxon がドキュメントを開かない理由は、一部のコード ページでエンコードされた (ä) が、有効な UTF-8 シーケンスではないバイト シーケンスになるためです。
- URL パスではない URI パスは、基盤となるオペレーティング システムではサポートされていません。Saxon は document() 関数に関連して URI をサポートしていると正直に言うかもしれませんが、実際にはそれらを使用できないため、キャベツを沸騰させることはありません。- 少なくとも Windows ファミリの o/s ではありません。
- ファイル プロトコルに関するMSDN ページは無視してください。そのページで提案されている URL の形式 (| 文字など) は、Saxon の document() 関数では受け入れられません。上記で提案したフォームを使用してください。私はそれをテストしましたが、動作します。