0

現在処理されているドキュメントの uri (document() 関数呼び出しでロードされている場合とロードされていない場合があります) と、できれば行番号を出力する方法はありますか?

基本的に、XSLにエラーが発生する可能性がある状況があるため、使用しています

<xsl:message terminate="yes">...</xsl:message>

ソース xml ドキュメント内のエラーの場所をメッセージに含めることができればよいでしょう。

現在、組み込みの .NET XSL エンジンを使用していますが、別の問題で saxon の使用に切り替える必要があるかもしれません。

4

2 に答える 2

0

XSLT 1.0 仕様には、特に有用なものはありません。

2.0 仕様には、base-uri() と document-uri() があります。それらは少し異なることを意味します: document-uri は doc() を使用してドキュメントをロードするために使用できる URI です (これは、URIResolvers と EntityResolvers のためにドキュメントの実際の場所とは無関係である可能性があります)。一方、base-uri( ) は各要素ノードに適用され、相対 URI 参照を解決するために使用される URI です (これは、xml:base 属性と外部エンティティ境界のために、ドキュメントの場所とは異なる場合があります)。

Saxon は、特定の要素がロードされた実際のファイルの URI となる saxon:system-id() と、そのソース ファイル内のその要素の行番号である saxon:line-number() を提供します。これは、ドキュメントをビルドするときに行番号情報を保持するかどうかに依存します: コマンド ラインのオプション -l。マイクロソフトのプロセッサには似たようなものはないと思います。

于 2013-10-24T14:02:47.543 に答える
0

XSLT 2.0 プロセッサを使用するbase-uri(.)と、URI に使用できます。Saxon には、行番号の拡張子http://www.saxonica.com/documentation/index.html#!functions/saxon/line-numberがあります。

XSLT 1.0 では、入力 URI にアクセスするには、パラメーターを定義してアプリケーションから値を渡す必要があると思います。

于 2013-10-24T11:36:53.773 に答える