Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 冲浪技巧 > XML笔记(二)
【标  题】:XML笔记(二)
【关键字】:XML
【来  源】:http://blog.chinaunix.net/article.php?articleId=52268&blogId=8599

XML笔记(二)

Your Ad Here 关于DTD

 

3.1.1.3 外部DTD
   

一个DTD既可以是内部的,包含在一个“形式良好的”XML文件中(standalone=“yes”),采用前面一节中的形式;也可以是外部的,作为一个外部文件被引用(standalone=“no”)。

外部DTD的好处是:它可以方便高效地被多个XML文件所共享。你只要写一个DTD文件,就可以被多个XML文件所引用。事实上,当许多组织需要统一它们的数据交换格式时,它们就是通过外部DTD来完成的。这样做不仅简化了输入工作,还保证当你需要对DTD做出改动时,不用一一去改每个引用了它的XML文件,只要改一个公用的DTD文件就足够了。不过需要注意,如果DTD的改动不是“向后兼容”的,这时原先写的那些XML文件可能就会出问题了!

为了引用一个外部DTD,必须修改XML声明和DOCTYPE声明。

XML声明中必须说明这个文件不是自成一体的,即standalone属性的属性值不再是yes了。

<?xml version = "1.0"
      encoding="GB2312"
      standalone = "no"?>

在DOCTYPE声明中,应该加入SYSTEM属性:

<!DOCTYPE 根元素名
SYSTEM "外部DTD文件的URL">

例如:

<!DOCTYPE 联系人列表
SYSTEM "http://www.mydomain.com/dtds/fclml.dtd
">

上面的URL是一个绝对路径,除此以外,它还可以是一个相对路径,如:

<!DOCTYPE 联系人列表
SYSTEM "fclml.dtd">

它说明这个DTD文件和引用它的XML文件在同一个目录下。或者,这个DTD文件还可能在XML文件的父目录的子目录DTD下,表示为:

<!DOCTYPE 联系人列表
SYSTEM "../dtds/fclml.dtd">

使用这种方法,你可以方便地把DTD文件从你的XML文件中分离出来,粘贴到另一个文件fclml.dtd中。这样,你就得到一个DTD文件和一个有效的XML文件。

仍然回到前面那个包含客户联系方式信息的XML文件,如果使用外部DTD,其形式应该变为下面这个样子。

DTD文件fclml.dtd:

<?xml version="1.0" encoding="GB2312"?>

<!ELEMENT 联系人列表 (联系人)*>
<!ELEMENT 联系人 (姓名,ID,公司,EMAIL,电话,地址)>
<!ELEMENT 地址 (街道,城市,省份)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT 公司 (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ELEMENT 电话 (#PCDATA)>
<!ELEMENT 街道 (#PCDATA)>
<!ELEMENT 城市 (#PCDATA)>
<!ELEMENT 省份 (#PCDATA)>

XML文件client.xml:

<?xml version = "1.0" encoding="GB2312" standalone = "no"?>
<!DOCTYPE 联系人列表
    SYSTEM "fclml.dtd">
<?xml-stylesheet type="text/xsl" href="mystyle.xsl"?>

<联系人列表>
<联系人>
<姓名>张三</姓名>
<ID>001</ID>
<公司>A公司</公司>
<EMAIL>zhang@aaa.com</EMAIL>
<电话>(010)62345678</电话>
<地址>
<街道>五街1234号</街道>
<城市>北京市</城市>
<省份>北京</省份>
<ZIP>100001</ZIP>
</地址>
</联系人>

<联系人>
<姓名>李四</姓名>
<ID>002</ID>
<公司>B公司</公司>
<EMAIL>li@bbb.org</EMAIL>
<电话>(021)87654321</电话>
<地址>
<街道>南京路9876号</街道>
<城市>上海</城市>
<省份>上海</省份>
<ZIP>200002</ZIP>
</地址>
</联系人>
</联系人列表>

在这一节里,我们将为每个XML文件定义的DTD推广到一个系统内可共享的DTD。在下一节里,我们还可以将这个推广进一步推而广之,扩大到行业内甚至公众使用的公用DTD。

电脑排障:【上一篇】
ping命令:【下一篇】
【相关文章】
  • ant build.xml ha ha ha
  • jaxp 解析 xml
  • Xoops XMLRPC多个SQL注入漏洞
  • XML-RPC for PHP远程代码注入漏洞
  • XML数据库:最新进展和发展方向
  • 使用ODP.NET 支持 XML
  • XML 与 XML DB 和 ODP.NET 结合使用
  • Oracle和IBM将提供XML检索
  • 使用XML-API编辑管理我的CU-blog
  • XMLRPC-EPI学习笔记1
  • 【随机文章】
  • 我的第一个服务程序
  • 提示"注册表编辑已被管理员禁用"问题
  • Oracle 定期监控之一:表空间监控
  • 网络最经典命令行--- 网络工作者的必杀技
  • DoSTOR存储分析 LSI Logic公司宣布Engenio重组
  • Linux 指令篇:文件打印--lpr
  • 黎明静悄悄
  • Xhtml第5天:head区的其他设置
  • 原数据库已经丢失,怎么打开备份数据库呢?且数据是在别的机器拷过来的???
  • Linux的nfsd存在漏洞允许入侵者获取root
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.