2016-08-22 8 views
0

私の使用例の1つで、私のXSLT 2.0変換(SaxonとJAVAを使用)は、空白または改行文字が出現したときに出力に余分な
文字を生成します。xslt出力文字 "
"

しかし、同じ変換がXSLT 1.0(libXSLTとPerlで提供)を使用して行われた場合、出力でこの特定の文字は取得されません。

私は既にqueryを参照しました。これはSAXONがこれらの特殊文字をラウンドトリップのために本質的に直列化することを説明しています。

私の質問は、XSLT 1.0の場合の動作がどうして違うのですか?

答えて

3

1999年のXSLT 1.0がXML 1.1よりも古く、https://www.w3.org/TR/xml11/#sec-line-endsの正規化を必要とし、XML 1.0 https://www.w3.org/TR/xml/#sec-line-endsはその文字をカバーしていないとします。 に記載されているXSLT 2.0のシリアライゼーションルールでは、XML 1.1を考慮に入れていますが、古いXSLT 1.0ではそうではありません。

+0

.....素早いフォローアップの質問。バージョン1.1はどこで指定すればよいですか? A] XSLTファイルのヘッダ2] 'xslt:stylesheet version'または3を出力ファイルが生成される場所、つまり' exsl:document version'に置き換えます。 – Recker

+0

私はバージョン1.1を指定することを提案しなかった、私は仕様の開発の歴史を推測しようとしました。 'exsl:document'とSaxon 9やXSLT 2.0とは何が関係しているのか分かりません。あなたは新しい質問をし、この質問を精緻化または編集し、入力、XSLT、欲しい結果、そして現在の結果の詳細を提供したいかもしれません。 –