zoukankan      html  css  js  c++  java
  • 【万能的数据传输格式XML入门教程】二、XML详解

    XML主要是由以下七个部分来实现的:

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

    1. 文档声明

    <?xml version="1.0" encoding="UTF-8"?>

    主要功能:告诉浏览器是何种方式解析当前文档,功能与PHP中的header类似。

    属性 说明
    version 版本为1.0,目前XML都是采用1.0版本
    encoding 编码格式,默认使用UTF-8
    standalone 是否依赖外部DTD约束文档(了解)

    2. 元素(节点、标签、标记)

    使用规则:

    (1)一个标签分为起始和结束标签(不能省略)

    错误:<li>列表项
    正确:<li>列表项</li><br />

    (2)一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套

    错误:<div><span>内容</div></span>
    正确:<div><span>内容</span></div>

    (3)一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签

    <根元素>
        <后代元素></后代元素>
    </根元素>

    命名规则:

    (1)元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点

    错误:<$_$>内容</$_$>
    正确:<a123>内容</a123>

    (2)严格区分大小写

    错误:<abc></Abc>
    正确:<abc></abc>

    (3)只能以字母或下划线开头

    错误:<123abc></123abc>
    正确:<abc123></abc123><_abc></_abc>

    (4)名称字符之间不能有空格或制表符

    错误:<abc 123></abc    123>
    正确:<abc_123></abc_123>

    (5)名称字符之间不能使用冒号

    正确:<a:b></a:b>,虽然以上命名规范也是正确的,但是由于XML可能会在后续版本中,使用:冒号作为一种标记,所以不建议大家使用冒号。

    3. 元素属性

    (1)一个元素可以有多个属性,属性之间通过空格隔开即可

    (2)属性值一定要用引号(单引号或双引号)引起来,在php中,单引号中的变量是无法解析的,双引号中的变量是可以正常解析的,在xml中,单引号和双引号功能是一致的,没有任何区别

    (3)属性名称的命名规范与元素的命名规范相同

    (4)元素中的属性是不允许重复的

    (5)标签属性所代表的信息也可以被改成用子元素的形式来描述

    <?xml version="1.0" encoding="UTF-8"?>
    <person id='t007' sex='36'>
        <name>邦德</name>
        <sex></sex>
        <address>美国情报局</address>
    </person>

    <?xml version="1.0" encoding="UTF-8"?>
    <person>
        <id>t007</id>
        <name>邦德</name>
        <age>36</age>
        <sex></sex>
        <address>美国情报局</address>
    </person>

    是完全等价的,个人建议使用最后一种,这样在解析时,更加方便。

    4. 注释

    <!--这是注释的基本格式-->

    主要功能:在XML文档中编写注释

    <?xml version="1.0" encoding="UTF-8"?>
    <!--这是一个xml文档,描述了一个人的信息-->
    <person>
        <id>t007</id>
        <name>邦德</name>
        <age>36</age>
        <sex></sex>
        <address>美国情报局</address>
    </person>

    注:XML声明之前不能有注释,注释不能嵌套。

    5. 特殊字符

    如果需要使用这些特殊符号,请对其进行转义,否则系统会报语法错误,如:

    6. CDATA区段

    例子:通过description节点来描述西游信息

    <?xml version="1.0" encoding="UTF-8"?>
    <team>
        <member>
            <name>小唐</name>
            <age>32</age>
            <address>东土大唐</address>
            <force>武力 &lt; 5</force>
            <description><西游记>-->话说,唐朝初年...[<a href="http://www.baidu.com/">查看详解</a>]</description>
        </member>
    </team>

    运行结果:

    以上程序运行后,会报语法错误,在实际项目开发中,如何解决以上问题呢?

    答:使用CDATA区段

    CDATA:Character Data

    主要功能:把标签当做普通文本内容

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

    <?xml version="1.0" encoding="UTF-8"?>
    <team>
        <member>
            <name>小唐</name>
            <age>32</age>
            <address>东土大唐</address>
            <force>武力 &lt; 5</force>
            <description><![CDATA[<西游记>-->话说,唐朝初年...[<a href="http://www.baidu.com/">查看详解</a>]]]></description>
        </member>
    </team>

    问题:特殊字符转义与CDATA区段有何区别?

    答:对于内容比较少的情况,如数学表达式等可以使用特殊字符转义。对于内容比较多的情况,如文章标题、文章描述、文章内容等情况,可以使用CDATA区段进行转义。

    7. 处理指令(PI)

    XML产生的初衷是代替HTML,所以XML其实也是可以使用CSS来显示数据的。

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

    主要功能:指导浏览器如何解析当前文档

    实例如下

    xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type='text/css' href='style.css'?>
    <team>
        <member>
            <name>小唐</name>
            <age>32</age>
            <address>东土大唐</address>
            <force>武力 &lt; 5</force>
            <description><![CDATA[性格懦弱]]]></description>
        </member>
        <member>
            <name>小孙</name>
            <age>600</age>
            <address>花果山</address>
            <force>武力 &gt; 99</force>
            <description><![CDATA[打不死的小强]]]></description>
        </member>
    </team>

    css:

    @charset "UTF-8";
    member {
        display:block;
        margin-bottom:10px;
    }
    member name {
        color:#f00;
        font-size:14px;
    }
    member age {
        color:#0f0;
        font-size:14px;
    }

    运行结果:

  • 相关阅读:
    HeidiSQL 导入Excel数据
    两片74门实现的双边沿D触发器
    java多线程
    java集合框架
    java异常处理
    java基础学习5
    java基础学习4
    Java基础学习3
    Java基础学习2
    LeetCode 184场周赛
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522284.html
Copyright © 2011-2022 走看看