Ограничение схемы XML для сложных типов: полное переопределение?

При добавлении ограничений к complexTypes в XML-схемах необходимо ли переписывать все элементы, используемые в определении complexType? Если так, то почему он не может просто использовать существующие определения элементов и перезаписать новые ограниченные?

Например, в приведенном ниже; Когда я просто хочу ограничить страну поля, Должен ли я переписать все 3 поля снова?

<xs:complexType name="customer">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="country" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="Norwegian_customer">
  <xs:complexContent>
    <xs:restriction base="customer">
      <xs:sequence>
        <xs:element name="firstname" type="xs:string"/>
        <xs:element name="lastname" type="xs:string"/>
        <xs:element name="country" type="xs:string" fixed="Norway"/>
      </xs:sequence>
    </xs:restriction>
  </xs:complexContent>
</xs:complexType> 

Итак, из приведенного ниже ответа довольно ясно, почему мы должны переписать весь тип.

Контрольный вопрос

Какая польза от этой функции ограничения?

Я могу вспомнить одну ситуацию; это когда вам нужно проверять экземпляры документов, содержащих запрещенные типы, вместо базовых типов в XML-схеме

Скажем, если «B» является базовым типом и ограничен «B *». Любой экземплярный документ, содержащий «B *» в том месте, где в документе «Схема» ожидается элемент типа «B», будет работать. Нам не нужно было бы писать отдельные правила для каждого ограниченного типа (атрибут «xsi: type» в документ экземпляра проверит его с правильным типом.) Верно?

Любое другое использование этой функции?

Ответы на вопрос(1)

Ваш ответ на вопрос