2016-06-20 7 views
1

私はこの定義を与えてくれるスキーマを持っていますが、スキーマ内のどこにも空白の参照がありません(何にも保存/縮小/置き換えを指定しません)。複合型の空白のデフォルト値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の領域の組み合わせ、私は誰かがこれを既に追跡して、ただ答えを知っていることを期待してここに尋ねると思いました。 (または誰かが興味をそそられて、楽しい時にそれを追跡する)。

答えて

0

whiteSpaceファセットは、stringから派生した型の値のスペースを制限するために使用できます。 XMLパーサに文字列値のトリミングや正規化を指示しません。 XML文書のコンポーネントの妥当性に関する制約を指定し、それらのコンポーネントの解析された値の変更を指示するものではないと考えてください。

+0

これはもう少し複雑です。 XSLT/XQueryコンテキストでは、whiteSpaceはノードの型付き値を縮小/正規化するように変更しますが、文字列値は変更しません。 PSVIレベルでは、用語は異なりますが、効果は似ています。 –

+0

@MichaelKay:私は、OPの解釈は、XSDのwhiteSpace宣言がXMLインスタンス文書の解析中に生成された文字列のトリミングに影響する可能性があることを意味しています。おそらく私は誤解したでしょう。 XSDのwhiteSpace宣言の影響を受けるのは、検索ではなく妥当性検証だけだと思う​​のは間違っていますか? – kjhughes

+1

空白のファセットは、PSVIのノードの「実際の値」に影響します。もちろん、検証を行っているほとんどの人は、ドキュメントが有効かどうかを知ることだけに興味があり、ノードの他のPSVIプロパティを調べるつもりはありません。おそらく、スキーマ対応のXSLTまたはXQueryを使用している場合、PSVIを使用する可能性が最も高いです。この場合、PSVIの「実際の値」はXDMの「型付き値」になります。 –

0

whiteSpaceファセットはシンプルタイプのみに適用されるため、混在コンテンツ複合タイプとの関連性はわかりません。

マークアップ文書のテキストを表現するための混合コンテンツの従来の使用法では、一般に空白が重要です。確かに、重要ではないことをスキーマで宣言する方法はありません。しかし、あなたのアプリケーションはスキーマに書かれているよりも多くのデータを知っているかもしれません。アプリケーションだけが空白を整えるのが安全かどうかを知ることができます。

関連する問題