我正在尝试在 XSD 中定义一个方案规则,其字符串长度为 8 个字符:
<PostedDate>42183296</PostedDate>
并且也允许空间填充:
<PostedDate> </PostedDate>
这导致我进入 XSD:
<xs:simpleType name="DateFormat">
<xs:restriction base="xs:string">
<xs:length value="8" /> //exactly 8 characters long
</xs:simpleType>
但该值也可以为空(即零个字符长):
<PostedDate></PostedDate>
<PostedDate />
这导致我天真地尝试:
<xs:simpleType name="DateFormat">
<xs:restriction base="xs:string">
<xs:length value="8" /> //exactly 8 characters long
<xs:length value="0" /> //exactly 0 characters long
</xs:simpleType>
这当然是不允许的。
与 XSD 中的常见情况一样,大多数格式无法用 XSD 轻松表示,因此我选择尝试使用正则表达式规则:
.{8} | ""
试图转换为 XSD 我键入:
<xs:simpleType name="DateFormat">
<xs:restriction base="xs:string">
<xs:pattern value=".{8}|''" />
</xs:restriction>
</xs:simpleType>
但它没有用:
''20101111' is not facet-valid with respect to pattern '.{8}|''' for type 'DateFormat'
我也试过
<xs:pattern value="[0-9]{8}|''" />
<xs:pattern value="([0-9]{8})|('')" />
<xs:pattern value="(\d{8})|('')" />
任何其他人都可以解决匹配问题的模式 - 某些特定模式 - 空
奖励:任何人都可以指出XSD 文档中说\d
匹配数字的地方吗?或者其他特殊模式代码是什么?