zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Python迭代器的反复使用
    快速求幂模运算实现
    rural lifestyle & city lifestyle
    Python实现 扩展的欧几里德算法求(模逆数)最大公约数
    jupyter themes一行命令设置个人最爱界面
    python数组、矩阵相乘的多种方式
    有一组整型数,其中除了2个数字以外的其它数字都是俩俩成对出现的,编写程序找出这2个不成对出现的数字。
    Linux线程池技术处理多任务
    编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。
    C++const类型的引用参数
  • 原文地址:https://www.cnblogs.com/warrior4236/p/5724139.html
Copyright © 2011-2022 走看看