2016-12-29 5 views
0

私のxslt では、Saxonのバージョンを9.4.0-9から9.7.0-14に更新するとエラーが発生しました。XSLT - 9.4.0-9から9.7.0-14への更新時のSaxonエラー

net.sf.saxon.trans.XPathException:コレクションへの呼び出しの結果のアイテムタイプがnode()です。提供された値のアイテムタイプはxs:string

ここで問題は何ですか?

<xsl:variable name="file-uris" as="xs:string*" 
    select="if (empty($symbol.mappings.folder.uri)) then() else 
    for $f in collection(concat($symbol.mappings.folder.uri, '?select=*.txt&amp;unparsed=yes')) 
    return string($f/base-uri())"/> 
+0

私はSaxon 9.7ドキュメントの 'unparsed'パラメータをコレクションで見つけることができません。私はそうではありません。それがあなたが言うと言うエラーの理由です。目的が特定のフォルダ内のテキストファイルのURIを読み込み、Saxon 9.7を 'version =" 3.0 "スタイルシートで読むことであれば、' '。 –

+0

Martinに感謝しますが、そうではありません。 –

+0

xslt 2.0を使用しています。私のコンサルタントは、コレクション機能の問題だと言いました。つまり、Saxonの9.4.x〜9.7xのコレクション関数定義が変更される可能性があります。 –

答えて

0

のXPath 3.0と3.1の仕様への変更によってトリガサクソン9.7でコレクション()関数への大幅な変更がありました - 残念ながらリソースのあらゆる種類のコレクションへの一般化(例えばJSONファイル)が作られました100%後方互換性を維持することは非常に難しいです。

特定の問題は、「解読されていない」オプションで、以前のSaxonのリリースでは、仕様がその後進化する方法と互換性がないことが判明した非ドキュメントコレクションを処理する方法を予期していたことです。特定のエラーは、SaxonがアクティブなXSLT/XPathのバージョンに応じて2.0と3.0の両方の規則に準拠しようとしているため、XPath 3.0が有効でないときにcollection()がノード以外の値を返す場合に発生します。 3.0を有効にし、既定の構成設定では、ファイル拡張子 ".txt"は、コレクション内のリソースをxs:stringのインスタンスとして返すのに十分ですが、3.0が有効でない場合は機能しません。

(手順上の注意:サクソンの質問をここで提起することは大歓迎ですが、サクソニカのサポートサイトでそれらを引き上げると、サクソンの質問を追跡する方が簡単です。

関連する問題