Может ли определение глобального элемента быть переопределено определением локального элемента? - PullRequest
1 голос
/ 25 октября 2011

Разрешено ли определять глобальный элемент в схеме XML, а затем переопределять определение этого элемента в контексте определенного родительского элемента? Может ли один и тот же элемент быть определен как глобально, так и локально в схеме, или это должен быть один или другой?

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

<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="to" type="xs:string"/>
      <xs:element name="from" type="xs:string"/>
      <xs:element name="heading" type="xs:string"/>
      <xs:element name="body" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="book">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="title" type="xs:string"/>
      <xs:element name="note" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Да, вы можете сделать это. Если вы хотите использовать глобальное определение, вы должны использовать ref вместо name. Однако помните, что объединение этих двух элементов в одной и той же последовательности недопустимо, поскольку валидатор больше не сможет определить, какое из этих двух значений вы имеете в виду.

РЕДАКТИРОВАТЬ: на самом деле, вы на самом деле ничего не "переопределить". Вы только что сделали анонимное определение элемента с именем «note». Было бы переопределить, если бы вы использовали ref, а затем изменили определение локально, но это не может быть сделано либо AFAIK. В любом случае это не имеет смысла.

0 голосов
/ 11 ноября 2017

Да, вы можете сделать это, потому что вы ничего не изменили. У вас есть одно глобальное определение, и ваша «внутренняя» заметка (внутри книги) является локальным определением, которое фактически не связано с глобальной заметкой.

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