【发布时间】:2017-07-14 08:04:58
【问题描述】:
我希望在使用我的 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>
如果查询标签为空,我希望它不被接受,所以这应该是无效的。希望我的问题是重点。 :)
【问题讨论】:
-
这能回答你的问题吗? Restricting empty elements in xsd
-
我已经有一个
simpleType。正如@Michael Kay 的答案所暗示的那样,我只是将其设为通用,然后在需要类似限制的任何地方重复使用它。所以从技术上讲,我的代码已经有了答案。 :P