我有一个模式给了我这个定义,并且模式中没有任何对空格的引用(从不指定保留/崩溃/替换任何东西)。
<xs:element name="Content">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded"/>
</xs:complexType>
</xs:element>
我遇到了一些代码,它们在解析这个元素时产生的字符串上执行.trim()。如果这意味着whiteSpace值为collapse
,则trim()似乎是有效的,但如果它暗示preserve
或replace
,则trim()将是一个错误。其他地方的第三方代码似乎将其视为preserve
,但我没有信心这是基于架构的合理决策。
删除修剪是我需要做的,以使我们的代码与他们的代码匹配,所以我的路径很清楚,但我很好奇现有的行为是否在技术上是正确的(如果代码中没有其他地方)可能需要修改一下。)
我花了时间谷歌搜索半小时左右,通过xml架构规范并没有找到明确的答案,所以在我花费更多时间在那里之前,找出可能是隐含的默认默认值结合2-3个规格的区域,我想我会在这里问,希望有人已经跟踪了这个,只是知道答案。 (或者有人好奇并追踪它以获得乐趣)。
答案 0 :(得分:0)
whiteSpace
facet可用于约束从string派生的类型的值空间;它不指示XML解析器修剪或规范化字符串值。可以将其视为指定XML文档组件有效性的约束,而不是指向对这些组件的解析值的更改。
答案 1 :(得分:0)
whiteSpace facet仅适用于简单类型,因此我无法看到它与混合内容复杂类型的相关性。
在用于表示标记文档文本的混合内容的常规用法中,空格通常是重要的。当然,没有办法在模式中声明它并不重要。但是您的应用程序可能比模式中所述的更多地了解数据;只有应用程序才能知道修剪空格是否安全。