zoukankan      html  css  js  c++  java
  • 进入黑马day1XML简单学习

    1、 XML概述

    1.1xml概念:xml本质上是一中数据存储的格式,可以在保存数据的同事保存数据之间的关系。Xml利用标签来保存数据的内容,利用标签之间的嵌套关系来保存数据之间的关系。

    1.2xml运用场景

            1.2.1数据传输:xml本质上是一段字符串,具有跨平台的特点,所有的开发语言、操作系统都支持,利用这样的特点可以用xml进行跨平台语言的数据传输。

            1.2.2作为配置文件来使用:xml在保存数据内容的同时也可以保存数据之间的层级关系,利用这样的特点,xml常被用来作为配置文件使用。

    1.3xml文件:将符合xml格式的数据写入到一个文件中去,那这样的文件就是一个xml文件,这样的文件通常都以.xml作为后缀名,请注意,不要将xml狭隘的理解成xml文件,xml除了文件形式还可以以其他的形式存在(内存中构建或网络中传输)。

    1.4xml校验:浏览器除了内置html解析器外,还内置了xml解析器,利用这一点,我们可以使用浏览器对xml进行校验。如果xml符合规范,浏览器就可以正常打开,如果不符合规范则提示错误信息和错误行数。

    2.xml语法

           2.1文档声明:告诉解析器如何解析当前xml,是对当前xml一个声明,文档声明必须在xml的第一行出现,而且只能出现一次。一个不包含文档声明的xml成为格式不良好的xml,虽然很多的解析器都可以解析,但这是不符合规范的、有风险的,所以不建议这样做。

                  2.1.1<?xml version=”1.0“?>注意:所有的问好空格都必须是英文半角,version代表当前xml所遵循的规范,到目前为止都是1.0规范

                  2.1.2<?xml version="1.0" encoding="gb2312"?>encoding属性指定当前xml所使用的编码集,解析器将用该编码集去解码xml。xml文件如果保存使用的编码和encoding所指定的编码不同就会导致乱码问题,一定要注意。

                  2.1.3<?xml version="1.0" standalone="no"?>standalone属性声明当前文档是否是一个独立的文档,默认值为yes,如果该文档要依存于其他文档存在,则应该将此属性设置为no。很多的解析引擎并不会真的参考这个属性,但是标准就是标准,我们要按标准学习

                 

           2.2元素

                  一个标签就是一个xml元素。

                  2.2.1标签可以分文开始标签和结束标签,在开始标签和结束标签之间的文本称为标签体,如果一个标签既不包含标签体也不包含其他元素,可以将开始标签和结束标签进行合并,这样的标签就叫做自闭标签。

                         例子:<a>我是标签体</a>    <a/>

                  2.2.2标签可以嵌套子标签,注意所有的嵌套都必须是合理嵌套。

                  2.2.3格式良好的xml必须包含且只能包含一个根标签。

                  2.2.4xml元素的命名规范:

                         区分大小写,例如,<P>和<p>是两个不同的标记。

                         不能以数字或"_" (下划线)开头。

                         不能以xml(或XML、或Xml 等)开头。

                         不能包含空格。

                         名称中间不能包含冒号(:)。

           2.3属性

                  2.3.1一个xml元素可以包含多个属性,一个属性分为属性名和属性值,其中属性值应该用双引号或单引号给引起来。

                  2.3.2其实一个元素的属性可以转化为该元素的子标签,在表示的内容上是同效的。

                         例子<chinacaptital="beijing"/>

                                                     --->

                                       <china>

                                                     <capital>

                                                                   beijing

                                                     </capital>

                                </china>

                         2.3.3属性也要遵循和元素相同的命名规范。

           2.4注释

                  <!--注释内容-->

                  2.4.1注视不能出现在文档声明之前。

                  2.4.2注视不能再嵌套注释

           2.5CDATA区: 被CDATA区包含的内容将不会被解析器解析,而会当作文本来处理。

                         <![CDATA[

                                       转义的内容

                                ]]>

           2.6转义字符

                  转义字符用来转义xml中特殊字符。

                  &--》 &amp;

                  <--》&lt;

                  >--》&gt;

                  " --》&quot;

                  ' --》&apos;

                  注意:CDATA区用来转义一段内容,转义字符只能用来转义单个字符。CDATA转义是通过通知处理器不要去解析其中的内容来实现的,本质传输的还是那个特殊字符。转义字符是将特殊字符用其他字符进行了替代,解析在看到转以后的字符后会用特殊字符去展现,其实他背后传输的是转义后的字符。

                                      

           2.7处理指令

                  用来通知解析器以何种方式去解析xml

                  <?xml-stylesheettype="text/css" href="1.css" ?>

                  其实文档声明也是一种特殊的处理指令

                  多学一点:其实xml最初出现的目的就是替代html做网页用的,结果这个家伙太复杂了,对于做前台的开发的美工小mm们太过复杂,所以一直没推行开,反倒是做为配置文件和传输数据的时候用的多一点。

                 

                 

    3.xml的约束技术

           xml约束技术就是可以提供一个文档用来约束一个xml文档的写法。

           市面上最常见的两种xml约束技术是DTD SChema,这两个技术都是标准,都由w3c组织负责发布。

          

           3.1DTD

          

                  3.1.1如何在xml中引入DTD

                                (1)外部引入:dtd约束写在外部文件中,然后在xml中进行引入

                                       <1>本地硬盘中的dtd文件的引入

                                              <!DOCTYPE根元素的名称 SYSTEM"dtd文件路径">

                                              例如:<!DOCTYPE 书架 SYSTEM “book.dtd”>

                                       <2>引入公共位置上的dtd

                                              <!DOCTYPE根元素的名称 PUBLIC"DTD名称""DTD所在的URL">

                                              例如:<!DOCTYPE web-app PUBLIC

                                                                   "-//SunMicrosystems, Inc.//DTD Web Application 2.3//EN"

                                                                   "http://java.sun.com/dtd/web-app_2_3.dtd">

                                (2)内部引入:dtd约束直接卸载xml文件中

                                例子:

                                <!DOCTYPE书架 [

                                              <!ELEMENT书架 (书+)>

                                              <!ELEMENT书 (书名,作者,售价)>

                                              <!ELEMENT书名(#PCDATA)>

                                              <!ELEMENT作者(#PCDATA)>

                                              <!ELEMENT 售价 (#PCDATA)>

                                       ]>

                  3.1.2如何约束xml元素

                         <!ELEMENT元素名称 元素约束>

                         元素约束:

                                (1)元素内容:元素内容必须用小括号引起来

                                <!ELEMENT书架 (.....)>

                                “,”: 如果括号内的内容用逗号进行分割的话,表明其中的内容必须按顺序出现。

                                “|”: 如果括号内的内容用竖线进行分割的话,表明其中的内容只能出现其中之一。

                                 #PCDATA:表明该元素中只能写标签体

                                      

                                       +:一次或多次 (书+)

                                  ?: 0次或一次 (书?)

                                 *: 0次或多次  (书*)

                                

                                 利用括号还可以进行组操作,形成更复杂的元素约束

                                

                                 例子: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

                                (2)存放类型

                                       EMPTY:表明当前元素不能再包含其他元素了

                                       ANY:表明当前元素可以包含任意元素

                 

                  3.1.3如何约束xml属性

                         <!ATTLIST元素名

                                       属性名1 属性类型属性约束

                                       属性名2 属性类型属性约束

                                       ……

                                >

                                (1)属性约束

                                       #REQUIRED表明该属性是一个必须存在的属性

                                       #IMPLIED表明该属性是一个可选的属性

                                       #FIXED"固定值" 表明该属性必须取给定的固定值,如果强行设定成其他值dtd校验不通过,如果不给值解析器会默认将加上该属性,并设定为给定的值

                                       "默认值" 如果该该属性没有指定,则取默认值,如果指定成其他则用指定的值

                                (2)属性类型

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

                                       ENUMERATED枚举,属性的值只能取给定的值中的一个

                                              例子:    类型 (科技|文学|教育) #REQUIRED

                                       ID:表明此属性是一个标志性的属性,在整个xml文档中该属性的值不能重复出现。注意:ID的值不能以数字开头,不能出现空白字符

                                              例子:书号 ID #REQUIRED

                                      

                                      

                  3.1.4ENTITY(实体)

                                实体:就是对一段内容的引用

                                实体分为引用实体和参数实体

                                (1)引用实体:这段引用是被用在xml文件中的

                                       <!ENTITY实体名称 "实体内容">

                                       引用的方式: &实体名称;

                                       例子:<!ENTITY网址 "www.itheima.cn">

                                                            <书 类型="科技" 书号="a111" 网址="&网址;">

                                (2)参数实体 用在DTD中的实体

                                   <!ENTITY % 实体名称 "实体内容" >

                                   引用参数实体:%实体名称;

  • 相关阅读:
    买二手房的税费详细版本
    实时推荐部分代码
    卡片推荐部分代码
    详解一下网络广告cpc、cpm、cpl、cpa、cps、cpr的计费方法是什么
    吴军硅谷来信《三板斧破四困境》
    JS实现的在线推荐逻辑
    mongo数据库时间存储的问题
    crontab 定时的陷阱
    【剑指offer】栈的压入、弹出序列
    【剑指offer】包含min函数的栈
  • 原文地址:https://www.cnblogs.com/kuyuyingzi/p/4266429.html
Copyright © 2011-2022 走看看