簡體   English   中英

具有不同名稱的有序子元素的XML模式

[英]XML schema for ordered child elements with different names

我需要反序列化XML,該XML包含點和弧的輪廓/多邊形的定義。

<Pt>
    <X>0.0</X>
    <Y>0.0</Y>
</Pt>
<Arc>
    <X>0.0</X>
    <Y>0.0</Y>
    <Rad>0.0</Rad>
</Arc>

實際的XML文件:

<Profile>
    <Pt>...</Pt>
    <Pt>...</Pt>
    <Arc>...</Arc>
    <Pt>...</Pt>
    <Arc>...</Arc>
</Profile>

我有點想找到一種解決方案來知道具有不同名稱的子元素的順序。 我目前正在使用一種類似於以下代碼的架構,但是顯然我在不知道Pts和Arcs順序的情況下得到了Pts和Arcs的單個數組。 我嘗試創建一個同時包含Pt和Arc的替換組(點),但未成功。

<xs:element name="Profile">
  <xs:complexType>
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="Pt">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="X" type="xs:decimal" />
            <xs:element name="Z" type="xs:decimal" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element maxOccurs="unbounded" name="Arc">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="X" type="xs:decimal" />
            <xs:element name="Z" type="xs:decimal" />
            <xs:element name="Rad" type="xs:decimal" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

我想您想允許PtArc元素的任意順序。 以下模式將通過在sequence聲明中設置maxOccurs="unbounded"來解決問題。 您還必須更正PtArc聲明,因為當前它們使用的是Z而不是數據中的Y

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:complexType name="pt-type">
    <xs:sequence>
      <xs:element name="X" type="xs:decimal" />
      <xs:element name="Y" type="xs:decimal" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="arc-type">
    <xs:sequence>
      <xs:element name="X" type="xs:decimal" />
      <xs:element name="Y" type="xs:decimal" />
      <xs:element name="Rad" type="xs:decimal" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Profile">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:choice >
          <xs:element name="Pt" type="pt-type"/>
          <xs:element name="Arc" type="arc-type"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM