XML

Posted hf99

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML相关的知识,希望对你有一定的参考价值。

前言

XML就是语法严格的可以自己定义的html

可以使用DTD定义,例

<!DOCTYPE note [
<!ELEMENT title (name|author|time)>
<!ATTLIST title language CDATA #REQUIRED>
<!ENTITY copyright "hf9">
]>

简介

什么是XML?

XML指的是可拓展标记语法(EXtensible Markup Language)

语法

声明

元素

XML必须有一个根元素

XML中的标签都必须有一个关闭标签,但声明除外(声明是xml的语法不是标签)

XML中的标签对大小写敏感,闭合的时候必须使用同样的标签

所有的元素都必须被正确的嵌套

属性值必须加引号

XML中不能使用<,需要使用实体引用来代替&lt

XML中的空格会保留,不会像HTML一样只保留一个

命名规则:

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字符 “xml”(或者 XML、Xml)开始
  • 名称不能包含空格

属性

属性必须加上引号,也可以是双引号,如果要使用双引号时应当使用单引号包裹他,或者使用html实体编码

DTD

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

通过这样的一种方式来定义

<!DOCTYPE 根元素 [元素声明]>

或者是使用外部DTD

<!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd">

元素

使用DTD来声明一个元素

<!ELEMENT 元素名称 类别>

<!ELEMENT 元素名称 (元素内容)>

例:
空元素

<!ELEMENT 元素名称 EMPTY>

PCDATA

<!ELEMENT 元素名称 (#PCDATA)>

任意类型

<!ELEMENT 元素名称 ANY>

带有子元素的元素

<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
<!ELEMENT 元素名称 (子元素名称)> 只出现一次
<!ELEMENT 元素名称 (子元素名称)+> 出现一次或多次
<!ELEMENT 元素名称 (子元素名称)?> 出现一次或0次
<!ELEMENT 元素名称 (子元素名称)*> 出现0次或多次
<!ELEMENT 元素名称 (子元素名称1|2)*> 出现子元素1或子元素2

属性

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

属性类型:

  • CDATA 值为字符数据 (character data)
  • (en1|en2|..) 此值是枚举列表中的一个值
  • ID 值为唯一的 id
  • IDREF 值为另外一个元素的 id
  • IDREFS 值为其他 id 的列表
  • NMTOKEN 值为合法的 XML 名称
  • NMTOKENS 值为合法的 XML 名称的列表
  • ENTITY 值是一个实体
  • ENTITIES 值是一个实体列表
  • NOTATION 此值是符号的名称
  • xml: 值是一个预定义的 XML 值

默认值:

  • #REQUIRED 属性值是必需的
  • #IMPLIED 属性不是必需的
  • #FIXED value 属性值是固定的

实体

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

<!ENTITY 实体名称 "实体的值">

外部实体声明

<!ENTITY 实体名称 SYSTEM "URI/URL">

CDATA

不应该由 XML 解析器解析的文本数据

CDATA的声明由<[CDATA[开始,到]]>结束

PCDATA

指的是会被解析的数据


以上是关于XML的主要内容,如果未能解决你的问题,请参考以下文章

需要示例代码片段帮助

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration

创建片段而不从 java 代码实例化它

如何组合绑定片段而不将它们包装在 XML 文字中

我们可以在活动 xml 中编写 UI 以及在片段 xm 中编写 UI 吗?

VS中添加自定义代码片段——偷懒小技巧