我正在尝试使用 xs:choice 元素,但是在验证 XSD 文件时,我遇到了一个错误,我认为它与 xs:choice 元素有关。我已经搜索了很多这个问题,找到了一些类似的问题,但没有一个给出我正在寻找的答案以解决我的问题。
我要做的是,声明一个名为“数据”的元素,其子元素将是时间戳和传感器或提供者(这是我尝试使用选择元素的地方,因为我只想要一个传感器或provider 元素作为时间戳的兄弟)。
以下 XML 是我要验证的内容:
<?xml version="1.0" encoding="ISO-8859-1"?>
<experience xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<data>
<timestamp>123456789</timestamp>
<sensor origin="proximity" >
<x-axis>9</x-axis>
<y-axis>0</y-axis>
<z-axis>0</z-axis>
<w-axis>0</w-axis>
</sensor>
</data>
</experience>
为了验证这个 XML,我编写了以下 XSD 文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- definition of attributes -->
<xs:attribute name="origin" type="xs:string" />
<!-- definition of complex elements -->
<xs:element name="provider">
<xs:complexType>
<xs:all>
<xs:element name="latitude" type="xs:float" />
<xs:element name="longitude" type="xs:float" />
<xs:element name="altitude" type="xs:float" />
<xs:element name="bearing" type="xs:float" />
<xs:element name="speed" type="xs:float" />
</xs:all>
<xs:attribute ref="origin" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="sensor">
<xs:complexType>
<xs:all>
<xs:element name="x-axis" type="xs:float" />
<xs:element name="y-axis" type="xs:float" />
<xs:element name="z-axis" type="xs:float" />
<xs:element name="w-axis" type="xs:float" />
</xs:all>
<xs:attribute ref="origin" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element ref="timestamp" minOccurs="1" maxOccurs="1" />
<xs:choice>
<element ref="provider" />
<element ref="sensor" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- definition of main type -->
<xs:element name="experience">
<xs:complexType>
<xs:sequence>
<xs:element ref="data" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
但是,一旦我上传文件并尝试使用以下 w3 网站对其进行验证,就会收到以下错误:
文件:/usr/local/XSV/xsvlog/tmph7cMmLuploaded:45:6:每个 cvc-complex-type.1.2.4 无效:元素 {None}:在元素 { http://www. w3.org/2001/XMLSchema }:choice, 期待 [{ http://www.w3.org/2001/XMLSchema }:annotation,$,{ http://www.w3.org/2001/XMLSchema }:element ,{ http://www.w3.org/2001/XMLSchema }:group,{ http://www.w3.org/2001/XMLSchema }:choice,{ http://www.w3.org/2001/ XMLSchema }:sequence,{ http://www.w3.org/2001/XMLSchema }:any]:
我认为问题出在 xs:choice 元素中,但我可能是错的。
因为这是我第一次尝试使用 xs:choice 元素,所以我怀疑我是否正确使用它。根据 w3schools 中的示例我是,但由于我打算在另一个元素旁边使用它,我不知道它是否正确了。
如果有人可以帮助我解决这个问题,我将不胜感激。
提前谢谢了。