2016-11-29 7 views
1

при проверке моих файлов с помощью this онлайна валидатора Я получаю следующее сообщение об ошибке:Union валидация элемента XML Schema

CVC-тип_данная-valid.1.2.3: «Гоморра 20140506» не является допустимым значением союза type '#AnonType_alternatywny_tekstzdjecie'.

cvc-type.3.1.3: Значение «Gomorra 20140506» элемента «alternatywny_tekst» недействительно.

Я сформировал свой код, как в примерах w3schools. Может ли кто-нибудь сказать мне, что не так с моим кодом?

<xs:element name="zdjecie"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="wysokosc" type="xs:decimal"/> 
     <xs:element name="szerokosc" type="xs:decimal"/> 
     <xs:element ref="zrodlo"/> 
     <xs:element name="alternatywny_tekst"> 
     <xs:simpleType> 
      <xs:union memberTypes="tekst_1 tekst_2"/> 
     </xs:simpleType> 
     </xs:element> 
    </xs:sequence> 
    <xs:attribute ref="kod"/> 
    </xs:complexType> 
</xs:element> 

<xs:simpleType name="tekst_1"> 
    <xs:restriction base="xs:string"> 
    <xs:enumeration value="Gomorra"/> 
    <xs:enumeration value="Grand Budapest Hotel"/> 
    <xs:enumeration value="Fargo"/> 
    <xs:enumeration value="Wściekłe psy"/> 
    </xs:restriction> 
</xs:simpleType> 

<xs:simpleType name="tekst_2"> 
    <xs:restriction base="xs:integer"> 
    <xs:maxExclusive value="20161130"/> 
    </xs:restriction> 
</xs:simpleType> 

XML

<zdjecie kod="GO.2014.001"> 
    <wysokosc>735</wysokosc> 
    <szerokosc>500</szerokosc> 
    <zrodlo>Obrazki/gomorra.jpg</zrodlo> 
    <alternatywny_tekst>Gomorra 20140506</alternatywny_tekst> 
</zdjecie> 

ответ

1

Значение пространства в xs:union является объединением своих типов членов, но в одиночку он не позволяет нескольким членам присутствовать. Из вашего XML кажется, что вы хотите разрешить несколько членов. Вы можете добиться этого с помощью xs:list:

<xs:element name="alternatywny_tekst"> 
     <xs:simpleType> 
     <xs:list> 
      <xs:simpleType> 
      <xs:union memberTypes="tekst_1 tekst_2"/> 
      </xs:simpleType> 
     </xs:list> 
     </xs:simpleType> 
    </xs:element> 

Обратите внимание, что это позволяет комбинацию из объединения значений, разрешенных tekst_1 и tekst_2 - не обязательно tekst_1 сопровождаемых tekst_2.

Вот Вышеуказанное заявление в контексте полного XSD, который будет успешно подтвердить свой XML:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="zdjecie"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="wysokosc" type="xs:decimal"/> 
     <xs:element name="szerokosc" type="xs:decimal"/> 
     <xs:element name="zrodlo" type="xs:string"/> 
     <xs:element name="alternatywny_tekst"> 
      <xs:simpleType> 
      <xs:list> 
       <xs:simpleType> 
       <xs:union memberTypes="tekst_1 tekst_2"/> 
       </xs:simpleType> 
      </xs:list> 
      </xs:simpleType> 
     </xs:element> 
     </xs:sequence> 
     <xs:attribute name="kod" type="xs:string"/> 
    </xs:complexType> 
    </xs:element> 
    <xs:simpleType name="tekst_1"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="Gomorra"/> 
     <xs:enumeration value="Grand Budapest Hotel"/> 
     <xs:enumeration value="Fargo"/> 
     <xs:enumeration value="Wściekłe psy"/> 
    </xs:restriction> 
    </xs:simpleType> 
    <xs:simpleType name="tekst_2"> 
    <xs:restriction base="xs:integer"> 
     <xs:maxExclusive value="20161130"/> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 

 Смежные вопросы

  • Нет связанных вопросов^_^