Как работает элемент группы в схеме XML? - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть XML-схема, которая в основном имеет смысл, но я столкнулся с небольшим, чего я не понимаю. Ниже приведен снимок схемы:

<xs:complexType name="DATA-FIELD">
    <xs:sequence>
        <xs:group ref="FIELD-CONTENT" />
        <xs:element name="Field" type="FIELD" minOccurs="0" />
    </xs:sequence>
</xs:complexType>

<xs:complexType name="FIELD">
    <xs:group ref="FIELD-CONTENT" />
    <xs:attribute name="att" type="xs:string" use="required" />
</xs:complexType>

<xs:group name="FIELD-CONTENT">
    <xs:sequence>
        <xs:element name="Elem" type="ELEM" minOccurs="0" />
    </xs:sequence>
</xs:group>

Чаще всего я не понимаю, как используется элемент group и как будет выглядеть пример XML-файла, который соответствует этой схеме? Будет ли это выглядеть так:

<DataField>
    <Field att="test">
        <Elem>element</Elem>
    </Field>
</DataField>

OR

<DataField>
    <Elem>element</Elem>
</DataField>

1 Ответ

1 голос
/ 30 декабря 2011

Элемент group представляет фрагмент модели содержимого и в основном используется для представления общих частей нескольких элементов.В вашем примере он используется для инкапсуляции поля option Elem в типах DATA-FIELD и FIELD.В большинстве случаев вы можете заменить содержимое элемента группы ссылками на группы, чтобы получить представление о том, что выполняет схема:

<xs:complexType name="DATA-FIELD">
    <xs:sequence>
        <xs:element name="Elem" type="xs:string" minOccurs="0" />
        <xs:element name="Field" type="FIELD" minOccurs="0" />
    </xs:sequence>
</xs:complexType>

<xs:complexType name="FIELD">
    <xs:element name="Elem" type="xs:string" minOccurs="0" />
    <xs:attribute name="att" type="xs:string" use="required" />
</xs:complexType>

С точки зрения проверки оба указанных документа экземпляра действительныучитывая схему, так как оба элемента являются необязательными.В первом примере документа поле Elem из группы опущено, а во втором случае поле Field опущено.Следующие также могут быть юридическими документами с этой схемой:

<DataField>
    <Elem>foo</Elem>
    <Field att="test">
        <Elem>element</Elem>
    </Field>
</DataField>

И:

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