以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  一个非常简单的DTD问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=7613)


--  作者:石心人
--  发布时间:5/17/2004 11:24:00 PM

--  一个非常简单的DTD问题
如下文档:
<?xml version="1.0" ?>
<?xml-stylesheet type="text/css" href="Inventory.css" ?>
<!DOCTYPE INVENTORY [
<!ELEMENT INVENTORY (BOOK)*>
<!ELEMENT BOOK (TITLE,AUTHOR,BINDING,PAGES,PRICE)>
<!ELEMENT TITLE (#PCDATA |SUBTITLE)*>
<!ELEMENT AUTHOR (#PCDATA)>
<!ELEMENT BINDING (#PCDATA)>
<!ELEMENT PAGES (#PCDATA)>
<!ELEMENT PRICE EMPTY>
]>

<INVENTORY>
 <BOOK>
  <TITLE>
     Leaves of Grass
     <SUBTITLE>FUCK!</SUBTITLE>
  </TITLE>
  <AUTHOR>Walt Whitman</AUTHOR>
  <BINDING>hardcover</BINDING>
  <PAGES>462</PAGES>
  <PRICE>2.67</PRICE>
 </BOOK>
 <BOOK>
  <TITLE>Moby-Dick</TITLE>
  <AUTHOR>Herman Melville</AUTHOR>
  <BINDING>trade paperback</BINDING>
  <PAGES>605</PAGES>
  <PRICE>2.6</PRICE>
 </BOOK>
 <BOOK>
  <TITLE>The Scarlet Letter</TITLE>
  <AUTHOR>Nathaniel Hawhorne</AUTHOR>
  <BINDING>trade paperback</BINDING>
  <PAGES>253</PAGES>
  <PRICE>3.4</PRICE>
 </BOOK>
</INVENTORY>
既然我已经预设了PRICE元素为EMPTY没有内容,为什么在文档PRICE之间加入内容在御览的时候还是不报错呢


--  作者:石心人
--  发布时间:5/17/2004 11:27:00 PM

--  
顺便再问一个:
既然<!ELEMENT INVENTORY (BOOK+,DESK?,COMPUTER*)>代表INVENTORY元素必须包含一个
多个BOOK元素,0个或1个DESK元素,0个或多个COMPUTER元素
那么这里<!ELEMENT INVENTORY (BOOK)*>,其中的星号为什么要加在括号外呢,是不是加在内也可以?

--  作者:shujuwajue
--  发布时间:5/18/2004 11:03:00 AM

--  
在DTD中显示一幅图片:
<!ELEMENT IMAGE EMPTY>
<!ATTLIST IMAGE SOURCE ENTITY #REQUIRED>
<!ENTITY LOGO SYSTEM "LOGO.GIF">
在期望插入图片的地方加入:
<IMAGE SOURCE="LOGO"/>
这里也没有因为EMPTY而产生错误啊
  BOOK应该是指<BOOK>标签本身 而加了(BOOK)还包括下面的子元素

有个地方我不明白 为什么没有定义Inventory.css 却可以显示?
我是个初学者 希望能多多交流


--  作者:石心人
--  发布时间:5/18/2004 1:33:00 PM

--  
看来你也有疑问,这个论坛怎么没人的,这么简单的问题到现在都没有 人来回答???
--  作者:ssss
--  发布时间:7/30/2004 4:54:00 PM

--  
正确代码应如下:
<?xml version="1.0"?>
<!DOCTYPE INVENTORY [
 <!ELEMENT INVENTORY (BOOK)*>
 <!ELEMENT BOOK (TITLE, SUBTITLE?, AUTHOR, BINDING, PAGES, PRICE)>
 <!ELEMENT TITLE (#PCDATA)>
 <!ELEMENT AUTHOR (#PCDATA)>
 <!ELEMENT BINDING (#PCDATA)>
 <!ELEMENT PAGES (#PCDATA)>
 <!ELEMENT PRICE EMPTY>
 <!ELEMENT SUBTITLE (#PCDATA)>
]>
<INVENTORY>
 <BOOK>
  <TITLE>
      Leaves of Grass
     </TITLE>
  <SUBTITLE>FUCK!</SUBTITLE>
  <AUTHOR>Walt Whitman</AUTHOR>
  <BINDING>hardcover</BINDING>
  <PAGES>462</PAGES>
  <PRICE/>
 </BOOK>
 <BOOK>
  <TITLE>Moby-Dick</TITLE>
  <AUTHOR>Herman Melville</AUTHOR>
  <BINDING>trade paperback</BINDING>
  <PAGES>605</PAGES>
  <PRICE/>
 </BOOK>
 <BOOK>
  <TITLE>The Scarlet Letter</TITLE>
  <AUTHOR>Nathaniel Hawhorne</AUTHOR>
  <BINDING>trade paperback</BINDING>
  <PAGES>253</PAGES>
  <PRICE/>
 </BOOK>
</INVENTORY>
我猜你用的一定是:IE6.0来验证DTD文件与XML之间的有效性,不过很可惜,IE6.0在这方面不是太严格的....或者说IE在验证XML和DTD之间的有效性问题上很差!见意你用XMLSPY就好了www.xmlspy.com.

问题2:
你的Image 元素已经在DTD文件中申明为空元素了<IMAGE SOURCE="LOGO"/>符合DTD的定义当然是对的。至于图片的显示你定义了实体语法也是对的,相关资料请查阅教程吧,太多了不好说。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
57.617ms