XML语法

XML语法

一个XML文档包含以下内容

  • 文档声明
  • 元素
  • 属性
  • 注释
  • CDATA区、特殊字符
  • 处理指令

一、文档声明

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

二、元素(标记、节点)

2.1根元素

  • 根元素是一个包括文档中其他所有元素的元素
  • 每个文档必须有且只有一个根元素
  • 根元素的起始标记要翻噶子所有其他元素的起始标记之前
  • 根元素的结束标记要放在所有其他元素的标记之后

2.2元素

XML元素指的是XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写方式

  • 包含标签体:
<a>www.sohu.com</a>
  • 不包含标签体:
<a></a>,简写为:<a/>

2.3标签嵌套子标签

一个标签中可以嵌套若干子标签。但所有标签必须合理地嵌套,不允许交叉嵌套,如:

<a>welcome to <b> www.sohu.com </a></b>(这种情况一定会报错)

2.4空格和换行敏感

对于XML标签中出现的所有空格和换行,XML解析程序都会当做标签内容进行处理。例如下面两段内容的意义是不一样的。

<stu>xiaoming</stu>
<stu>
    xiaoming
</stu>

2.5命名规范

一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守以下规范:

  • 区分大小写
  • 不能以下划线开头
  • 元素内不能包含空格
  • 名称中间不能包含冒号
  • 可以使用中文,但一般不使用中文

三、属性

<student id="100">
    <name>Tom</name>
</student>

3.1属性分隔

属性值用双引号(”)或单引号(’)分隔,如果属性值中有单引号,则用双引号分隔;如果有双引号,则用单引号分隔。那么如果属性值中既有单引号还有双引号怎么办?这种要使用实体(转义字符,类似于html中的空格符),XML有5个预定义的实体字符,如下:

img

3.2多个属性

一个元素可以有多个属性,它的基本格式为:

<元素名 属性名1="属性值1" 属性名2="属性值2">

四、注释

XML的注释类似于HTML中的注释

<!--这是一个注释-->
  • 注释内容中间不要出现–
  • 不要把注释放在标记中间
  • 注释不能嵌套
  • 可以在除标记以外的任何地方放注释

五、CDATA节、特殊字符

假如有这么一个需求,需要通过XML文件传递一幅图片,怎么做呢?其实我们看到的电脑上的所有文件,本质上都是字符串,不过它们都是特殊的二进制字符串。我们可以通过XML文件将一幅图片的二进制字符串传递过去,然后再解析成一幅图片。那么这个字符串就会包含大量的<,>,&或者“等一些特殊的不合法的字符。这时候解析引擎是会报错的。

所以,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,用于把整段文本解释为纯字符数据而不是标记。这就要用到CDATA节。

语法如下:

<![CDATA[
    ......
]]>

CDATA节中可以输入任意字符(除]]>外),但是不能嵌套!

六、处理指令

处理指令,简称PI(processing instruction)。处理指令用来指示解析引擎如何解析XML文件,看下面一个例子:

比如我们也可以使用css样式表来修饰XML文件,编写my.css如下:

name{
    font-size:80px;
    font-weight:bold;
    color:red;
}

sex{
    font-size:60px;
    font-weight:bold;
    color:blue;
}

sex{
    font-size:40px;
    font-weight:bold;
    color:green;
}

我们在XML文件中使用处理指令引入这个css文件,如下:

<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet href="my.css" type="text/css"?>
<class>
    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
    </stu>  
    <stu id="002">
        <name>小龙女</name>    
        <sex>女</sex>
        <age>21</age>
    </stu>
</class>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值