• javaweb学习总结八(xml约束DTD)


    一:XML约束概念

    xml约束:可以编写一个文档来约束xml文件的书写规范。

    xml语言格式比较严谨,不可能让程序员随意编写,所以必须要有约束。

    二:常用的xml约束技术

    1:DTD,document type definition

    2:校验xml文件正当性

    a:使用解析工具

    b:使用ide工具,如:eclipse

    books.html

     1 <?xml version="1.0" ?>
     2 <!DOCTYPE bookstore SYSTEM "book.dtd">
     3 <bookstore>
     4     <book>
     5         <name>Thinking in java</name>
     6         <author>Tom</author>
     7         <price>105.0</price>
     8     </book>
     9     <book>
    10         <name>Thinking in c</name>
    11         <author>Jack</author>
    12         <price>85.0</price>
    13     </book>
    14 </bookstore>

    books.dtd

    1 <!ELEMENT bookstore(book+)>
    2     <!ELEMENT book(name,author,price)>
    3     <!ELEMENT name(#PCDATA)>
    4     <!ELEMENT author(#PCDATA)>
    5     <!ELEMENT price(#PCDATA)>

    3:DTD约束有两种方式,一种作为单独的文件编写,也可以在XML文件内编写。

    a:在XML文件内编写DTD

    !DOCTYPE:定义约束  书架:根标签  

    b:外部引入DTD

    <!DOCTYPE 书架 "books.dtd">

    4:引用DTD约束

    三:DTD约束语法细节

    1:元素、属性、实体

    2:元素定义

    3:属性定义

    使用ATTLIST设置属性,#REQUIRED  为必须的,  IMPLIED  为可选的

    4:常用的属性值类型

    a:ENUMERATED,枚举

    b:ID

    c:ENTITY,实体

    引用实体:

    参数实体:

    四:案例分析

    1:dtd约束文件

     1 <!DOCTYPE CATALOG [
     2 
     3 <!ENTITY AUTHOR "John Doe">
     4 <!ENTITY COMPANY "JD Power Tools, Inc.">
     5 <!ENTITY EMAIL "jd@jd-tools.com">
     6 
     7 <!ELEMENT CATALOG (PRODUCT+)>
     8 
     9 <!ELEMENT PRODUCT
    10 (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>
    11 <!ATTLIST PRODUCT
    12 NAME CDATA #IMPLIED
    13 CATEGORY (HandTool|Table|Shop-Professional) "HandTool"
    14 PARTNUM CDATA #IMPLIED
    15 PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago"
    16 INVENTORY (InStock|Backordered|Discontinued) "InStock">
    17 
    18 <!ELEMENT SPECIFICATIONS (#PCDATA)>
    19 <!ATTLIST SPECIFICATIONS
    20 WEIGHT CDATA #IMPLIED
    21 POWER CDATA #IMPLIED>
    22 
    23 <!ELEMENT OPTIONS (#PCDATA)>
    24 <!ATTLIST OPTIONS
    25 FINISH (Metal|Polished|Matte) "Matte" 
    26 ADAPTER (Included|Optional|NotApplicable) "Included"
    27 CASE (HardShell|Soft|NotApplicable) "HardShell">
    28 
    29 <!ELEMENT PRICE (#PCDATA)>
    30 <!ATTLIST PRICE
    31 MSRP CDATA #IMPLIED
    32 WHOLESALE CDATA #IMPLIED
    33 STREET CDATA #IMPLIED
    34 SHIPPING CDATA #IMPLIED>
    35 
    36 <!ELEMENT NOTES (#PCDATA)>
    37 
    38 ]>

    2:根据dtd写的CATELOG.xml

    1 <?xml version="1.0" encoding="utf-8" ?>
    2 <!DOCTYPE CATALOG SYSTEM "dtd/catelog.dtd">
    3 <CATALOG>
    4 <PRODUCT>
    5         <SPECIFICATIONS>water</SPECIFICATIONS>
    6         <PRICE>3.5</PRICE>
    7     </PRODUCT>
    8 </CATALOG>
  • 相关阅读:
    jenkins+pytest+ allure运行多个py文件测试用例
    jenkins发送测试报告邮件
    appium+python 存在多个类时,不用每次都初始化解决办法
    allure报告定制(pytest+jenkins)
    UVa202
    UVa1588
    UVa1587
    OpenJ_Bailian3377
    OpenJ_Bailian 1852
    UVa227
  • 原文地址:https://www.cnblogs.com/warrior4236/p/5724139.html
Copyright © 2020-2023  润新知