zoukankan      html  css  js  c++  java
  • 通过实例来学习XML DTD

    使用DTD的原因:

    注意:由于它自身的一些缺点,DTD终将被淘汰,但是它还是要学习的。学习完DTD后,后面继续学习XML Schema。
    1,通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
    2,通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。
    3,您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
    您还可以使用 DTD 来验证您自身的数据。
    XML文件

    <?xml version="1.0" encoding="utf-8"?>
    <!--导入外部dtd文件--> 
    <!DOCTYPE Students SYSTEM "Students.dtd">
    
    <Students> 
     <Student num="z001">  
        <name>小明</name>
        <sex></sex>    
        <age>20</age>  
        <subject><![CDATA[数学&英语]]></subject>  
        <sport>篮球</sport> 
      </Student>  
      <Student num="z002"> 
        <name>小红</name>
        <sex></sex>    
        <age>21</age>  
        <subject><![CDATA[数学&英语]]></subject>  
        <sport>篮球</sport> 
      </Student>  
      <Student num="z003"> 
        <name>小蓝</name>
        <sex></sex>    
        <age>23</age>  
        <subject><![CDATA[数学&英语]]></subject>  
        <sport>篮球</sport> 
      </Student>   
    </Students>

    DTD文件:
    DTD注释格式:<![ IGNORE [ 注释的内容 ]]>

    <![ IGNORE [定义Student子元素必须在 Studens父 元素内出现至少一次。]]>
    <!ELEMENT Students (Student+)>
    
    <![ IGNORE [ 设置Student元素中必须有name,age,subject,sport元素并且他们的出现顺序也必须是这样的]]>
    <!ELEMENT Student (name,sex,age,subject,sport)>
    
    <![ IGNORE [ 设置num属性为必需且唯一的但是属性的值不能是以数字开头]]>
    <!ATTLIST Student
        num ID #REQUIRED
    >
    
    <![ IGNORE [ !ELEMENT name 定义 name 元素为 "#PCDATA" 类型
                  !ELEMENT sex 定义 sex元素为 "#PCDATA" 类型,下同
    ]]>
    <!ELEMENT name      (#PCDATA)>
    <!ELEMENT sex      (#PCDATA)>
    <!ELEMENT age       (#PCDATA)>
    <!ELEMENT subject   (#PCDATA)>
    <!ELEMENT sport     (#PCDATA)>
    

    测试的html文件:

    <html>
        <head>
        <!--自己编写一个简单的解析工具,去解析XML DTD是否配套-->     
        <script language="javascript">
            // 创建xml文档解析器对象
            var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
            // 开启xml校验
            xmldoc.validateOnParse = "true";
            // 装载xml文档,即指定校验哪个XML文件
            xmldoc.load("Students.xml");
            document.writeln("错误信息:"+xmldoc.parseError.reason+"<br>");
            document.writeln("错误行号:"+xmldoc.parseError.line);
        </script>
    
        </head>
        <body>
    
        </body>
    </html>

    先来用IE测试一下(必须用ie而且需要把IE浏览器的编码格式改为UTF-8其他浏览器兼容模式也OK)
    错误为0
    大家可以看到我们的XML文件完全符合DTD的要求,下面我们来修改一下我们的XML文件
    (1)将第6行的num属性删去的再刷新网页得到的结果是:
    这里写图片描述
    (2)删除第11行的sport元素
    这里写图片描述
    (3)将num=”z001”的学生的sex元素和name元素调换位置
    这里写图片描述
    这是我们作业的一小部分后面还要用C++解析(java解析的已经完成,博客里也有)。之前就看过DTD但是只是草草的过了一下,今天重新学了一下。希望大家通过这个例子可以快速掌握DTD,当然我的并不全面。大家可以去 DTD 教程 http://www.w3school.com.cn/dtd/index.asp 详细了解。

  • 相关阅读:
    spark RDD操作的底层实现原理
    Spark累加器(Accumulator)陷阱及解决办法
    spark collect获取所有元素
    spark submit 入门
    pyspark使用ipython
    top k
    快速排序
    用 Spark 为 Elasticsearch 导入搜索数据
    静态成员变量不占用类的内存空间
    重载函数的调用匹配规则
  • 原文地址:https://www.cnblogs.com/snailclimb/p/9086475.html
Copyright © 2011-2022 走看看