zoukankan      html  css  js  c++  java
  • XML与DTD(够用)

    1: 概述

    1.1 什么是XML

    1.2 三个重点

    1.3规则

    1.4 常用转义

    2: Xml声明

    XML 中,空格会被保留

    XML LF 存储换行

    3:Xml标签

    4:Xml元素

    5:XML 属性

    6:验证XML

    7:最佳命名习惯

    8:XML进阶

    1: 概述

    1.1 什么是XML

       XML指可扩展标记语言。它是从标准通用标记语言派生的基于文本的标记语言(SGML).

    1.2 三个重点

     XML是可扩展的XML允许你创建自己的自描述性的标签,或语言,适合您的应用程序.

     XML进行数据 : 不存在它:XML允许你无论存储将如何呈现这些数据.

     XML是一个公共标准 : XML是由一个组织开发的名为万维网联盟(W3C),并可以作为一个开放的标准.

     1.3规则

    基本语法:

      1. xml文档的后缀名 .xml

      2. xml第一行必须定义为文档声明

      3. xml文档中有且仅有一个根标签

      4. 属性值必须使用引号(单双都可)引起来

      5. 标签必须正确关闭

      6. xml标签名称区分大小写 (标签 属性)

              7. xml只允许只有一个根(Root)标签

              8. xml标签的属性也是区分大小写的

          1.4 常用转义

         

    2: Xml声明

      xml分为两个部分, xml声明 xml标签

     版本:

     编码

     是否依赖于信息从外部源,诸如外部的文档类型定义(DTD)的语法分析程序,其内容。默认值被设置为无。将其设置为yes告诉处理器有需要解析的文件没有外部声明

     yes no

    <?xml version='1.0' encoding='UTF-8' standalone='yes' ?>

    xml注释:

    <!-- -->

    XML 中,空格会被保留

    Hello           Tove   ====>转换为 Hello Tove

    XML 以 LF 存储换行

      Windows 应用程序中,换行通常以一对字符来存储:回车符(CR)和换行符(LF)。

      Unix Mac OSX 中,使用 LF 来存储新行。

    3:Xml标签

    完整闭合标签

    <address>这是正确的句法</address>

    空标签

    <hr></hr> #或者 <hr/>

    4:Xml元素

        可以包含一个或者多个元素,这些元素允许两种不同的赋值方法

    <?xml version="1.0" encoding="UTF-8"?> <note>  <to>Tove</to>  <from>Jani</from>  <heading>Reminder</heading>  <body>Don't forget me this weekend!</body> </note>

    5:XML 属性

     属性必须加引号

    <person sex="female"> 或者这样也可以: <person sex='female'>

     多个属性

    <person name="tom" sex="female">

     尽量使用元素代替属性

     属性不能包含多个值(元素可以)

     属性不能包含树结构(元素可以)

     属性不容易扩展(为未来的变化)

     数据库中用于标识某个元组

     使用id表示某一组数据

    <?xml version="1.0" encoding="utf-8"?> <messages>  <note id="501">    <to>Tove</to>      <from>Jani</from>      <heading>Reminder</heading>      <body>Don't forget me this weekend!</body>  </note>   </messages>

    6:验证XML

    DTD验证

     本地验证: <!DOCTYPE note SYSTEM "Note.dtd">

     网络验证:<!DOCTYPE note PUBLIC "URL">

    <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE note SYSTEM "Note.dtd"> // 指定验证的文件 <note>  <to>Tove</to>    <from>Jani</from>    <heading>Reminder</heading>    <body>Don't forget me this weekend!</body> </note>

    schema验证

    XSD:描述

    7:最佳命名习惯

     使名称具有描述性。使用下划线的名称也很不错:<first_name><last_name>

     名称应简短和简单,比如:<book_title>,而不是:<the_title_of_the_book>

     避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为您想要从 first 里边减去 name

     避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。

     避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。

     显示XML

     使用CSS

     使用XLAT

     8:XML进阶

    XML命名空间

     xmlns:f="http://www.w3cschool.cc/furniture"   f就是指定的命名空间

     Android中 布局标签就是使用的这种命名空间

    CDATA数据

       对于某些数据需要直接按照文本形式处理的 @lt @gt 就不会处理

    <![CDATA[ if (a < b && a < 0) then 具体数据  ]]>

    XML 数据岛

      XML 数据岛是嵌入到 HTML 页面中的 XML 数据。

     XML 数据岛只在 Internet Explorer 浏览器中有效。

    1: 基本使用

    2:声明元素

    3 xml属性

    4:xml实体

        定义:  文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。

     PCDATA:

    PCDATA 的意思是被解析的字符数据(parsed character data)。

    可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

    PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。

     CDATA:

    CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

     XML外部 内部:

    <!DOCTYPE tglib SYSTEM "URL|本地路径">

    <!DOCTYOE tglib PUBLICK "URL"> // 声明为公共的DTD文件

    1: 基本使用

    声明DTD开始部分

    <!DOCTYPE DTDNAME [    <!-- 具体的元素 属性 实体--> ]>

    2:声明元素

     空元素

    <! ELEMENT name EMPTY> # 实例 <!ELEMENT br EMPTY> <by/>

         多个元素

    含有多个元素的元素,子元素必须连续声明

    <!ELEMENT name (att1,att2) # 实例 <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

        PCDATA元素(可以被解析为元素的)

    <!ELEMENT name (#PCDATA)> # 实例 <!ELEMENT body (#PCDATA)>

        带有任何内容的元素

    <!ELEMENT name ANY> # 实例 <!ELEMENT body ANY>

     声明只出现一次的元素

    <!ELEMENT element-name (child-name)> # 实例: <!ELEMENT note (message)>

    声明最少出现一次的元素 +

    <!ELEMENT element-name (child-name+)> # 实例: <!ELEMENT note (message+)>

    声明出现零次或多次的元素 *

    <!ELEMENT element-name (child-name*)> # 实例: <!ELEMENT note (message*)>

    声明出现零次或一次的元素 ?

    <!ELEMENT element-name (child-name?)> # 实例: <!ELEMENT note (message?)>

    声明 |可选内容

    实例: <!ELEMENT note (message|body)>

    声明混合型的内容

    实例: <!ELEMENT note (#PCDATA|to|from|header|message)*>

    3 xml属性

        格式

    <!ATTLIST elename attname type value> #          元素名  属性名   类型  属性值 # 实例 <!ATTLIST User name CDATA  " "> # 这个" " 可以不给 可以给限定值 #REQUIRED #FIXED #IMPLIED

        提供的类型

    类型

    描述

    CDATA

    值为字符数据 (character data)

    (en1|en2|..)

    此值是枚举列表中的一个值

    ID

    值为唯一的 id

    IDREF

    值为另外一个元素的 id

    IDREFS

    值为其他 id 的列表

    NMTOKEN

    值为合法的 XML 名称

    NMTOKENS

    值为合法的 XML 名称的列表

    ENTITY

    值是一个实体

    ENTITIES

    值是一个实体列表

    NOTATION

    此值是符号的名称

    xml:

    值是一个预定义的 XML

    提供的属性

    解释

    属性的默认值

    #REQUIRED

    属性值是必需的

    #IMPLIED

    属性不是必需的

    #FIXED value

    属性值是固定的

       

        完整例子

    <!ELEMENT Address EMPTY> <!ATTLIST Address street CDATA "" > # 应用 <Address street="幸福大街" />

         强制要求值 可选 固定值

    <!ELEMENT Address EMPTY> <!ATTLIST Address street CDATA #REQUIRED > //street 这个属性必须给出 # 实例 <Address street='xxx'/> <!ATTLIST Address street CDATA #FIXED "必须给出固定的值"> // <!ATTLIST Address street CDATA #IMPLIED > //可选

         列举属性值

    DTD: <!ATTLIST payment type (check|cash) "cash"> # XML 例子: <payment type="check" /> <payment type="cash" />

        指定ID IDREF

    <!ATTLIST User id ID #REQUIRED > // # <User id="101"/> <!ATTLIST User2 id IDREF #REQUIRED> <User2 id="101"> // 引用别人的ID <User2 id="101 102 103"> // 表示引用多个ID

    4:xml实体

      定义

    <!ENTITY entity-name value> # 实例 <!ENTITY name1  "tom"> <!ENTITY name2  "gory"> # 应用 <author>@name1;@name2</author>

     5 一些题目

     

     根据上面的内容写出DTD约束文件

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE Teams {
        <!ELEMENT Teams (Team+)>
        <!ELEMENT Team (#PCDATA)>
        <!ELEMENT Team (Teamname,Country,Member+)>
        <!ELEMENT Teamname (#PCDATA)>
        <!ELEMENT Country (#PCDATA)>
        <!ELEMENT Member (#PCDATA)>
        <!ATTLIST Member Name CDATA #REQUIRED>
        <!ATTLIST Member Age CDATA #REQUIRED >
        <!ATTLIST Member Sex CDATA (Female|Male) "Male">
    ]>
    <Teams>
        <Team>
            <Teamname>Roma</Teamname>
            <Country>Italy</Country>
            <Member Name=”AAA ”Age="36" Sex="Male" />
            <Member Name=”BBB ”Age="26" Sex="Female" />
        </Team>
    </Teams>

     XSD Schema  描述

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.example.org/NewXMLSchema"
        xmlns:tns="http://www.example.org/NewXMLSchema"
        elementFormDefault="qualified">
        <xs:element name="Teams">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Team" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Teamname" type="xs:string"></xs:element>
                            <xs:element name="Country" type="xs:string"></xs:element>
                            <xs:element name="Member" maxOccurs="100">
                                <xs:complexType>
                                    <xs:attribute name="Name" type="xs:string"></xs:attribute>
                                    <xs:attribute name="Age" type="xs:integer"></xs:attribute>
                                    <xs:attribute name="Sex" type="xs:string"></xs:attribute>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
        </xs:element>
    </xs:schema>

    XML文档

    <?xml version="1.0" encoding="UTF-8"?>
    <Teams xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="NewXMLSchema.xsd"
        <Team>
            <Teamname>Roma</Teamname>
            <Country>Italy</Country>
            <Member Name="AAA" Age="34" Sex="Male"/>
            <Member Name="AAA" Age="34" Sex="Male"/>
        </Team>
    </Teams>
  • 相关阅读:
    Merge Intervals
    Insert Interval
    Combination Sum
    Trapping Rain Water II
    Kth Largest in N Arrays
    Spiral Matrix
    Search a 2D Matrix
    Binary Postorder Traversal
    Search in Rotated Sorted Array II
    S3C2440移植uboot之启动过程概述
  • 原文地址:https://www.cnblogs.com/dgwblog/p/11832006.html
Copyright © 2011-2022 走看看