以下似乎适用于MM-YYYY格式,但我现在有一个案例,它可以是空白或有日期。这是可能的,还是应该推送只在日期中包含XML属性并使属性可选?
<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>
答案 0 :(得分:2)
如果有日期,则只在XML中包含该属性,并使该属性成为可选
似乎对我来说是正确的选择
答案 1 :(得分: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。不需要那个位,因为模式只允许固定长度。