我正在尝试为以下 XML 示例编写 XSD 架构:
<?xml version="1.0" encoding="UTF-8"?>
<locs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="loc.xsd">
<loc required="true" comment="A comment">ABC</loc>
</locs>
我试图在架构中强制执行这些规则的规则:
- 根元素
locs
必须有 1 个或多个元素loc
loc
必须有 2 个属性:required
is aboolean
&comment
is astring
,长度非零,不完全由空格和/或标点符号组成loc
必须有一个非零长度的字符串值,不完全由空格和/或标点符号组成
我已经做到了loc.xsd
如下:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="locs">
<xs:complexType>
<xs:sequence>
<xs:element name="loc" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xs:string">
<xs:attribute name="required" type="xs:boolean" use="required"/>
<xs:attribute name="comment" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
有了这个,我可以执行规则 1 和 2,但是第三条规则没有被执行,所以像下面这样的条目是有效的:
<loc required="false" comment="Another comment"/>
我错过了什么?我已经在这上面花了几个小时了!