我有一些
XML文档,我无法控制它.它们的结构是明确定义的,但它在一堆PDF中描述,尽管非常精确,但它们并不能使自动化验证变得易于处理.我正在尝试编写XML模式,以使(大部分)PDF文件中的规则可执行.
所有要素都是强制性的.但其中大约一半可能是空的或具有简单的类型内容.
在为这些元素定义数据类型时,我定义了两个版本:一个是“普通”,另一个是空.我通过使用空数据类型定义联合来完成此操作:
<xs:simpleType name="empty"> <xs:restriction base="xs:string"> <xs:length value="0"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="codPostal"> <xs:restriction base="xs:string"> <xs:pattern value="^[0-9]{4}-[0-9]{3}$"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="opt_codPostal"> <xs:union memberTypes="empty codPostal"/> </xs:simpleType>
这样做的重复性较低吗?
您可以使用xs:nillable.
在XSD中
<xs:simpleType name="codPostal"> <xs:restriction base="xs:string"> <xs:pattern value="^[0-9]{4}-[0-9]{3}$"/> </xs:restriction> </xs:simpleType> <xs:element name="OptionalString" type="codPostal" nillable="true" />
在文件中
<OptionalString xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
这对于非字符串类型(例如日期时间等)非常有用,对于可以使用零长度的字符串.
<OptionalString />