我试图在XSD中编写一些代码,以允许一个整数字符,可以是-1到9或空白。
我尝试过使用
<xs:simpleType name="RdrInteger1Include-1AllowBlank">
<xs:restriction base="xs:integer">
<xs:minInclusive value="-1"/>
<xs:maxInclusive value="9"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[0-9]{0,1}"/>
</xs:restriction>
</xs:simpleType>
虽然如果使用空白,这只会返回错误。任何人都可以帮忙,我是这个人的完全新手吗?
由于
答案 0 :(得分:2)
创建一个包含两个成员的联合类型。一个是您在上面定义的类型;另一个是xsd:string的限制,它只接受空字符串,或一个空格,或一系列空白字符(无论你理解为空白)。该类型的用户应指向union,而不是整数限制。
由于两个成员类型的词汇空间是不相交的,因此在实践中,在定义联合时,将它们置于哪个顺序并不重要。
答案 1 :(得分:2)
Michael Sperberg-McQueen给了你一个可能的答案。另一种可能性是定义一个数据类型,该数据类型是(您的受限制的)整数的列表,其中列表的长度被约束为0到1(包括0和1)。两种解决方案都将验证相同的输入文档,但它们会以不同的方式为数据分配类型,如果使用数据绑定技术和/或模式感知的XSLT / XQuery处理数据,这可能会影响可用性。例如,如果@x是此类型的属性,那么在模式感知XPath中,如果使用my(list)解决方案,测试(@ x = -1)将按预期工作,但会引发Michael的类型错误(在属性值为空的情况下解决方案。