我希望在使用我的XSD进行XML验证时不接受空元素
我的XML:
<Request>
<Query>Select * from Table</Query>
<Query></Query>
</Request>
我的XSD:
<xs:simpleType name="className">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="status">
<xs:restriction base="xs:integer">
<xs:minInclusive value="100" />
<xs:maxExclusive value="600" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="requires">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="sql">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="requires" type="requires"/>
<xs:attribute name="when" type="xs:string" />
<xs:attribute name="limit" type="xs:string" />
<xs:attribute name="offset" type="xs:string" />
<xs:attribute name="classname" type="className" />
<xs:attribute name="status" type="status"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="query">
<xs:complexContent>
<xs:extension base="sql">
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Request">
<xs:complexType>
<xs:sequence>
<xs:element name="Query" type="query" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
如果查询标记为空,我希望不接受它,所以这应该是无效的。希望我的问题是重点。 :)
答案 0 :(得分:2)
您已经有一个simpleType className
,它定义了一个非空字符串。将其重命名为non-empty-string
以反映意图,然后更改sql类型,将其定义为non-empty-string
的扩展名而不是xs:string
。
答案 1 :(得分:0)
如果您希望它是必需的
,请在架构中的元素上使用属性minOccurs=1