私はこの定義を与えてくれるスキーマを持っていますが、スキーマ内のどこにも空白の参照がありません(何にも保存/縮小/置き換えを指定しません)。複合型の空白のデフォルト値mixed = true
<xs:element name="Content">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded"/>
</xs:complexType>
</xs:element>
私は、この要素の解析中に生成された文字列に)(.trimをやっているいくつかのコードに実行しました。これがcollapse
のwhiteSpace値を意味する場合、trim()は有効であるように見えますが、preserve
またはreplace
を暗示する場合、trim()はバグです。他社のコードではpreserve
と扱っているようですが、それはスキーマに基づいた合理的な決定であるという自信がありません。
トリムを削除することは、私のコードとコードが一致するようにするために必要なことですが、私のパスは明確ですが、既存の動作が技術的に正しいかどうかは不思議に思っています。触れる必要がある可能性のあるコード)。
私は時間を費やして30分ほどかかりましたが、xmlスキーマの仕様を理解していて、明確な答えが見つからなかったので、もっと多くの時間を費やす前に、おそらく暗黙のデフォルトに基づいています仕様の2-3の領域の組み合わせ、私は誰かがこれを既に追跡して、ただが答えを知っていることを期待してここに尋ねると思いました。 (または誰かが興味をそそられて、楽しい時にそれを追跡する)。
これはもう少し複雑です。 XSLT/XQueryコンテキストでは、whiteSpaceはノードの型付き値を縮小/正規化するように変更しますが、文字列値は変更しません。 PSVIレベルでは、用語は異なりますが、効果は似ています。 –
@MichaelKay:私は、OPの解釈は、XSDのwhiteSpace宣言がXMLインスタンス文書の解析中に生成された文字列のトリミングに影響する可能性があることを意味しています。おそらく私は誤解したでしょう。 XSDのwhiteSpace宣言の影響を受けるのは、検索ではなく妥当性検証だけだと思うのは間違っていますか? – kjhughes
空白のファセットは、PSVIのノードの「実際の値」に影響します。もちろん、検証を行っているほとんどの人は、ドキュメントが有効かどうかを知ることだけに興味があり、ノードの他のPSVIプロパティを調べるつもりはありません。おそらく、スキーマ対応のXSLTまたはXQueryを使用している場合、PSVIを使用する可能性が最も高いです。この場合、PSVIの「実際の値」はXDMの「型付き値」になります。 –