【发布时间】:2010-09-08 13:56:30
【问题描述】:
请告诉我为什么XML Spy 认为这是有效。仅供参考,这指定了一个 SQL 查询。这里是 XML:
<sideBar title="LabelSearch">
<searchLabel table="ID=*.companies">
<filter accessRight="r">
<and>
<filterElement argument="companies.Type" operator="=" value="Client"/>
</and>
</filter>
</searchLabel>
</sideBar>
问题:我不应该被允许在“and”标签内只放一个filterElement,但至少要放两个。如果我只有一个 filterElement,我应该使用它而不使用周围的“and”标签。这里是 XSD:
<xs:complexType name="filterGroupType">
<xs:sequence>
<xs:choice>
<xs:element name="or" type="filterGroupOrType"/>
<xs:element name="and" type="filterGroupAndType"/>
<xs:element name="filterElement" type="filterType"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="accessRight" type="accessRightSimpleType" use="required"/>
</xs:complexType>
<xs:complexType name="filterGroupAndType">
<xs:sequence minOccurs="2" maxOccurs="unbounded">
<xs:element name="or" type="filterGroupOrType" minOccurs="0"/>
<xs:element name="filterElement" type="filterType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="filterGroupOrType">
<xs:sequence minOccurs="2" maxOccurs="unbounded">
<xs:element name="and" type="filterGroupAndType" minOccurs="0"/>
<xs:element name="filterElement" type="filterType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="filterType">
<xs:attribute name="argument" type="xs:string" use="required"/>
<xs:attribute name="operator" type="operatorSimpleType" use="required"/>
<xs:attribute name="value" type="xs:anySimpleType"/>
<xs:attribute name="field" type="fieldTitleSimpleType"/>
</xs:complexType>
提前致谢。
【问题讨论】:
-
遗憾的是,XMLSpy 认为有很多事情是有效的,但实际上并非如此。 XMLSpy 非常糟糕。
-
正是出于这个原因,他应该尝试使用 w3c 验证器...
-
@Forlan07 您能否提供 w3c 验证器的链接以使用模式进行验证?我只发现了一些实验性的东西和 DTD 验证。谢谢!