【问题标题】:Cannot Validate A Simple Custom XML File无法验证简单的自定义 XML 文件
【发布时间】:2016-03-04 00:06:33
【问题描述】:

在过去的两个小时里,我阅读了数百页的胡言乱语,试图弄清楚如何验证最简单的自定义 XML,但我感觉自己比开始时落后了。我读到了一些简单的东西,不需要命名空间,但验证器不断给我关于未定义命名空间和“未定义根元素作业”的错误。最初将“jobs”作为“feed”告诉我必须指定一个命名空间,而我尝试的每一个都使验证输出变得更糟......所以我现在将其更改为“jobs”,但它告诉我这是未定义的.我不知道它要我做什么。

我有一个非常简单的结构:

<?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>

我需要做些什么来验证?

【问题讨论】:

  • 验证用什么?您是否有 XML 应该验证的 DTD 或模式?

标签: xml validation rss feed


【解决方案1】:

您应该根据一些规则进行验证。该规则可以采用以下形式:

  • DTD
  • XSD 架构

例如,我为您的简单 xml 生成 DTD 并获取带有规则的新 xml:

<?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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多