2015-04-02 12 views
0

在這裏有一個噩夢與XSD和XML。有一個簡單的XML文件(代表我的數據庫中的表)和一個XSD架構,我試圖相互驗證它們,並且每次出現一些錯誤。最好的事情是不同的驗證器在相同的文件上顯示完全不同的錯誤。這是我第一次處理這個問題,並沒有使用XML的經驗。有人可以正確指出我的錯誤並簡單解釋它們嗎?我不是在找你們爲我做這一切。只要把我放在正確的方向。 謝謝,安迪xsd模式不能對xml文件起作用

XSD架構

<?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]ouse.us</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

我的拉斯維加斯錯誤說Cvc-elt.1:找不到元素'用戶'的聲明。行'2',列'45'。 – 2015-04-02 08:14:24

回答

2

這似乎是因爲它被設置爲"http://www.w3schools.com"在您的模式,但不是在你的XML實例targetNamespace的。

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 '... :)