XML基本语法
1.SGML,XML,XHTML,HTML 概念与联系(主要参考维基百科)
标准通用标记语言(Standard Generalized Markup Language,SGML)是现时常用的超文本格式的最高层次标准,是可以定义标记语言的元语言,甚至可以定义不必采用< >的常规方式。由于SGML的复杂,因而难以普及。
HTML和XML同样派生于SGML:XML可以被认为是SGML的一个子集,而HTML是SGML的一个应用。
超文本标记语言(英文:HyperText Markup Language,HTML)是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种标记语言,HTML的标签(元素)是固定的.
可扩展超文本标记语言(eXtensible HyperText Markup Language,XHTML),是一种标记语言,表现方式与超文本标记语言(HTML)类似,不过语法上更加严格,HTML语法要求比较松散,这样对网页编写者来说,比较方便,但对于机器来说,语言的语法越松散,处理起来就越困难,对于传统的电脑来说,还有能力兼容松散语法,但对于许多其他设备,比如手机,难度就比较大。因此产生了由DTD定义规则,语法要求更加严格的XHTML。
可扩展标记语言(英语:eXtensible Markup Language,简称: XML):XML是从标准通用标记语言(SGML)中简化修改出来的
W3C也发现到HTML的问题:
- 不能解决所有解释数据的问题 - 像是影音档或化学公式、音乐符号等其他形态的内容。
- 性能问题 - 需要下载整份文件,才能开始对文件做搜索。
- 扩充性、弹性、易读性均不佳。
为了解决以上问题,专家们使用SGML精简制作,并依照HTML的发展经验,产生出一套使用上规则严谨,但是简单的描述数据语言:XML
XML应用:
- 配置文档(Configuration Files)- 描述软件设置的参数
2.XML语法:
1: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>2: <书架>3: <书>4: <书名>JavaWeb</书名>5: <作者 姓名="王五"/>6: <售价>50元</售价>7: <页面作者 个人爱好="上网" 网站职务="页面作者" 联系信息=""/>8: </书>9: </书架>第一行:<?xml version="1.0" encoding="UTF-8" standalone="no"?>:
a.<?xml 语法要求<,?,xml之间不能有空格, ?>之间不能有空格,standalone="no"?两者之间可以有一个或多个空格
b.encoding=”utf-8”:那么解析器读到该属性,那么会以utf-8解码,如果不写呢?XML解析器通过寻找XML文档开始处的字节序列,能够自动检测出文档中的Unicode编码是UTF-8还是UTF-16.也就是说encoding属性的默认值是Unicode编码,如果文档是以UTF-8/UTF-16编码那么可以不设置该属性.
c.standalone属性用于说明文档是否独立,该文档没有依赖外面的任何文件而可以单独存在(例如依赖dtd文件)->yes,否则no.standalone属性位于encoding属性之后
针对b的编码,如果文档的编码为GB2312,就是windows记事本默认的编码(ANSI),这时encoding设置为GB2312/GBK(包含GB2312)
解析器读到该属性知道需要以GB2312解码.
例如:在记事本中书写xml文档后直接ctrl+s:
1: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>2: <书架>3: <书>4: <你好></你好>5: </书>6: </书架>在IE10中浏览,这时候看不到任何效果和提示,这时候F12,更改文档模式.
看到提示:文本内容中发现无效字符.原因:GB2312编码的文档以UTF-8解码,这时候只需要修改encoding=”GB2312”即可.
1.XML元素命名规范:
一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:
区分大小写,例如,<P>和<p>是两个不同的标记。
不能以数字或"_" (下划线)开头。
不能以xml(或XML、或Xml 等)开头。
不能包含空格。
名称中间不能包含冒号(:)
2.XML的注释和HTML一样: <!--注释内容—>
3.关于CDATA(character data)区:
在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理。
遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直接原封不动的输出。
语法:<![CDATA[ 内容 ]]>:CDATA字母全部大写
例如:
1: <?xml version="1.0" encoding="GBK" standalone="yes"?>2: <![CDATA[3: <itcast>4: <br/>5: <6: </itcast>7: ]]>8: <书架>9: <书>10: <书名>JavaWeb</书名>11: <作者 姓名="王五"/>12: <售价>50元</售价>13: <页面作者 个人爱好="上网" 网站职务="页面作者" 联系信息=""/>14: </书>15: </书架>CDATA区不能在根元素(书架)的上面.
换个位置:
1: <?xml version="1.0" encoding="GBK" standalone="yes"?>2: <书架>3: <![CDATA[4: <br/>5: <6: ]]>7: <书>8: <书名>JavaWeb</书名>9: <作者 姓名="王五"/>10: <售价>50元</售价>11: <页面作者 个人爱好="上网" 网站职务="页面作者" 联系信息=""/>12: </书>13: </书架>