2010-06-10 106 views
0

以下内容似乎适用于MM-YYYY格式,但现在我有一个可以为空或有日期的情况。如果有一个日期并使该属性为可选的,这是可能的还是应该推到只包含XML中的属性?XSD日期或无日期验证

<xs:attribute name="edition_date" use="required"> 
<xs:simpleType> 
    <xs:restriction base="AT_STR"> 
    <xs:length value="7"/> 
    <xs:pattern value="(0[1-9]|1[012])[-](19|20)\d\d"/> 
    </xs:restriction> 
</xs:simpleType> 

回答

2

只包含在XML属性,如果有一个日期,并可选属性

似乎是一个正确的选择我

0

制作属性可选的,并且只有在XML中包含属性才是一个好的选择,但在某些情况下,您可能无法控制XML的生成。在这种情况下,您可以尝试XSD中的以下模式:

<xs:simpleType name="edition_date"> 
    <xs:restriction base="xs:string"> 
     <xs:maxLength value="7"/> 
     <xs:pattern value="((0[1-9]|1[012])[-](19|20)\d\d)?"/>  
    </xs:restriction>  
</xs:simpleType>  

这与您的模式类似,但是使用?运算符指示模式可以出现零次或一次,因此将允许空字符串。还要注意使用xs:maxLength而不是xs:length。不是那么需要,因为模式只允许固定的长度。