XML枚举 - 使用带有空格的值并使用多个选择

时间:2017-07-20 15:20:47

标签: xml xml-validation

第一个问题如上所述:我可以使用空格吗?

<xs:simpleType name="Testing">
    <xs:restriction base="xs:string">
      <xs:enumeration value="my sample spaced value"/>
      <xs:enumeration value="my second spaced value"/>
      <xs:enumeration value="myThirdValue"/>
      <xs:enumeration value="myFourthValue"/>
    </xs:restriction>
  </xs:simpleType>

我发现的是:Specify a multi-word enumeration value in an XML/DTD

但另一方面,它说它可以是任何简单的类型:http://www.datypic.com/sc/xsd/e-xsd_enumeration.html

我是否可以解决这个问题,优先使用w3c规范中段落的链接?

第二个问题是当我选择多个答案时它如何验证,因此输出将如下:

<testing>myThirdValue myFourthValue</testing>

我得到了:

  

cvc-enumeration-valid:值&#39; myThirdValue myFourthValue&#39;对于枚举&#39; [我的样本间隔值,我的第二个间隔值,myThirdValue,myFourthValue]&#39;而言,它不是分面有效的。它必须是枚举中的值。

当空间用作分隔符并且值名称中有空格时,它怎么能不发疯呢?

<testing>my sample spaced value my second spaced value</testing>

我是否必须指定一个模式才能解析多个值?

谢谢!

1 个答案:

答案 0 :(得分:0)

XML DTD!= XML Schema(XSD),因此您链接的SO问题/答案不适用于您的问题。

According to the spec ...

  

4.3.5.5枚举模式组件的约束

     

架构组件约束:枚举有效限制

     

如果{value}的任何成员不在{base的值空间中,那么这是一个错误   类型定义}。

因此,如果您的基类型是xs:string(就像您的示例中那样),那么该值可以包含空格。

(如果我正确阅读规范。测试似乎支持我的理解。)

其他例子......

如果您的基本类型为xs:NMTOKEN,那么您的值不能包含空格。

如果您的基本类型是xs:NMTOKENS(复数),那么您的值可以包含空格。