复杂类型的空白默认值mixed = true

时间:2016-06-20 17:12:14

标签: xml xsd whitespace

我有一个模式给了我这个定义,并且模式中没有任何对空格的引用(从不指定保留/崩溃/替换任何东西)。

<xs:element name="Content">
  <xs:complexType mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded"/>
  </xs:complexType>
</xs:element>

我遇到了一些代码,它们在解析这个元素时产生的字符串上执行.trim()。如果这意味着whiteSpace值为collapse,则trim()似乎是有效的,但如果它暗示preservereplace,则trim()将是一个错误。其他地方的第三方代码似乎将其视为preserve,但我没有信心这是基于架构的合理决策。

删除修剪是我需要做的,以使我们的代码与他们的代码匹配,所以我的路径很清楚,但我很好奇现有的行为是否在技术上是正确的(如果代码中没有其他地方)可能需要修改一下。)

我花了时间谷歌搜索半小时左右,通过xml架构规范并没有找到明确的答案,所以在我花费更多时间在那里之前,找出可能是隐含的默认默认值结合2-3个规格的区域,我想我会在这里问,希望有人已经跟踪了这个,只是知道答案。 (或者有人好奇并追踪它以获得乐趣)。

2 个答案:

答案 0 :(得分:0)

whiteSpace facet可用于约束从string派生的类型的值空间;它不指示XML解析器修剪或规范化字符串值。可以将其视为指定XML文档组件有效性的约束,而不是指向对这些组件的解析值的更改。

答案 1 :(得分:0)

whiteSpace facet仅适用于简单类型,因此我无法看到它与混合内容复杂类型的相关性。

在用于表示标记文档文本的混合内容的常规用法中,空格通常是重要的。当然,没有办法在模式中声明它并不重要。但是您的应用程序可能比模式中所述的更多地了解数据;只有应用程序才能知道修剪空格是否安全。