属性是否可以在XSD 1.0中占用?

时间:2013-06-10 16:11:44

标签: xml xsd xsd-validation xml-validation xsd-1.0

我有一个属性是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" />

2 个答案:

答案 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的属性的空字符串,那么您的验证器就会丢失。