加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML

发布时间:2020-12-16 00:28:08 所属栏目:百科 来源:网络整理
导读:XML 即 eXtensible Markup Language 可扩展标记语言 是一种标记 语言 。标记指计算机 所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML ,也可以使用像XML这样由相关

XML 即eXtensible Markup Language 可扩展标记语言

是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。


用途: XML主要用于传送和携带数据信息,而不是用来表现或展示数据

1.丰富文件 --自定义文件描述是其更丰富

  • 属于文件为主的XML技术应用
  • 标记是用来定义一份资料应该如何呈现

2.元数据--描述其它文件或网络资讯

  • 属于资料为主的XML技术应用
  • 标记是用来说明一份资料的意义

3.配置文档--描述软件设置的参数


所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器

解析器把 XML 转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。


一。有服务器的情况下:解析XML可使用 XMLHttpRequest (ajax)请求XML,用xmlHttp.responseXML 得到xmlDOC 对象 。或使用以下方法

var xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); //IE 得到一个空xmlDOC对象
//var xmlDoc=document.implementation.createDocument("","",null); // 非IE 得到一个空xmlDOC对象

xmlDoc.async="false"; //非异步,确保下面XML完全加载
xmlDoc.load("note.xml"); //load用来加载文件,IE与非IE通用
xmlDoc=(new DOMParser()).parseFromString(text); //非IE使用 DOMParser 解析字符串
xmlDoc.loadXML(text) //Internet Explorer 使用 loadXML() 方法来解析 XML 字符串
二。在无服务器的情况下,不要使用XMLHttpRequest (ajax) 请求XML暂时发现的问题有

1. xmlHttp.status 总是为0,不能得到XML对象
2. 引用其它网站的XML可能有跨域问题,XML不能完全解析显示 (报错:错误的参数个数或无效的参数属性)


XML DTD(文档类型定义)

可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。

主要为XML提供约束和规范dtd文件的引用类似HTML中引用JS,可以直接在XML开头中定义,也可以引入外部dtd文件

XML内部DTD声明 <!DOCTYPE 根元素 [声明列表]>

XML外部DTD声明 <!DOCTYPE 根元素 SYSTEM 外部DTD文件URL>

元素声明

<!ELEMENT 元素名称 类别>

或者

<!ELEMENT 元素名称 (元素内容)>  //元素内容指子元素的列表
空元素 <!ELEMENT 元素名称 EMPTY>

任意内容的元素<!ELEMENT 元素名称 ANY>

带子元素序列的 <!ELEMENT 元素名称 (child1,child2,child3 )>

只出现一种的元素 <!ELEMENT 元素名称 (子元素)> //子元素 只能存在一次,切必须存在

最少出现一次的元素(+号) <!ELEMENT 元素名称 (子元素+)>

零次或多次出现的元素(*号) <!ELEMENT 元素名称 (子元素*)>

零次或1次出现的元素(?号) <!ELEMENT 元素名称 (子元素?)>

声明 非../既..,用 (|号) <!ELEMENT 元素名称 (子元素1|子元素2)> // 不是子元素1 既是 子元素2

混合类型的内容, 上面的符号可以自由组合出想要的结果



元素类型

#PCDATA 会被解析的DATA, 该实体 会被检查标记和实体 //只有PCDATA类型的元素定义时要加括号 如: <!ELEMENT name (#PCDATA)>

#CDATA char data 普通的字符数据,标记等不会被解析,存放的什么值 就是什么值


元素的属性定义:

<!ATTLIST 元素名称 属性名称 属性类型 默认值>

默认值参数可使用下列值:

解释
属性的默认值
#REQUIRED 属性值是必需的
#IMPLIED 属性不是必需的
#FIXED value 属性值是固定的
实体

实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

实体引用是对实体的引用。

实体可在内部或外部进行声明。

内部实体声明 <!ENTITY 实体名称 "实体的值">

外部实体声明 <!ENTITY 实体名称 "URI/URL">

实体的引用 在#PCDATA 中 使用 &实体名;来引用 即 与 +实体名 +分号;


XMLDTD验证

核心思想: 在加载xmlDoc时,设置 xmlDoc.validateOnParse = true; 即利用DTD可验证xml正确性

xmlDoc.parseError对象的 errorCode 表示错误代码 reason 表示错误原因 line 表示出错位置行号

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读