2016-12-03 7 views
1

Как я всегда думал, xs:restriction используется для ограничения определенного простого типа или complexType, отсюда и имя restriction. Но приведенный ниже фрагмент xsd верен. Взгляните на Norwegian_customer, country перезаписан complexType, поэтому он расширен, а не ограничен. И он переименован. Что именно делает xs:restriction? Is xs:restriction надмножество xs:extension? Фрагмент подтвержден в WebStorm.why this this complexType definition correct

<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="country1"> 
      <xs:complexType> 
       <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:element> 
     </xs:sequence> 
     </xs:restriction> 
    </xs:complexContent> 
    </xs:complexType> 

ответ

2

Но XSD ниже фрагмент кода является правильным.

Нет, ваш фрагмент XSD неверен. Norwegian_customer не является допустимым ограничением customer, поскольку он не разрешает country, только country1. Все части модели контента ограниченного базового типа должны быть явно разрешены в производном типе.

Этот фрагмент подтвержден в WebStorm.

Если Webstorm подтвердил этот XSD, то он является несоответствующим.

См W3C XML Schema Part 1: Structures Second Edition, а именно:

Обратите внимание, что Xerces на основе валидаторы бы сообщил вам следующее:

[Ошибка] try.xsd: 13: 45: rcase-Recurse.2: Не существует полного функционального отображения между частицами .

[Ошибка] try.xsd: 13: 45: производное-ok-ограничение.5.4.2: Ошибка для типа 'Norwegian_customer'. Частица этого типа не является допустимым ограничением частицы основания основания .