XML的一个强大之处在于它的强大可扩展性。XML没有定义自己的标签,你可以创建你自己的标签,形成你自己的词汇表。XML关注的是内容,而不是表现,你创建的标签主要用来阻止数据而不是表现数据。
(a).
<H1>ASP.NET XML 系列</H1>
<p>Author: Jack Wang</p>
(b).
<articles>
<title>Asp.net xml系列</title>
<author>Jack Wang</author>
</articles>
很明显第二种更容易为人类理解
1.2 基本术语:
格式良好如果文档符合由XML规范定义的格式良好的规定,那么该文档就被认为是格式良好的,规定如下:有效性
文档包含一个或多个元素
文档只有一个根元素(也就是文档元素)
元素的结束标签名称与开始标签的名称一致
在一个元素中属性只能出现一次
属性值不能包含左尖括号(<)
由开始和结束标签界定的元素必须互相正确地嵌套
有效之前,必须是格式良好的,为了达到有效,XML文档必须经过验证。可以通过DTD(Document Type Definition)或者XML模式(XML Schema Definition)来对文档 进行验证。
1.3 XML文档的组成部分
XML是一种用来描述数据并构建数据的语言,XML数据包含在文档中,这个文档可以是一个文本、一个数据流或者任何其他能够保存文本的存储介质,现实的或者虚拟的。一个正确的XML文档以如下XML申明开始,制定文档内容将要符合的XML版本
<?xml version="1.0" >
XML还可以包含编码属性,用来定义文档的字符类型。
<?xml version="1.0" encoding="utf-8"?>
如果文档由UTF-8或者UTF-16字符组成,那么编码属性是可选的,因为XML解析器可以解析文档的前5个字符'<?xml'. XML声明其实是XML处理指令的特殊格式,其中包含了XML处理器的指令。处理指令一般在<?和?>之间。
-
元素
元素名称必须符合XML规范中预先描述的一套规则,你可以在http://www.w3c.org/TR/REC-xml上阅读。规范着重强调元素名称可以由字母或者下划线开头,后跟字母、数字、句点、连字符和下划线。元素名称中不允许空格。元素是XML文档的构件,可以包含数据、其它元素或者同时包含,并且总是以开始和结束标签分界。XML没有预定义元素。 <?xml version="1.0" encoding="utf-8"?>
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> < articles >
< article >
< title > Asp.net xml系列 </ title >
< author > Jack Wang </ author >
< publishdate > 2008-03-15 </ publishdate >
</ article >
< article >
< title > C# xml系列 </ title >
< author > Jack Wang </ author >
< publishdate > 2009-03-15 </ publishdate >
</ article >
< article >
< title > xml系列 </ title >
< author > Jack Wang </ author >
< publishdate />
</ article >
</ articles >
<articles>是文档的元素,<article>是<articles>的子元素<title>,<author>,<publishdate>是<article>的子元素,<publishdate/>空元素可以这样写(既没有数据的元素)。 -
属性
<title maintitle="ASP.NET">Asp.net xml系列</title> maintitle就是属性。 -
CDATA、PCDATA和实体引用
出现在<![CDATA[和 ]]>标签之间的数据就是CDATA,而其他的数据就是PCDATA(Parsed character Data). XML解析器会忽略CDATA标签中的内容。
<price><![CDATA[0<bookprice<1000]]></price>
另一种表达方法是把它们替换成实体引用 - 命名空间
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> < article >
< title > xml系列 </ title >
< author >
< title > Mr </ title >
< nickName > Jack </ nickName ></ author >
< publishdate />
< price > <![CDATA[ 0<bookprice<1000 ]]> </ price >
</ article >
我们可以看到上面两个title表示不同的语义,但是无法区分,同样这种问题也会出现在多个文档组织在一起时。所以我们需要加上命名空间,作用就是和C#里的一样。
声明命名空间
Xmlns—指定值作为xml的命名空间,他是申明命名空间所必需的,并且可以附加在任何 XML元素上。
Prefix---指定一个命名空间的前缀,如果使用了该前缀,那么文档中任何使用该前缀(prefix:element)的任何元素被认为是位于申明的命名空间范围之内.
namespaceURI—指定命名空间唯一标识符。不必指向一个实际的WEB资源。<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> <? xml version="1.0" encoding="utf-8" ?>
< articles xmlns ="http://cnblogsfans.cnblogs.com/Asp.net_xml/article" >
< article >
< title maintitle ="ASP.NET" > Asp.net xml系列 </ title >
< author > Jack Wang </ author >
< publishdate > 2008-03-15 </ publishdate >
</ article >
< article >
< title > C# xml系列 </ title >
< author > Jack Wang </ author >
< publishdate > 2009-03-15 </ publishdate >
</ article >
< article >
< title > xml系列 </ title >
< author xmlns:mytitle ="http://cnblogsfans.cnblogs.com/Asp.net_xml/article/author" >
< mytitle:title > Mr </ mytitle:title >
< nickName > Jack </ nickName >
</ author >
< publishdate />
< price > <![CDATA[ 0<bookprice<1000 ]]> </ price >
</ article >
</ articles >