3

我想将多边形定义为一系列点,如下所示:

<polygon>
   <point x="0"     y="0" z="0" />
   <point x="100.0" y="100.0" z="100.0" />
   <point x="50.0"  y="100.0" z="50.0"  />
</polygon>

当我阅读它们时,保留点的顺序很重要

我编写了以下 xsd 文件:

<xs:element  name="point_type">
   <xs:complexType>
      <xs:attribute name="x" type="xs::double"/>
      <xs:attribute name="y" type="xs::double"/>
      <xs:attribute name="z" type="xs::double"/>
   </xs:complexType>
</xs:element>

<xs:element name="polygon_type">
  <xs:complexType>
    <xs:sequence maxOccurs="unbounded">
      <xs:element name="point" type="point_type"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

但有人指出,xs:sequence这并不一定意味着<points>会井井有条。事实上,http://www.w3schools.com/schema/el_sequence.asp似乎定义了该序列

    <xs:sequence maxOccurs="unbounded">
      <xs:element name="A" type="A_type"/>
      <xs:element name="B" type="B_type"/>
    </xs:sequence>

只会确保B's 在A's之后

<super>
  <A/>
  <B/>
  <A/>
  <B/>
</super>

并且没有说明 {AB} 对的顺序。

有人知道吗?你能指出我支持一个论点的参考文献吗?

4

1 回答 1

1

我建议您id向点添加一个属性,以便您可以显式跟踪应用程序中点的顺序,而不是依赖 XML 解析器以正确的顺序返回元素。我使用过的所有 XML 解析器都遵守元素顺序,但我在XML 规范中找不到任何关于此的内容。

<polygon>
   <point id="0" x="0"     y="0" z="0" />
   <point id="1" x="100.0" y="100.0" z="100.0" />
   <point id="2" x="50.0"  y="100.0" z="50.0"  />
</polygon>
于 2012-09-27T14:43:34.840 回答