2017-07-20 52 views
0

第一个问题写在上面:我可以使用空格吗?XML枚举 - 使用空格并使用多个选择的值

<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

我能得到这个问题解决了,preferablly用链接到w3c规范中的段落?

第二个问题是它如何可以验证,当我选择一个以上的答案,所以输出会是这样:

<testing>myThirdValue myFourthValue</testing> 

我越来越:

CVC-枚举有效:值'myThirdValue myFourthValue'对于枚举'[my sample spaced value,my second spaced value,myThirdValue,myFourthValue]'不是facet-valid。它必须是枚举中的值。

当空间被用作分隔符并且我的空间名称中有空格时,它怎么会不发疯?

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

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

谢谢!

回答

0

XML DTD!= XML Schema(XSD)所以你链接到的SO问题/答案不适用于你的问题。

According to the spec ...

4.3.5.5制约枚举架构组件

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

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

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

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

其他例子...

如果你的基本类型为xs:NMTOKEN,则没有你的价值不能包含空格。

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

+0

谢谢你的回应,我在第一篇文章中给出了一些关于为什么让我头疼的信息。 – Wynarator

+0

@Wynarator - 你可以使用'xs:list'来获得多个值,但是我不知道如果你的值有空格,你会怎么做。 –