DTD和根项

时间:2011-10-06 19:00:38

标签: xml

我需要将数据从第三方网站导入我自己的网站,我正在使用XPath这样做。我已经创建了一个PHP脚本来抓取我想要的数据并将其转换为XML。

现在,我必须创建自己的DTD,这就是问题所在。

当我尝试使用W3C验证XML Feed时,表示Feed没有根元素。但我以为我做了 - 我做错了什么?

DTD:

<!DOCTYPE item [
<!ELEMENT item (id,company,homepage,language,title,link,guid,description,pubDate,creator,contact,mail,phone,region,image,price,term)>
<!ELEMENT id (#ID)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT homepage (#PCDATA)>
<!ELEMENT language (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT link (#PCDATA)>
<!ELEMENT guid (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT pubDate (#PCDATA)>
<!ELEMENT creator (#PCDATA)>
<!ELEMENT contact (#PCDATA)>
<!ELEMENT mail (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT region (#PCDATA)>
<!ELEMENT image (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT term (#PCDATA)>
 ]>

XML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE item SYSTEM "buysell.dtd">
<item>
  <id>'.$num.'</id>
  <company>'.$company.'</company>
  <homepage>'.$homepage.'</homepage>
  <language>sv</language>
  <title>'.$title.'</title>
  <link>'.$anchor.'</link>
  <guid>'.$anchor.'</guid>
  <description>'.$title.'</description>
  <pubDate>'.$date.'</pubDate>
  <creator>'.$company.'</creator>
  <contact>'.$contact.'</contact>
  <mail>'.$mail.'</mail>
  <phone>'.$phone.'</phone>
  <region>'.$region.'</region>
  <image>'.$image.'</image>
  <price>'.$price.'</price>
  <term>'.$term.'</term>
</item>';

1 个答案:

答案 0 :(得分:0)

这里有三个问题需要修复:

  • DTD不应该有文档类型声明(封闭 !DOCTYPE结构),但必须只是一个列表!ELEMENT 声明。

  • XML 1.0中没有关键字“#ID”,这应该只是 “#PCDATA”

  • 您的文档实例有一个虚假的“';”结束后的字符串 结束标记,因此形成不良。

解决这些问题,一切都会好起来......