Проблема DTD (или XSD) с дублирующимся элементом имени, имеющим разные области действия - PullRequest
1 голос
/ 01 апреля 2010

Я извлек фрагмент XML, над которым я работаю для DTD, по сути, мне нужно специальное объявление для ресурса, содержащегося в ресурсах тега, и другое, отличное для ресурса, содержащегося во входе тега. Проблема в том, что первый требует атрибута id, второй не требует атрибута id, потому что использует альтернативные атрибуты. Можно ли объявить что-то вроде (псевдокодирование):

Фрагмент xml:

<xml>

  <resources>
    <resource id="somedir">sometpath</resource>
  </resources>

...

  <input>
    <resource exists="false">
      <path>somepath</path>
    </resource>
  </input>

</xml>

Возможно ли это с DTD или XSD?

Спасибо

1 Ответ

4 голосов
/ 01 апреля 2010

С DTD - нет, XSD - да. Что-то вроде:

<xs:element name="root" type="r:rootType"/>
<xs:complexType name="rootType">
    <xs:sequence>
        <xs:element name="resources" type="r:resourcesType"/>
        <xs:element name="input" type="r:inputType"/>
    </xs:sequence>
</xs:complexType>

<xs:complexType name="resourcesType">
    <xs:sequence>
        <xs:element name="resource" type="r:resourceType" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>
<xs:complexType name="inputType">
    <xs:sequence>
        <xs:element name="resource" type="r:inputResourceType" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...