XML-схема представляет собой другой фрагмент с ref - PullRequest
0 голосов
/ 23 марта 2011

У меня есть эта схема:
Фрагмент 1:

<fragments>
<a>
<item></item>
<item></item>
<item></item>
</a>
<a>
<item></item>
<item></item>
<item></item>
</a>
<a>
<item></item>
<item></item>
<item></item>
</a>
</fragments>

фрагмент2:

<fragments>
<b>
<item></item>
<item></item>
<item></item>
</b>
<b>
<item></item>
<item></item>
<item></item>
</b>
<b>
<item></item>
<item></item>
<item></item>
</b>
</fragments>

фрагмент3:

<fragments>
<c>
<item></item>
<item></item>
<item></item>
</c>
<c>
<item></item>
<item></item>
<item></item>
</c>
<c>
<item></item>
<item></item>
<item></item>
</c>
</fragments>


    <xs:element name="Fragments">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="A"/>
            <xs:element ref="B"/>
            <xs:element ref="C"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="A">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="B">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="C">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="item">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="location"/>
            <xs:element name="quantity"/>
            <xs:element name="name"/>
            <xs:element name="payment"/>
            <xs:element name="description"/>
            <xs:element name="shipping"/>
            <xs:element name="incategory" maxOccurs="unbounded"/>
            <xs:element name="mailbox"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID" use="required"/>
        <xs:attribute name="featured" type="xs:anySimpleType"/>
    </xs:complexType>
</xs:element>

из ответа на вопрос как xsd может представлять разные xml-файлы? Я могу сказать, что могу представлять A, B и C в разных разделах, используя ref в схеме. Однако мой вопрос, схема использует Item с ref для сокращения повторения определения имен.,Как я могу различить ref, который представляет другой фрагмент, и ref, который только что использовался в схеме, чтобы избежать повторений мои пожелания

1 Ответ

0 голосов
/ 25 марта 2011

Ваш вопрос мне неясен, но я думаю, что вы спрашиваете: «Как я могу указать, что A, B и C могут быть корнями документа, но item не может быть корнем документа?"

Нет способа указать, какие глобальные элементы могут быть корнями документа.Однако вы можете сделать объявление «внутреннего» элемента локальным для группы моделей и указать эту группу моделей.

Может быть что-то вроде:

<xs:element name="A">
    <xs:complexType>
        <xs:sequence>
            <group ref="itemgroup" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:group name="itemgroup">
    <xs:sequence>
        <xs:element name="item>
            ...
        </xs:element>
    </xs:sequence>
</xs:group>

Кстати, если я правильно понимаю вашецель, вам на самом деле не нужны элементы Fragments.Только наличие объявлений «верхнего уровня» для A, B и C делает их кандидатами на место для документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...