我需要针对定义良好的架构验证我的XML。问题是我通常会收到很多错误。对你的例子进行了广泛的审视,一切似乎都没问题。问题如下:
Multiple annotations found at this line:
- s4s-att-not-allowed: Attribute 'type' cannot appear in element 'attribute'.
- s4s-elt-invalid-content.1: The content of '#AnonType_frominterNodeConnect' is invalid. Element 'attribute' is invalid, misplaced, or
occurs too often.
- src-resolve: Cannot resolve the name 'name' to a(n) 'attribute declaration' component.
以下是XML的示例:
<struct>
<attribute name="sensorReading"/>
<field name="photo" type="integer"/>
<field name="solar" type="integer"/>
<field name="temp" type="real"/>
<field name="humid" type="real"/>
</struct>
以下是需要验证它的架构:
<xs:element name="struct">
<xs:complexType>
<xs:sequence>
<xs:element name="field" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute ref="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:attribute ref="type" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute ref="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:complexType>
</xs:element>
我不明白为什么会出现这种错误。在这里读取某个属性需要在复杂类型的末尾移动,但这显然没有多大帮助。
关心每个知道错误所在的人。
答案 0 :(得分:2)
一种可能的XML Schema来验证XML是这样的:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="struct">
<xs:complexType>
<xs:sequence>
<xs:element name="attribute">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="field" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
¿为什么?
正如我在评论中所说,如果您阅读此simple tutorial
,将会很有趣