2015-04-02 8 views
0

с кошмаром здесь с XSD и XML. Получил 1 простой xml-файл (представляющий мою таблицу в базе данных) и схему XSD, я пытался проверить их друг против друга, и каждый раз появляются некоторые ошибки. Лучше всего разные валидаторы показывают совершенно разные ошибки в одних и тех же файлах. Это первый раз, когда я имею дело с этим и не имею опыта работы с XML. Может ли кто-нибудь правильно указать мои ошибки и кратко объяснить их? Я не ищу, чтобы вы, ребята, все это делали для меня. Просто поставьте меня в правильном направлении. Спасибо, Эндиxsd schema не работает с файлом xml

XSD Schema

<?xml version="1.0"?> 
<xs:schema version="1.0" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="http://www.w3schools.com" 
      xmlns="http://www.w3schools.com" 
      elementFormDefault="qualified"> 
    <xs:element name="Users"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="user"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="userID"> 
       <xs:simpleType> 
        <xs:restriction base="xs:integer"> 
        <xs:minInclusive value="0"/> 
        <xs:maxInclusive value="120"/> 
        </xs:restriction> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="firstName"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"> 
        <xs:pattern value="([a-zA-Z])*"/> 
        <xs:minLength value="2"/> 
        <xs:maxLength value="28"/> 
        </xs:restriction> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="lastName"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"> 
        <xs:pattern value="([a-zA-Z])*"/> 
        <xs:minLength value="2"/> 
        <xs:maxLength value="28"/> 
        </xs:restriction> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="email"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"> 
        <xs:pattern value="^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"/> 
        <xs:minLength value="6"/> 
        <xs:maxLength value="80"/> 
        </xs:restriction> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="DOB"> 
       <xs:simpleType> 
        <xs:restriction base="xs:date"> 
        </xs:restriction> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="tellNo"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"> 
        <xs:pattern value="[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] "/> 
        </xs:restriction> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="userTypeID"> 
       <xs:simpleType> 
        <xs:restriction base="xs:integer"> 
        <xs:minInclusive value="0"/> 
        <xs:maxInclusive value="120"/> 
        </xs:restriction> 
       </xs:simpleType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

XML файл

<?xml version="1.0" encoding="UTF-8"?> 
<Users xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="user.xsd"> 

    <user userid="1"> 
     <firstName>Andrew</firstName> 
     <lastName>Golota</lastName> 
     <email>[email protected]</email> 
     <DOB>1964-10-24</DOB> 
     <tellNo>078222446589</tellNo> 
     <userTypeID>1</userTypeID> 
    </user> 

    <user userid="13"> 
     <firstName>Barrack</firstName> 
     <lastName>Obama</lastName> 
     <email>[email protected]</email> 
     <DOB>1970-08-12</DOB> 
     <tellNo>079886365212</tellNo> 
     <userTypeID>3</userTypeID> 
    </user> 

    <user userid="11"> 
     <firstName>Bill</firstName> 
     <lastName>Clinton</lastName> 
     <email>[email protected]</email> 
     <DOB>1960-12-07</DOB> 
     <tellNo>078537278867</tellNo> 
     <userTypeID>2</userTypeID> 
    </user> 

    <user userid="5"> 
     <firstName>Michael</firstName> 
     <lastName>Grant</lastName> 
     <email>[email protected]</email> 
     <DOB>1966-03-08</DOB> 
     <tellNo>078339789608</tellNo> 
     <userTypeID>4</userTypeID> 
    </user> 

    <user userid="2"> 
     <firstName>Mike</firstName> 
     <lastName>Tyson</lastName> 
     <email>[email protected]</email> 
     <DOB>1966-12-01</DOB> 
     <tellNo>076255545422</tellNo> 
     <userTypeID>1</userTypeID> 
    </user> 

    <user userid="4"> 
     <firstName>Mike</firstName> 
     <lastName>Mollo</lastName> 
     <email>[email protected]</email> 
     <DOB>1970-09-07</DOB> 
     <tellNo>076255545117</tellNo> 
     <userTypeID>3</userTypeID> 
    </user> 

    <user userid="12"> 
     <firstName>Monica</firstName> 
     <lastName>Levinsky</lastName> 
     <email>[email protected]</email> 
     <DOB>1988-12-06</DOB> 
     <tellNo>078553323285</tellNo> 
     <userTypeID>1</userTypeID> 
    </user> 

    <user userid="14"> 
     <firstName>Osama</firstName> 
     <lastName>BinLaden</lastName> 
     <email>[email protected]</email> 
     <DOB>1926-06-06</DOB> 
     <tellNo>078552592921</tellNo> 
     <userTypeID>2</userTypeID> 
    </user> 

    <user userid="3"> 
     <firstName>Riddick</firstName> 
     <lastName>Bowe</lastName> 
     <email>[email protected]</email> 
     <DOB>1962-02-14</DOB> 
     <tellNo>078222556575</tellNo> 
     <userTypeID>2</userTypeID> 
    </user> 

    <user userid="0"> 
     <firstName>Tomasz</firstName> 
     <lastName>Adamek</lastName> 
     <email>[email protected]</email> 
     <DOB>1970-04-04</DOB> 
     <tellNo>077456757842</tellNo> 
     <userTypeID>1</userTypeID> 
    </user> 

</Users> 
+0

my las error говорит Cvc-elt.1: Не удается найти декларацию элемента «Пользователи» .. Строка «2», столбец «45». –

ответ

2

Это, кажется, из-за targetNamespace, который установлен на "http://www.w3schools.com" в вашей схеме, но не в вашем экземпляре XML.

2 решения:

  1. либо ваша потребность в этом пространстве имен, и вы должны установить в вашем XML:

    <Users xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:noNamespaceSchemaLocation="user.xsd" 
        xmlns="http://www.w3schools.com"> 
    
  2. вам не нужны, и вы можете отказаться от него в вашем схемы и изменить его следующим образом:

    <xs:schema version="1.0" 
        xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    

Вы заметите, что у вас есть множество новых ошибок, потому что атрибут userid не объявлен (фактически вы объявили тег) и т. Д. ...

PS: Барак Обама написан с помощью одного «r '... :)

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