Как проверить xml, чтобы в качестве атрибутов могли использоваться только те элементы, которые действительно существуют? - PullRequest
2 голосов
/ 06 октября 2010

Итак, в основном я хочу эмулировать атрибут ref для проверки схемы.У меня есть следующий XML, например:

<node name="parent">
  <subordinate name="child3" />
</node>

<node name="child1" />
<node name="child2" />      

И я хочу, чтобы моя схема пометила это как недопустимое, поскольку «child3» не является одним из доступных параметров «узла» (этот указан).У меня есть следующая схема:

<xs:element name="node" nillable="false">
  <xs:complexType>
    <xs:attribute ref="name" use="required" />
  </xs:complexType>
</xs:element>

<xs:element name="subordinate" nillable="false">
  <xs:complexType>
    <xs:attribute ref="name" use="required" />
  </xs:complexType>
</xs:element>

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

Спасибо за любую помощь, вы можете дать!

1 Ответ

1 голос
/ 06 октября 2010

Я не эксперт по XSD, но я считаю, что вы хотите объявить атрибут имени node как тип XSD ID, а атрибут имени subordinate как IDREF.

Изменить: Добавлены ссылки

Типы данных ID / IDREF: http://www.w3.org/TR/xmlschema-2/#ID

Проверка ID / IDREF: http://www.w3.org/TR/xmlschema-1/#cvc-id

...