打印本文 打印本文 关闭窗口 关闭窗口
定义及使用实体
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3230  更新时间:2009/4/23 11:18:18  文章录入:mintao  责任编辑:mintao
O 是国际标准组织,而IEC 则是国际电子委员会。)前128 的字符码与众所皆知用在大多数计算机的的ASCII 字符相同。下图显示了在ISO/IEC 10646 字符集的前256 的字符。图中的每一个项目,初始的数字(1:、2:、3:等等)是字符的十进制码,而接在字段后面的字符则是真正的字符-若有的话-如Microsoft Internet Explorer 5 显示。
  
  
  
   例如,你可以看到在图中 ? 的十进制数值码是228。因此借着输入下面的字符参照,你可以将这个字符加入到你的文件中:
  & #228;
  注意
   参阅前面章节 <加入实体参照> 中的表格,内含你可以将字符参照加到文件位置的列表。每一个位置的后面接着一个范例。
   在下面的元素中,借着使用字符参照& #60;(60 是「<」的十进制字符码),「<」字符被加入元素字符数据。如前所述,将「<」照字面直接加入字符数据是不合法的。
   <TITLE><The Legend of Sleepy Hollow></TITLE>
   在下面的元素中,& #228;字符参照被用来加入 ? (该字符你无法以普通的键盘输入)到属性值中:
  <RESIDENT Address="Seilerst?tte 30,Wien">Mike Young</RESIDENT>
   最后,在下面DTD 中一般内部已解析实体的宣告里,& #37;字符参照被用来加入百分比(%)字符(37 是「%」的十进制码),该字符不能照字面直接被输入到内部实体的值中:
  <!ENTITY heading1 "& #37;Complete">
  
  使用预先定义的实体
  
   在XML 文件中,你可以使用预先定义实体的参照,将列在下面表格中五个字符的任何一个,加到某个这类字符被加入时可能会造成违法的位置。
  预先定义 实体加入的字符 相等的字符参照
  & amp; & & #38;
  & lt; < & #60;
  & gt; > & #62;
  & apos; ' & #39;
  & quot; " & #34;
   加入这些预先定义实体的参照相当于加入相对应字符的参照。当你在文件中看到预先定义实体的参照,将更容易记忆与了解。这些预先定义的实体就像其它一般内部已解析实体,除了你可以使用对这些实体的参照而不必定义实体-你还可以将它们加入相同的位置,如同这种型态的实体,即:
   在元素的内容中
   在属性的值中(当作属性宣告或元素起始卷标的默认值)
   在内部实体宣告的值中
   在下面的三个范例中,预先定义实体的参照被用来加入某些字符,这些字符若照字面加入可能会造成不合法的情况。
   在这个范例中,& lt;被用来加入「<」字符到元素的内容中:
  <TITLE><The Legend of Sleepy Hollow></TITLE>
   在第二个范例中,& amp;被用来加入(&)符号到属性值中:
  <PRODUCT Company="Ongaro &Sons">3/4" T fitting<</PRODUCT>
   在第三个范例中,& quot;被用来加入一个双引号(")到实体的值中(照字面直接加入可能造成不合法,因为双引号字符是用来包围字符串的):
  <!ENTITY heading "Christopher "Kit"Carson">
  
  独立的文件宣告
  
   如同你在第三章中学到的,你可以随意地含括一个位于XML 文件中的独立文件宣告。这个独立的宣告会告诉处理器是否需要外部宣告以处理文件。
   如果XML 文件拥有外部标签宣告(可能是在外部的DTD 子集中或在参数外部已解析实体中),但是没有一个宣告能够影响从XML 处理器传送到应用程序的文件内容,你可以将standalone 设定成'yes'或"yes",如下面的文件宣告一样:
  <?xml version="1.0" standalone="yes"?>
   将standalone 设定成"yes"可能防止对外部档案的不必要处理。将standalone 设定成'no'或"no",或省略standalone 宣告,会告诉处理器它必须处理文件的外部标签宣告,因为它们之中一个或多个标签的宣告将会影响到文件的内容。
   会影响文件内容的外部卷标型态的列表(因此禁止将standalone 设定成"yes"),请参阅 http://www.w3.org/TR/REC-xml 的XML 规格的第2.9 节。
  
  加入实体到文件中
  
   在下面的练习中,你将借着加入数个一般实体到第五章所建立的 Inventory Valid.xml 范例文件中,得到某些使用实体的经验。
  
  将实体加到范例文件中
  
   1. 在你的文字编辑器中,开启你在第五章的 <将格式正确的文件转换成完整有效的文件> 中所建立的 Inventory Valid.xml 文件。(可在列表5-1 以及随书光盘中找到该程序代码。)
   2. 在文件的DTD 的起始部分(在靠近文件的顶端以[ ]字符包围的文字区块),加入下面的实体与卷标宣告:
  3. <!--entities for assigning to the BINDING element:-->
  4. <!ENTITY mass "mass market paperback">
  5. <!ENTITY trade "trade paperback">
  6. <!ENTITY hard "hardcover">
  7.
  8. <!--external entities containing reviews -->
  9. <!--to be assigned to Review attribute of BOOK elements
  -->
  10. <!NOTATION DOC SYSTEM "Microsoft Word document">
  11. <!NOTATION TXT SYSTEM "plain text file">
  12. <!ENTITY rev_leaves
  13. SYSTEM "Review Leaves of Grass.doc"
  14. NDATA DOC>
  15. <!ENTITY rev_faun1
  16. SYSTEM "Review 01 of The Marble Faun.doc"
  17. NDATA DOC>
  18. <!ENTITY rev_faun2
  19. SYSTEM "Review 02 of The Marble Faun.txt"
  20. NDATA TXT>
  21.
  22. <!ENTITY rev_screw
  23. SYSTEM "Review of The Turn of the Screw.txt"
  NDATA TXT>
   前三个实体是一般内部已解析实体,让你可以加入BINDING 元素而不是输入真正的连结叙述到每一个元素中。使用实体可以帮助你确定给定链接型态的叙述在书籍与书籍之间是一致的。同时,实体让修改叙述变得更容易。(例如,你只需借着简单地编辑hard 属性,即可在每一个BINDING 元素中将「hardcover」 改成「hardback」。)接下来的(也是最后的)四个实体都是一般外部未解析实体,允许你将包含书籍评论的外部档案附加到BOOK 元素中。
   24. 为BOOK 元素加入Reviews 属性到属性列表宣告中,在DTD 后面部分中,它看起来像这样:
  25. <!ATTLIST BOOK InStock (yes|no)#REQUIRED Reviews ENTITIES #IMPLIED>
   Reviews 是一个选择性属性(#IMPLIED),你可以将一个或多个一般外部未解析实体的名称指定到Reviews 属性中。(Reviews 拥有ENTITIES 型态)。
   26. 在每一个BINDING 元素中,利用相对的实体参照来替换连结叙述。例如,你可以为The Adventures of Huckleberry Finn 改变BINDING 元素,从
  <BINDING>mass market paperback</BINDING>
   变成
  <BINDING>&mass;</BINDING>
   27. 将Reviews 属性加入BOOK 元素中,如下所示:
   对Leaves of Grass 来说:
  <BOOK InStock="no" Reviews="rev_leaves">
   对The Marble Faun 来说:
  <BOOK InStock="yes" Reviews="rev_faun1 rev_faun2">
   对The Turn of the Screw 来说:
  <BOOK InStock="no" Reviews="rev_screw">
   28. 为了反应出你指定的新档名,将位于文件起始部分的批注从
  <!--File Name:Inventory Valid.xml -->
   改成
  <!--File Name:Inventory Valid Entity.xml -->
   29. 使用文字编辑器的 另存新文件 指令将修改过的文件储存为 Inventory Valid Entity.xml 。列表6-1 显示完整的XML 文件。(你可以在随书光盘的 Inventory Valid Entity.xml 档案中找到。)
  Inventory Valid Entity.xml
  <?xml version="1.0"?>
  <!--File Name:Inventory Valid Entity.xml -->
  <!DOCTYPE INVENTORY
  [
  <!--entities for assigning to the BINDING element:-->
  <!ENTITY mass "mass market paperback">
  <!ENTITY trade "trade paperback">
  <!ENTITY hard "hardcover">
  <!--external entities containing reviews -->
  <!--to be assigned to Review attribute of
  BOOK elements -->
  <!NOTATION DOC SYSTEM "Microsoft Word document">
  <!NOTATION TXT SYSTEM "plain text file">
  <!ENTITY rev_leaves
  SYSTEM "Review Leaves of Grass.doc"
  NDATA DOC>
  <!ENTITY rev_faun1
  SYSTEM "Review 01 of The Marble Faun.doc"
  NDATA DOC>
  <!ENTITY rev_faun2
  SYSTEM "Review 02 of The Marble Faun.txt"
  NDATA TXT>
  <!ENTITY rev_screw
  SYSTEM "Review of The Turn of the Screw.txt"
  NDATA TXT>
  <!ELEMENT INVENTORY (BOOK)*>
  <!ELEMENT BOOK (TITLE,AUTHOR,BINDING,PAGES,PRICE)>
  <!ATTLIST BOOK InStock (yes|no)#REQUIRED
  Reviews ENTITIES
  #IMPLIED>
  <!ELEMENT TITLE (#PCDATA |SUBTITLE)*>
  <!ELEMENT SUBTITLE (#PCDATA)>
  <!ELEMENT AUTHOR (#PCDATA)>
  <!ATTLIST AUTHOR Born CDATA #IMPLIED>
  <!ELEMENT BINDING (#PCDATA)>
  <!ELEMENT PAGES (#PCDATA)>
  <!ELEMENT PRICE (#PCDATA)>]
  ]
  >
  <INVENTORY>
  <BOOK InStock="yes">
  <TITLE>The Adventures of Huckleberry
  Finn</TITLE>
  <AUTHOR Born="1835">Mark Twain</AUTHOR>
  <BINDING>& mass;</BINDING>
  <PAGES>298</PAGES>
  <PRICE>$5.49</PRICE>
  </BOOK>
  <BOOK InStock="no" Reviews="rev_leaves">
  <TITLE>Leaves of Grass</TITLE>
  <AUTHOR Born="1819">Walt Whitman</AUTHOR>
  <BINDING>& hard;</BINDING>
  <PAGES>462</PAGES>
  <PRICE>$7.75</PRICE>
  </BOOK>
  <BOOK InStock="yes">
  <TITLE>The Legend of Sleepy Hollow</TITLE>
  <AUTHOR>Washington Irving</AUTHOR>
  <BINDING>& mass;</BINDING>
  <PAGES>98</PAGES>
  <PRICE>$2.95</PRICE>
  </BOOK>
  <BOOK InStock="yes " Reviews="rev_faun1 rev_faun2">
  <TITLE>The Marble Faun</TITLE>
  <AUTHOR Born="1804">Nathaniel
  Hawthorne</AUTHOR>
  <BINDING>?</BINDING>
  <PAGES>473</PAGES>
  <PRICE>$10.95</PRICE>
  </BOOK>
  <BOOK InStock="no">
  <TITLE>Moby-Dick
  <SUBTITLE>Or,the Whale</SUBTITLE>
  </TITLE>
  <AUTHOR Born="1819">Herman Melville</AUTHOR>
  <BINDING>&hard;</BINDING>
  <PAGES>724</PAGES>
  <PRICE>$9.95</PRICE>
  </BOOK>
  <BOOK InStock="yes">
  <TITLE>The Portrait of a Lady</TITLE>
  <AUTHOR>Henry James</AUTHOR>
  <BINDING>& mass;</BINDING>
  <PAGES>256</PAGES>
  <PRICE>$4.95</PRICE>
  </BOOK>
  <BOOK InStock="yes">
  <TITLE>The Scarlet Letter</TITLE>
  <AUTHOR>Nathaniel Hawthorne</AUTHOR>
  <BINDING>& trade;</BINDING>
  <PAGES>253</PAGES>
  <PRICE>$4.25</PRICE>
  </BOOK>
  <BOOK InStock="no" Reviews="rev_screw">
  <TITLE>The Turn of the Screw</TITLE>

上一页  [1] [2] [3] [4]  下一页

打印本文 打印本文 关闭窗口 关闭窗口