2016-03-04 50 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>