XML语言

常见应用:

  XML技术除用于 /*保存有关系的数据*/之外,它还经常作软件配置文件,以描述程序模块之间的关系。

  在一个系统软件中,为提高系统的灵活性,它所启动的模块通常由其配置文件决定

  例如一个软件在启动时,它需要启动A、B两个模块,而A、B这两个模块在启动时,又分别需要A1、A2和B1、B2模块支持,为了准确描述这种关系,此时使用XML文件最为合适。

<soft>

  <A>

    <A1></A1>

    <A2></A2>

  </A>

  <B>

    <B1></B1>

    <B2></B2>

  </B>

</soft>

  一个XML文件分为以下几个内容:

    文档声明:<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

      字符编码通常需要写成 UTF-8,但是在windows默认是"gb2312",所以需要另存为 将字符编码改为UTF-8

      用encoding属性说明文档的字符编码  ; 用standalone 属性说明文档是否独立

    元素:XML元素指XML文件中出现的标签 (不允许交叉嵌套,只有一个根标签)

    一个标签有如下几种形式:

      包含标签体:<a>***</a>

    不包含标签体:<a></a>,简写为<a/>

    属性:
      一个标签可以有多个属性值,每个属性都有它自己的名称和取值,例如:<input name = "text">

      属性值一定要用双号或单引号引起来

      定义属性必须遵守与标签相同的命名规范

      在XML技术中,标签属性所代表的信息,也可以被改成用子元素的形式来描述,例如:
      <input>

        <name>text</name>

      </input>

    注释:

      XML文件中的注释采用:"<!--注释-->"格式。

      注意: 1.XML 声明之前不能有注释 2.注释不能嵌套

    CDATA区 、特殊字符:

      对于CDATA 区域的内容,XML 解析程序不会处理,而是直接原封不动的输出

      语法:<![CDATA[内容]]>

    对于一些单个字符,若想显示其原始样式,也可以使用转义字符进行处理

    (& < > " ') --(&amp &lt &gt &quot &apos) "

  处理指令(processing instruction):简称PI。处理指令用来指挥解析引擎,应用css文件显示XML文档内容

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

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

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

  XMLDTD约束和DTD校验

    DTD(文档类型定义)

    DTD校验可以在Myeclipse中进行

    举例(DTD文件)(book.dtd): 举例(XML文件)

  <!ELEMENT 书架(书+)> <?xml version = "1.0" ?>

    //引用DTD约束(本地),本地 用 SYSTEM 网上的用 PUBLIC

  <!ELEMENT 书(书名,作者,售价)> <!DOCTYPE 书架 SYSTEM "book.dtd">

  <!ELEMENT 书名(#PCDATA)>

  <!ELEMENT 作者(#PCDATA)>

  <!ELEMENT 售价(#PCDATA)>

  这个约束文件对应的格式为

  <书架>

     <书>

      <书名>JAVA</书名>

      <作者>***</作者>

      <售价>23.00元</售价>

    <书>

      <书名>MySQL</书名>

      <作者>****</作者>

      <售价>22.00元</售价>

    </书>

  </书架>

对于这个dtd约束文件的说明:

  //使用ELEMENT声明一个XML元素:语法格式: <!ELEMENT 元素名称 元素类型>

  元素类型可以是元素内容、或类型

  如为元素内容,则需要用()括起来,如 <!ELEMENT 书(书名,作者,售价)> <!ELEMENT 书名(#PCDATA)>

  如为元素类型,则直接书写 EMPTY:定义空元素 ANY:表示元素内容为任意类型

元素内容可以使用如下方式,描述内容的组成关系

  1.用逗号分隔,表示内容的出现顺序必须和声明时一致 <!ELEMENT MYFILE(TITLE,AUTHOR,EMAIL)>

  2.用|分隔,表示任选其一,即多个只能出现一个 <!ELEMENT MYFILE(TITLE|AUTHOR|EMAIL)>

在元素内容中也可以使用 + 、 * 、 ? 等符号表示元素出现的次数

  +:一次或多次(书+)

  ?: 0次或一次(书?)

  *: 0次或多次(书*)

  (书):至少出现一次

  也可以使用圆括号()批量设置,例:<!ELEMENT MYFILE((TITLE+,AUTHOR?,EMAIL*)|COMMENT)>

属性定义 attribute

  xml文档中的标签属性需通过ATTLIST为其设置属性

  语法格式:<!ATTLIST 元素名

        属性名1 属性值类型 设置说明

        属性明2 属性值类型 设置说明

        ...

       >

  例:<!ATTLIST 元素名 对应的XML文件

      类别 CDATA #REQUIRED <商品 类别="服装" 颜色="黄色">...</商品>

      颜色 CDATA #IMPLIED <商品 类别="服装">...</商品>

      ...

    >

  设置说明:#REQUIRED 必须设置该值

       #IMPLIED 可选

          #FIXED 默认值

  属性值类型:CDATA:普通文本字符串

        ENUMERATED 属性的类型可以是一组取值的列表,在XML文件中设置的属性值只能是这个列表中的某个值(枚举)

        ID:属性的设置值为一个唯一值 ID属性的值只能由字母,下划线开始,不能出现空白字符

        ENTITY(实体):用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了

  引用实体:语法格式:<!ENTITY 实体名称 "实体内容"> :直接转变成实体内容

        引用方式:&实体名称

        举例:<!ENTITY copyright "i am a programmer">...

        &copyright (等同于i am a programmer)

  参数实体:参数实体被DTD文件自身使用

  语法格式:<!ENTITY % 实体名称 "实体内容">

  引用方式:%实体名称

  举例:

    <!ENTITY % TAG_NAMES "姓名|EMAIL|电话|地址">

    <!ENTITY 个人信息 (%TAG_NAMES; | 生日)>

    <!ENTITY 各户信息 (%TAG_NAMES; | 公司名)>

  XML编程(CRUD) 增删改查 create read update delete

    XML解析技术:两种方式dom和sax

      1.dom(Document Object Model 文档对象模型)是W3C组织推荐的解析XML的一种方式

      ( 在内存中存储类似一个对象树的东西) 将XML文档变成一个Document对象,将每一个标签(节点)变成一个一个的ELEMENT对象,标签里面有文本,属性等对象

      2.sax(Simple API for XML)不是官方标准,但它是XML社区事实上的标准,几乎所有XML解析器都支持它

        从上往下读XML文件 读取一行就处理一行 所以无法进行增删改查 只能做读取

    /*Dom和Sax解析方法的区别:*/

      1.dom解析的优点是对文档crud比较方便,缺点是占用内存比较大

      2.sax解析的优点是占用内存小,解析速度快,缺点是只适合做文档的读取,不适合作文档的crud

  使用JAXP对XML文档进行DOM解析 对XML文档进行 CRUD操作

/*schema技术*/

XML Schema 也是一种用于定义和描述XML文档结构与内容的模式语言,其出现是为了克服DTD的局限性

XML Schema VS DTD

  1.XML Schema 符合XML语法结构(XML Schema就是一种XML 相当于用一个XML去约束另外一个XML)

  2.DOM、SAX等XML API 很容易解析出XML Schema 文档中的内容

  3.XML Schema 对名称空间支持的非常好

  4.XML Schema 比XML DTD支持更多的数据类型,并支持用户自定义新的类型数据

  5.XML Schema 定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制

  6.XML Schema 不能像DTD一样定义实体,比DTD更复杂,但XML Schema现在已是 w3c组织的标准,它正逐步取代DTD

/*schema语法和案例*/

schema语法可以参考 schema帮助文档

2.XML语言的更多相关文章

  1. Xml语言

    一.XML是什么?作用是什么? l  XML ( eXtensible Markup Language )语言是一种可扩展的标记语言.其中的可扩展是相对HTML来说的.因为XML标签没有被预定义,需要 ...

  2. javaweb学习总结七(XML语言作用、语法)

    一:XML语言的概念以及作用 1:xml概念:extensible Markup language,可扩展行标记语言,因为html的语法比较混乱,不够严谨. 用html写的系统不好维护,所以w3c组织 ...

  3. XML语言1.简介和语法

    一.什么是XML语言? XML 指可扩展标记语言(Extensible Markup Language) Xml是独立于软件和硬件的信息传输工具. XML 是一种很像HTML的标记语言. 但xml不是 ...

  4. 四、XML语言学习(1)

    XML语言 1.XML是什么?XML是指可扩展标记语言XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非 ...

  5. XML语言基础1

    这学期选修了XML技术这门课,没有发课本,于是参考了W3school教程,整理一下上课的内容. 1.XML简介 XML是一种标记语言,很类似HTML,它不是对HTML的替代,而是对HTML的补充.在大 ...

  6. XML语言:可扩展的标记语言;

    作用:1. 解决跨语言的数据交换,C#与Javascript 语言的数据交换:. 2.XML:用于数据的存储以及传输:1.新建方法: 在解决方案资源管理器----选中网站名---右击添加新建项---- ...

  7. XML语言学习随笔

    XML和HTML都是W3C的定制的标准,XML的诞生本身是为了替代不成熟的HTML,但是因为现实的环境,XML替代HTML并未成功.之后W3C为了代码严谨性的决心,又发布了升级版的标记语言XHTML, ...

  8. 可扩展标记语言XML之二:XML语言格式规范、文档组成

    大家好,小乐又来了,好久不见!这次接着上次可扩展标记语言XML之一:XML概念,作用,示例,继续讲述XML. 一.格式良好的 xml 1.语法规范: 1).必须有 XML 文档声明: <?xml ...

  9. XML语言基础3--Schema

    1.什么是Schema XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式. XML Schema规定XML文档实例的结构和每个元素/属性的数 ...

随机推荐

  1. Qt编写数据可视化大屏界面电子看板12-数据库采集

    一.前言 数据采集是整个数据可视化大屏界面电子看板系统核心功能,没有数据源,这仅仅是个玩具UI,没啥用,当然默认做了定时器模拟数据,产生随机数据,这个可以直接配置文件修改来选择采用何种数据采集方法,总 ...

  2. [C++]单源最短路径:迪杰斯特拉(Dijkstra)算法(贪心算法)

    1 Dijkstra算法 1.1 算法基本信息 解决问题/提出背景 单源最短路径(在带权有向图中,求从某顶点到其余各顶点的最短路径) 算法思想 贪心算法 按路径长度递增的次序,依次产生最短路径的算法 ...

  3. Spring Aop(二)——基于Aspectj注解的Spring Aop简单实现

    转发地址:https://www.iteye.com/blog/elim-2394762 2 基于Aspectj注解的Spring Aop简单实现 Spring Aop是基于Aop框架Aspectj实 ...

  4. vue学习中遇到的问题

    1.axios使用post传值时无法使用键值对传值的问题 问题的原因:主要是HTTP请求中的get请求和post请求参数的存放位置是不一样的,get请求的参数以键值对的方式跟在url后面的,而post ...

  5. Fourier serie

    你眼中看似落叶纷飞变化无常的世界,实际只是躺在上帝怀中一份早已谱好的乐章. 时域和频域就像观察一个物体一样,一个是主视图的,一个是侧视图. 1.在有限区间上由任意图形定义的任意函数都可以表示为单纯的正 ...

  6. hdoj4003 (树形dp+分组背包)

    题目链接:https://vjudge.net/problem/HDU-4003 题意:给一棵边权树,在树根s有m个人,要通过m个人遍历到所有点,一个人经过一条边花费为边的权值,求最小花费(可以走已经 ...

  7. [转帖]SSH远程登录配置文件sshd_config详解

    SSH远程登录配置文件sshd_config详解 2016年06月02日 17:42:25 Field_Yang 阅读数 61386   版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权 ...

  8. 什么是SSL证书服务?

    SSL证书服务(Alibaba Cloud SSL Certificates Service)由阿里云联合多家国内外数字证书管理和颁发的权威机构.在阿里云平台上直接提供的服务器数字证书.您可以在阿里云 ...

  9. [HihoCoder-1424] Asa's Chess Problem

    有上下界的费用流 #include <stdio.h> #include <algorithm> #include <queue> #include <cst ...

  10. Kubernetes---Pod状态示例

    ⒈Pod 中只有一个容器并且正在运行,容器成功退出 ·记录事件完成  ·如果restartPolicy为:  Always:重启容器:Pod phase仍为Running  OnFailure:Pod ...