zoukankan      html  css  js  c++  java
  • XML 初识

      XML的全称是Extensible Markup Language,意思是可扩展展标记语言。XML要实际应用中有两个主要的功能,一是用来保存数据的,二是用来作配置文挡使用。在XML语言中,允许用户自定义标签,一个标签用于描述一段数据;一个标签可分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其他标签描述数据。

      XML常见应用

      一个XML文件包含如下几部份

    •   文挡声明
    •   元素
    •   属性
    •   注释
    •   CDATA区、特殊字符
    •   处理指令

      1.文挡声明
      最简单的声明语法:<?xml version=”1.0” ?>。用Encoding属性说明文挡的字符编码: <?xml version=”1.0” encoding=”GB2312” ?>。用standalone属性说明文挡是否独立 <?xml version encoding=”GB2312” standalone=”yes” ?>,虽然标注了该XML是独立的,但在IE游览器并没有严格按照XML规格去办事。不管有没有标注,IE都认为文挡是非独立的。

         注:另外你保存的时候,encoding是什么,文本另存为的时候就得是什么。

      2.元素

    • XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签。
    • 一个标签可以嵌套若干子标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套。
    • 有且仅有一个根标签,其它标签都是这个根标签的子孙标签。

      对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。
      第一段:<URL>www.hstc.cn</URL>
      第二段
      <URL>
        www.hstc.cn
      </URL>

      一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范。

    • 区分大小写
    • 不能以数字或_开头
    • 不能含空格
    • 名称中间不能包含冒号(:)

      3.属性

           一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:<input name=”text”>。 属性值一定要用双引号(“)或单引号(’)引起来。定义属性必须遵循与标签相同的命名规范。另外,标签属性所代表的信息,也可以被改成用子元素的形式来描述

      例如:
       <input>
        <name>text</name>
      </input>

      4.CDATA区
      术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。在XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。
      某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。CDATA 部分中的所有内容都会被解析器忽略。CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

           <![CDATA[

                  <URL>www.hstc.cn</URL>

           ]]>

      5.处理指令
      处理指令,简称PI(PROCESSING INSTRUCTION)。处理指令用来指挥解析引擎如何解析XML文挡内容。例如在XML文挡中可以使用XML-stylesheet指令,通知XML解析引擎,应用CSS文件显示XML文挡内容。

           <?xml-stylesheet type=”text/css” href=”1.css” ?>

      处理批令必须以 <?  作为开头,以 ?> 作为结尾,XML声明语句就是最常见的一种处理指令。

      例如下面这个例子:

    View Code
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/css" href="test.css"?>
    <网站>
        <站点>
            <name>新浪网</name>
            <URL>http://www.sina.com.cn</URL>
        </站点>
        <站点>
            <name>腾讯网</name>
            <URL>http://www.qq.com</URL>
        </站点>
        <站点>
            <name>百度网</name>
            <URL>http://www.baidu.com</URL>
        </站点>
    </网站>
    
    /*test.css文件*/
    @CHARSET "UTF-8";
    name{ font-size:16px;color:blue;}
    URL{ font-size:14px; color:red;}

      显示结果如下:

    ==========================================================

     XML约束

      什么是XML约束:在XML技术里,可以编写一个文挡来约束一个XML文挡的书写规范,这称之为XML约束。常见的约束技术有:XML DTD和XML Schema
      DTD是全称Document Type Definition 全称是文挡类型定义

      DTD的两种校验方式,第一种使用外部引用

      新建一个BOOK.DTD文件

      <!ELEMENT 我的书 (书+)>
      <!ELEMENT 书 (书名,作者,价格)>
      <!ELEMENT 书名 (#PCDATA)>
      <!ELEMENT 作者 (#PCDATA)>
      <!ELEMENT 价格 (#PCDATA)>

      在BOOK.XML引入BOOK.DTD文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE 我的书 SYSTEM "book.dtd">
    <我的书>
        <>
            <书名></书名>
            <作者></作者>
            <价格></价格>
        </>
    </我的书>

      第二种方式 在XML文件中内部嵌入DTD

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE 我的书[
        <!ELEMENT 我的书 (书+)>
        <!ELEMENT 书 (书名,作者,价格)>
        <!ELEMENT 书名 (#PCDATA)>
        <!ELEMENT 作者 (#PCDATA)>
        <!ELEMENT 价格 (#PCDATA)>
    ]>
    
    
    <我的书>
        <>
            <书名></书名>
            <作者></作者>
            <价格></价格>
        </>
    
        <>
            <书名></书名>
            <作者></作者>
            <价格></价格>
    
        </>
    </我的书>

      DTD的语法细节
      
    用 | 分隔,任选其一。
      用+ * ? 等符号表示
      +:一次或多次
      ?:0次或一次
      *:0次或多次
      结果圆括号表示批量设置,例如(TITLE | AUTHOR)*

      属性定义

      Xml文挡中标签属性需引过ATTLIST为其设置属性。
      语法格式如下:

           <!ATTLIST 元素名
        属性名1 属性值类型  设置说明
        属性名2 属性值类型  设置说明
        …
       >

       属性声明举例
      <!ATTLIST 商品
        类别 CDATA #REQUIRED
        颜色 CDATA #IMPLIED
      >

       设置说明:
      #REQUIRED 必须设置该属性
      #IMPLIED 可以设置也可以不设置
      #FIXED 说明该属性的取值固定为一个值,在XML文件中不能为该属性设置其他值

      举例

    View Code
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE 我的书[
        <!ELEMENT 我的书 (书+)>
        <!ELEMENT 书 (书名,作者,价格)>
        <!ELEMENT 书名 (#PCDATA)>
        <!ELEMENT 作者 (#PCDATA)>
        <!ELEMENT 价格 (#PCDATA)>
        
        <!ATTLIST 我的书
            日期 CDATA #IMPLIED
            电话 CDATA #REQUIRED
        >
    ]>
    
    
    <我的书 电话="89891231">
        <>
            <书名></书名>
            <作者></作者>
            <价格></价格>
        </>
    
        <>
            <书名></书名>
            <作者></作者>
            <价格></价格>
    
        </>
    </我的书>

      

      常见的属性值类型

           <!ATTLIST 元素名
        属性名1 属性值类型  设置说明

        …
       >

      1.CDATA:表示属性值为普通文本字符串

      2.枚举

      3.ID值

    View Code
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE 我的书[
        <!ELEMENT 我的书 (书+)>
        <!ELEMENT 书 (书名,作者,价格)>
        <!ELEMENT 书名 (#PCDATA)>
        <!ELEMENT 作者 (#PCDATA)>
        <!ELEMENT 价格 (#PCDATA)>
        
        <!ATTLIST 书
            编号 ID #REQUIRED
        >
    ]>
    
    
    <我的书>
        <书 编号="1">
            <书名></书名>
            <作者></作者>
            <价格></价格>
        </>
    
        <书 编号="2">
            <书名></书名>
            <作者></作者>
            <价格></价格>
    
        </>
    </我的书>

      4.实体

      实体ENTITY用于为一段内容创建一个别名,以后在XML文挡中就可以使用别名引用这段内容了。
      语法格式:<!ENTITY 实体名称 “实体内容” > 直接转变成实体内容
      引用方式:&实体名称
      举例

        <!ENTITY copyright “I am a programmer”>
        …
        &copyright

      

      看来这里我对HTML的&nbps;有了认识,他也是实体引用。 

    =================================================================

      DTD中文参加手册:http://wenku.baidu.com/view/9b38a1c38bd63186bdebbc01.html

  • 相关阅读:
    区块链中的随机数 nonce
    SaaS(软件即服务)、PaaS(平台即服务)、IaaS(基础架构即服务)、BaaS(区块链即服务)
    程序插桩简介
    侧链技术
    闪电/雷电网络
    Ubuntu16.04安装/升级openssl到1.1版本
    Ubuntu16.04升级Python3及其pip3并切换为默认版本
    Python——/usr/bin/env: ‘python(3) ’: No such file or directory
    TCP通信功能 (agent功能)
    gin框架web操作数据库
  • 原文地址:https://www.cnblogs.com/cxeye/p/2719538.html
Copyright © 2011-2022 走看看