我有一个属性是1)不需要的情况,2)当使用时可以采用.i)null或空或.ii)一个版本字符串,将用正则表达式验证(我希望)。< / p>
关于2.i,如何创建可以为空的属性?我在xml&amp; amp;的简短时间里还没有看到这个。的XSD
编辑:添加我正在谈论的例子,其中“attribute_1”对应于我的情况
<xsd:element attribute_1="x" attribute_2="y" />
<!-- or -->
<xsd:element attribute_2="y" />
<!-- or -->
<xsd:element attribute_1="" attribute_2="y" />
答案 0 :(得分:0)
您需要为元素创建一个复杂类型,并将该属性声明为“optional”,如下所示:
<xs:element name="tElementType">
<xs:complexType>
<xs:sequence>
<xs:element name="myelement" type="xs:string"/>
</xs:sequence>
<xs:attribute name="myattribute" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>-
<xs:element name="thisIsMyRealElement" type="tElementType" />
请参阅http://www.w3schools.com/Schema/schema_example.asp
希望有所帮助;)
答案 1 :(得分:0)
在XSD中,“nillable”是一个仅适用于元素的技术术语; nillability允许元素的类型,否则它们的内容即使为空也是有效的。所以你提出的问题的答案是“不,属性不能成为可能”。
另一方面,您所描述的是一个可以未指定的属性(您可以在属性声明中使用use="optional"
实现)并且允许空字符串作为有效值(已经是xs:string的属性。所以问题的答案是“我可以在使用空字符串指定时使属性可以省略并且有效吗?”是“是的。”
由于“”是xs:string的合法值,因此minLength="0"
和您指定的模式都不是必需的;如果您有一个验证器拒绝输入为xs:string的属性的空字符串,那么您的验证器就会丢失。