zoukankan      html  css  js  c++  java
  • 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节

     

    XML介绍

      eXtensible Markup Language

      XML是一种元标记语言,用户可以定义自己需要的标记。

      Document Type Definition, DTD文档类型定义。

      XML描述的是结构、内容和语义,它不描述页面元素的格式化。

      对比:HTML侧重于如何表现信息,内容描述与显示整合为一体。

      XML中的每个元素名都是成对出现的。结束标签前加一个/

      如:

    <?xml version="1.0"?>
    <Student> 
            <Name>ZhangSan</Name> 
            <ID>001</ID> 
    </Student>

      文档的后缀名是xml,每个文档有且仅有一个根元素

      所谓根元素就是包含了其他所有元素的元素。

                           

    XML vs HTML

     

      使用XML可以实现异构语言、异构平台之间的交互。

    XML1.0语法

      XML目前只有一个版本,即1.0.

      XML是自描述数据,使用现有的国际标准。

      XML中有格式正规的XML有效的XML本文讲格式正规的。

      遵循如下规则的XML文档称为格式正规的XML文档:

    语法规范:

      必须有XML声明语句;

      必须有且仅有一个根元素;

      标记大小写敏感;

      属性值用引号;

      标记成对;

      空标记关闭;

      元素正确嵌套。

    元素语法:

      名称中可以包含字母、数字或者其他字符;

      名称不能以数字开头;

      不能以XML/xml/Xml…开头;

      名称中不能含空格;

      名称中不能含冒号(注:冒号留给命名空间使用)。

     

    XML解析器

      XML解析器是读取XML文档并提供对文档内容的访问的软件模块。

      类型:无验证的解释器和验证的解释器。

      解析器:

      MSXML IE

      IBM XML4J

      Apache Xerces

      Oracel XML Parser

    XML文档

      一个XML文档:

    <?xml version="1.0"  encoding="utf-8" standalone="yes"?>
    <!--第一行是XML声明-->
    <!--这是XML处理指令的例子。处理指令以<?开始,以?>结束-->
    <!--在<?后的第一个单词是处理指令名,在本例中是xml-->
    <!--处理指令一定要顶格写,前面不能有任何空白-->
    
    <students>
            
            
            <GREETING><!--开始标记-->
                    
                    Hello World<!--元素内容-->
    
            </GREETING><!--结束标记-->
            
            <student  gender="male" isHandsome="true">                
                    <id>001</id>                
                    <name>zhangsan</name>
                    <address>Beijing</address>
                    <score>50</score>
            </student>
            
            <student gender="female">                
                    <id>002</id>                
                    <name>lisi</name>
                    <address>北京</address>
                    <score/><!--为空的简写形式-->
            </student>
    
    </students>

      如其中注释:

      <!--第一行是XML声明-->

      <!--这是XML处理指令的例子。处理指令以<?开始,以?>结束-->

      <!--在<?后的第一个单词是处理指令名,在本例中是xml-->

      <!--处理指令一定要顶格写,前面不能有任何空白-->

      处理指令一定要顶格写,前面不能有任何空白。

      处理指令的?前面后面都不能有空格。

       但元素中的空白是允许的。

      文档注释用<!-- 和-->包围,不允许嵌套,允许多行注释。

      XML里面的元素严格区分大小写

     

      XML文档必须有且只有一个根元素

      根元素是一个完全包括文档中其他所有元素的元素。

    XML文档声明

      每一个XML文档都以一个XML声明开始,用以指明所用的XML的版本。

      XML声明有version 、encoding和standalone特性。

      特性是由等号分开的名称-数值对。位于等号左边的是特姓名,而其值位于等号的右边,并用双引号或单引号括起来。

      在上例中,version特性表明这个文档符合XML 1.0规范。

      XML声明还可以有standalone特性,这告诉我们文档是否在这一个文件里,还是需要从外部导入文件。

      encoding 属性指定了编码格式,默认情况下是utf-8,这个属性要放在standalone属性前面。

      注意本文文件保存时候默认的编码格式是ANSI,需要利用记事本把它手动改为UTF-8保存。

     

    属性

      如上所述,

      属性(特性)是由等号分开的名称-数值对。

      位于等号左边的是特姓名,而其值位于等号的右边,并用双引号或单引号括起来。

     

      自定义的元素也可以有一个或多个属性,其属性值使用单引号或者双引号括起来。

      如果属性值中有双引号则使用单引号,反之亦然。

      属性的形式为:

      属性名= "属性值",比如gender="male"。

      多个属性值之间用空格隔开(一个或多个空格都可以)。

      在一个元素上,相同的属性只能出现一次。

      属性值不能包含<, >, &。

     

    实体

      实体叫ENTITY,实体的作用是避免重复输入。作用相当于宏或者变量。

      XML中内置的5种实体:

     

      自定义实体语法:

                 <!DOCTYPE 根元素[

                 <!ENTITY 实体名 "实体内容">

                 ]>

      引用已定义的实体:

        &实体名;

      

      使用实体的例子:

      XML代码:

    <?xml version="1.0" encoding="utf-8"?>
    
    <!DOCTYPE test[
    <!--实体声明-->
    <!ENTITY comA "Company A">
    
    <!ENTITY addA "Some Place">        
            
    ]>
    <test>
    
            <!--直接写进去的方法-->
            <company>
                    <name>Company A</name>
                    <address>Some Place</address>        
            </company>
            
            <!--用实体的方法-->
            <company>
                    <name>&comA;</name>
                    <address>&addA;</address>        
            </company>
    </test> 

      用Chrome打开:

      可见使用实体和直接写值的效果是一样的,实体所代表的值被浏览器代入。

    文档类型定义——DOCTYPE

      文档类型声明,紧跟XML声明之后,包含所有实体声明。

      语法:

    <?xml version="1.0" encoding="utf-8"?>
    
    <!DOCTYPE 根元素标记名[
    
    <!--实体声明-->
                         
    ]>

      实例如上,实体部分。

     

    处理指令PI

      处理指令用于XML解析器传递信息到应用程序。

      语法:<?目标 指令?>

      PI必须以一个叫做目标的标识符开头,这个标识符遵从如同元素和属性一样的规则,目标是指令所指向的应用的名称,指令是传递给应用程序的信息。

    为XML文档编写样式单

      XML允许用户来创建任何所需要的标记。

      当然,由于用户在创建标记上有完全的自由,因而通用的浏览器无法预期用户标记的意义,也无法为显示这些标记而提供规则。

      因而,用户必须为文档编写样式单,告诉浏览器如何显示特定的标记。

      与标记集类似,用户创建的样式单可由不同的文档不同的人所共享,还可将自己创建的样式单与其他人编写的样式单集成在一起。

      比如编写样式hello.css:

    GREETING{display:block; font-size:24pt; font-weight:bold

      加入样式的方法,是在XML文档中包括一个处理指令,指定所要使用的样式单:

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

      完整的XML文档如下:

    <?xml version="1.0"  encoding="utf-8" standalone="yes"?>
    <!--第一行是XML声明-->
    <!--这是XML处理指令的例子。处理指令以<?开始,以?>结束-->
    <!--在<?后的第一个单词是处理指令名,在本例中是xml-->
    <!--处理指令一定要顶格写,前面不能有任何空白-->
    
    <!--另一个处理指令,表明要采用hello.css定义的样式
         (使用当前目录下的hello.css)-->
    <?xml-stylesheet type="text/css" href="hello.css"?>
    
    
    
    <students>
            
            
            <GREETING><!--开始标记-->
                    
                    Hello World<!--元素内容-->
    
            </GREETING><!--结束标记-->
            
            <student  gender="male" isHandsome="true">                
                    <id>001</id>                
                    <name>zhangsan</name>
                    <address>Beijing</address>
                    <score>50</score>
            </student>
            
            <student gender="female">                
                    <id>002</id>                
                    <name>lisi</name>
                    <address>北京</address>
                    <score/><!--为空的简写形式-->
            </student>
    
    </students>

      通过样式,我们可以实现XML内容与展现形式的分离。

      为XML文档编写样式单可以用CSS或XSL,XSL比CSS复杂。

     

    CDATA节

      用于把整段文本解释为纯字符数据而不是标记的情况。

      包含大量的<、>、&、或者"字符。CDATA节中的所有字符都会被当做元素字符数据的常量部分,而不是XML标记。

      语法:

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

      可以输入任意字符(除]]外),不能嵌套。

    <?xml version="1.0" encoding="utf-8"?>
    <root>
            <![CDATA[
    
            <hello>
                    <world>
    
                            
                这里放任何内容都是合法的
            
            ]]> 
    
            <subRoot>
            
            </subRoot>
    </root>

    参考资料

      圣思园张龙老师教学视频。

  • 相关阅读:
    ASCII 32个控制字符含义
    MFC中获取指定打印机的打印队列的方法
    某品牌led报文信息分析
    SQL Server 企业版没有 Management Studio管理工具 无法安装工作站组件 的解决方法(无需卸载重装)
    xla文件修改办法
    关于ALILIB
    编译器如何根据头文件来找到相应实现的cpp文件?
    C#调用C++接口提示找不到指定的模块解决方法,本机正常
    DataGridView中实现右击选中当前行功能,并通过ContextMenuStrip获取当前行
    C#递归获取文件列表
  • 原文地址:https://www.cnblogs.com/mengdd/p/3100884.html
Copyright © 2011-2022 走看看