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>
  • 相关阅读:
    git线上操作
    IDEA快捷方式
    Java 四种线程池
    java 获取当前天之后或之前7天日期
    如何理解AWS 网络,如何创建一个多层安全网络架构
    申请 Let's Encrypt 通配符 HTTPS 证书
    GCE 部署 ELK 7.1可视化分析 nginx
    使用 bash 脚本把 AWS EC2 数据备份到 S3
    使用 bash 脚本把 GCE 的数据备份到 GCS
    nginx 配置 https 并强制跳转(lnmp一键安装包)
  • 原文地址:https://www.cnblogs.com/dgwblog/p/11832006.html
Copyright © 2011-2022 走看看