2016-03-04 49 views
0

我花了近兩個小時閱讀了數百頁的亂碼,嘗試瞭解如何驗證最簡單的自定義XML,並且覺得自己比當我開始時更加落後。我在一個簡單的東西上讀到,不需要命名空間,但驗證器不斷向我提供有關未定義的命名空間和「未定義的根元素作業」的錯誤。最初有「工作」作爲「飼料」告訴我,我不得不指定一個命名空間,我嘗試的每一個使驗證輸出更糟糕......所以我現在把它改爲「工作」,但它告訴我,這是未定義的。我不知道我想要做什麼。無法驗證簡單的自定義XML文件

我有一個非常簡單的結構:

<?xml version="1.0"?> 
<jobs> 
    <job> 
     <jobtitle>General Manager</jobtitle> 
     <jobcity>Atlanta</jobcity> 
     <jobstate>GA</jobstate> 
     <jobdescription><![CDATA[Description text here.]]></jobdescription> 
     <joblink>http://domain.com</joblink> 
    </job> 
</jobs> 

什麼我需要做的,使這個驗證?

+0

什麼是用來做驗證?您是否有XML應該驗證的DTD或模式? –

回答

0

您應該驗證的一些規則。該規則可在形式:

  • DTD
  • XSD架構

比如我生成DTD爲您簡單的XML,並得到與規則的新的XML insude:

<?xml version="1.0"?> 
<!DOCTYPE jobs [ 
     <!ELEMENT jobs (job)*> 
     <!ELEMENT job (jobtitle|jobcity|jobstate|jobdescription|joblink)*> 
     <!ELEMENT jobtitle (#PCDATA)> 
     <!ELEMENT jobcity (#PCDATA)> 
     <!ELEMENT jobstate (#PCDATA)> 
     <!ELEMENT jobdescription (#PCDATA)> 
     <!ELEMENT joblink (#PCDATA)> 
     ]> 
<jobs> 
    <job> 
     <jobtitle>General Manager</jobtitle> 
     <jobcity>Atlanta</jobcity> 
     <jobstate>GA</jobstate> 
     <jobdescription><![CDATA[Description text here.]]></jobdescription> 
     <joblink>http://domain.com</joblink> 
    </job> 
</jobs> 

此外,我爲您的XML生成XSD架構。你可以更喜歡使用XSD,因爲它是更強大的驗證工具xml:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="jobs" type="jobsType"/> 
    <xs:complexType name="jobType"> 
    <xs:sequence> 
     <xs:element type="xs:string" name="jobtitle"/> 
     <xs:element type="xs:string" name="jobcity"/> 
     <xs:element type="xs:string" name="jobstate"/> 
     <xs:element type="xs:string" name="jobdescription"/> 
     <xs:element type="xs:string" name="joblink"/> 
    </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="jobsType"> 
    <xs:sequence> 
     <xs:element type="jobType" name="job"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema>