XML知识点(总共2部分)--1

一、xml:配置文件

1、xml概念:可扩展标记语言(eXtensible Markup Language)是一套定义语义标记规则的语言

  • A:HTML语言 超文本标记语言(HyperText Markup Language):用于万维网上的数据静态展示

    • 普通文本:浏览器可以打开,仅仅展示数据内容
    • 超文本:数据内容展示可以设置文本效果
      • 标记:<> </>
      • 标签:< a> < /a>
  • B:HTML缺点:

    1. HTML不能自定义标签,只能使用预定义标签(浏览器不一样,W3C支持的预定义标签不一样,即显示的效果不一样)
    2. HTML预定义标签本身不能描述数据
    3. HTML标记没有国际化
  • C:XML:可拓展的标记语言

    • a.W3C组织在1998年推出了可扩展标记语言
    • b.特点:
      1. XML可拓展标记语言,可自定义标签,描述数据,做配置文件< Student>< /Student>;<中文></中文>。
      2. XML类似HTML,在浏览器显示数据,展示文本效果,可以被CSS设计整体样式。
      3. XML的设计宗旨是保存数据,而非显示数据,侧重点是 数据描述 和 数据结构(数据传输需要一定的格式)。
        • 有结构的保存数据(通过标签嵌套,设计数据存储结构)
      4. XML 标签没有被预定义,需要自定义(标签名需要自己定义:用来描述存储数据)。
      5. XML实现了国际化标准Internationalization(别名:I18N),统一的表现形式,因此是一种跨平台,跨语言的技术(用xml文件进行数据传输)。
      6. XML有结构的永久保存数据,很好的描述数据。
    • c. XML用途:配置文件1.保存数据 2.描述数据(自定义标签标识数据)
      1. 描述业务数据,数学数据
      2. 实现了系统的解耦机制(例如:Web Service和JMS使用了XML,实现了系统不同模块的解耦),即当作了配置文件
    • d. 优点:
      1. 实用性强:XML是以文本进行数据存储的,很容易修改和调试。
      2. 访问速度块:XML使用的层次结构,可以很方便,很快的获取对应的节点对应的数据。
      3. 可拓展性好:XML不仅可以存储数据和展示数据,还可以通过相关的属性标记数据的属性和类型,以便应用程序根据实际要求选择对应的数据。同时XML中的标记可以由使用着自己定义,很好的拓展性。
      4. 跨平台性好:XML具有同一标准的语法。

2、xml语法成分

  • A:标签要求:

    1. XML有且只有一个根元素,必须要有根元素

      • 根元素是包含其他所有元素的标签< root></ root>,其它所有标签都在根标签(开始标记和结束标记中间)里面

        <root>
        	<student></student>
        </root>
        
    2. XML中的自定义标签要成对出现(开始标记-结束标记同时出现)

    3. 区分大小写,开始标记-结束标记中的标签名要保持一致

    4. 标签嵌套,每个标签的开始标记和开始标记都在同一层级中

  • B:XML标签中的属性

    1. 写在开始标签中:< student name=“tom”>< /student>

    2. 属性值必须加" "或者’ ';多个属性之间用空格分隔

    3. 属性和属性值通过 = 连接,属性必须要赋值

      <root>
      	<student name="tom" id="1" flag="true">   	
          </student>
      </root>
      
  • C:XML的注释: ,不能注释特殊字符,快捷键:ctrl+shift+/;取消: Ctrl+shift+\

  • D:标签的文本域:< student> 文本域 < /student>

    • 文本域中的空格,换行都作为数据内容被处理,中间的空格和换行都会被当做一个空格
      • 一些封装好的解析方法中,是可以忽略掉空格和换行的(第三方jar包)
  • E:XML指令< ? ? >:处理指令必须以 < ? 作为开头,以 ?> 作为结尾,XML文件的头部声明语句就是最常见的一种处理指令。

    • < ?xml version=“1.0” encoding=“UTF-8”? >:只是定义中文编码格式

      • version:指定xml的版本
      • encoding:指定编码格式 GBK GB2312 ISO-8859-1
      • standalone="yes/no"代表该文件是否独立
      1. UTF-8:3个字节表示一个中文
      2. GBK:2个字节表示一个中文
      3. ISO-8859-1:1个字节表示一个中文
  • F:XML元素组成

    1. 开始标记和结束标记(空元素< student/>)
    2. 开始标记中的属性及属性值(属性值不可以出现特殊字符&,<,>)
    3. 文本域中的数据或者引用实体
      1. 数据:“tom”
      2. 引用实体:&name;(name为开始定义的实体)
    4. 子元素(子标签)或者是混合元素(数据+子元素)
  • G:标签命名规则

    1. 标签名:以字母或下划线开头;可以由数字、字母、连接符号(-)、
      下划线(_),点(.),命名

    2. 区分大小写

    3. 不能包含空格,空格是用来分隔属性的

    4. 不能使用W3CShcool关键字

    5. 没有长度限制

      <a></a>
      <_></_>
      <a_b></a_b>
      <a.c-b></a.c-b>
      <杰普.></杰普.>
      
  • H:良好结构的xml,符合以上语法要求

    • 有效的Xml = 良好结构 + DTD约束

3、xml约束

  • A:XML内部约束创建实体:< !DOCTYPE root[ 约束 ]>对整个XML文件进行约束

    • 标签文本域中存放数据或者引用实体

    • PCDATA(Parsed Character Data):XML中的内容被解析器解析

      • < !ELEMENT 元素 (#PCDATA)> :这个元素不可以包含其他元素,但是可以有文本域
    • CDATA:(Character Data):写在文本域中,不被解析器解析,原样输出< ![CDATA [ 原样输出的数据 ]]

      <!--内部约束DTD,约束整个XML文件-->
      <!DOCTYPE 根元素[
      	<!-- 可以创建多个实体-->
      	<! ENTITY 实体名 "实体值">
      ]>
      <!DOCTYPE root [
      <!-- 定义一个实体 -->
      	<!ENTITY  name "tom">
      	<!ENTITY  address "昆山浦软">
      ]><!-- 对整个xml进行约束 -->
      
      <root>
      	<!-- &实体名; 实体值 -->
      	&address;--&name;	
          <!-- “>”可以显示 “<”不可以显示 -->
      	&lt;				<!-- 表示“<” -->
      	&gt;				<!-- 表示“>” -->
      	&quot;				<!-- 表示“ " ” -->
      	<!-- &nbsp;不可以使用 -->
      	&apos;				<!-- 表示“ ' ” -->
      	&amp;				<!-- 表示“&” -->
      		
      	<!-- PCDATA模式所有的字节内容都可以被解析器解析 -->
      	<!-- CDATA包裹的内容不会被解析器解析 -->
      	<![CDATA[ &lt; ]]>
      </root>
      
  • B:XML被CSS渲染

    • 处理指令:简称PI (processing instruction),处理指令用来指挥 [解析引擎] 如何解析XML文档内容。

    • 例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,使用css文件显示xml文档内容。

      <?xml-stylesheet type="text/css" href="css文件路径"?>
      
  • C:约束:

    1. 内部约束:< !DOCTYPE root [ 约束 ]>

      1. 元素约束:< !ELEMENT 元素 内容模式 >

        <!-- 内部约束 -->
        <!DOCTYPE root [
        	<!-- <!ELEMENT 元素 内容模式> -->
        	1.内容模式:(#PCDATA)不能包含子元素,只能是为空或者是字符(包括空格和换行)
        	<!-- <!ELEMENT root (#PCDATA)> -->
        	
        	2.内容模式:EMPTY标签内为空,不能存在任何内容
        	<!-- <!ELEMENT root EMPTY> -->
        	
        	3.内容模式:ANY ,可以有任何元素或者文本内容
        	<!-- <!ELEMENT root ANY> -->
        	
        	4.内容模式:“,”必须按照顺序出现
        	<!-- <!ELEMENT root (a,b)> -->
        	5.内容模式:“|”两个元素出现其中一个
        	<!-- <!ELEMENT root (a|b)> -->
        	
        	5.内容模式:?:0~1次 *:0~n次 +:1~n次
        	<!-- <!ELEMENT root ((a?,b*)|(b+,a))> -->
          	
        	6.几种模式可以混合使用
        	<!-- <!ELEMENT root ((a,b)+|(b,a)?)*> -->
        ]>
        <root>
        	<b></b>
        	<a></a>
        </root>
        
      2. 元素属性约束:< !ATTLIST 标签名 (属性名 属性类型 属性默认值) + >:从中可以定义约束多个属性(+表示一个或者多个);< !ATTLIST 标签名 属性名 属性类型 属性默认值 >:单独定义一个属性约束

        • a、属性类型:

          1. ID:属性值必须唯一,属性值必须满足命名规则;
          2. (枚举1|枚举2|枚举3|…):属性值必须是枚举中的值;
          3. CDATA:属性值为字符
        • b、属性默认值:

          1. #REQUIRED:属性声明必须出现在元素的开始标签中;

          2. #IMPLIED:属性声明可有可无,不出现时候没有默认值;

          3. “字符串值”:属性声明可有可无,不出现时候默认值为”字符串“;

          4. #FIXED “字符串值”:属性声明可有可无,属性声明时的属性值必须为“字符串值”;

            <!-- 内部约束 -->
            <!DOCTYPE root [
            	<!ELEMENT root (a,b,c)>
            	
            	<!-- <!ATTLIST 元素名 (属性名 属性类型 属性默认值)+ -->
            	<!-- <!ATTLIST 元素名 属性名 属性类型 属性默认值> -->
            	<!ATTLIST a name (李四|张三) #REQUIRED>
            	<!ATTLIST a id ID #REQUIRED>
            	<!ATTLIST b age CDATA #IMPLIED><!-- #IMPLIED不是必须出现 -->
            	<!ATTLIST b class CDATA "JD1908"><!-- 没有值为默认值 -->
            	<!ATTLIST b gender (男|女) "男">
            	<!ATTLIST c school CDATA #FIXED "大学"><!-- 属性值都必须默认是"大学" -->
            ]>
            
            <root>
            	<a id="dfsftom123" name="李四"></a>
            	<b class="JD1900" gender=""></b>
            	<c school="大学"></c>
            </root>
            
    2. 外部约束:外部约束出错时候,xml文件不会编译出错

      1. < !DOCTYPE 约束根标签 PUBLIC “公有id” “约束文件.dtd”>
      2. < !DOCTYPE root SYSTEM “test3.dtd”>
      • 第一步:创建外部约束文件

      • 第二部:引用外部约束文件约束当前XML文件

        • 约束文件名还可以是https://约束文件.dtd;ftp://约束文件.dtd

        <?xml version="1.0" encoding="UTF-8"?>
        
        <!-- <!DOCTYPE root SYSTEM "test3.dtd"> -->
        <!DOCTYPE root PUBLIC "id" "test3.dtd">
        
        <root>	</root>
        
  • DOCTYPE:关键字,一个xml文件只能有一个DOCTYPE

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值