XML基础

<?xml version="1.0" encoding="UTF-8"?>
<booklist>
  <book isbn="0000000">
    <name>PHP</name>
    <author>lin3615</author>
    <press>mypress</press>
    <pubdate>2014.7</pubdate>
    <price>¥100.00</price>
  </book>

  <book isbn="0000001">
    <name>mysql</name>
    <author>lin3615</author>
    <press>mypress</press>
    <pubdate>2014.7</pubdate>
    <price>¥101.00</price>
  </book>

  <book isbn="0000002">
    <name>javascript</name>
    <author>lin3615</author>
    <press>mypress</press>
    <pubdate>2014.7</pubdate>
    <price>¥102.00</price>
  </book>
</booklist>
<!--
描述图书的一个XML文档。根元素是 booklist,下面有若干子元素book,在book中有表示具体数据的5个子元素 name,author,press,pubdate,price.另外,book元素还包含一个附加的属于它的属性 isbn
1.结构良好性
  a.它总体是一个XML文档
  b.它满足所有在XML1.0规范中提出的关于结构良好性的约束
  c.在XML文档中被直接或间接引用的每一个实体也是结构良好的.
  XML文档定义如下:
  它包含至少一个元素,有一个叫根或文档的元素,它不能作为任何其它元素的内容出现

2.XML声明
  第一行出现的 <?xml version="1.0"?>是XML规范规定的所有XML文件必须具有的一行,称为XML声明,并规定,这个声明必须写在每一个XML文档的第一行,以标记这是一个XML文档,否则就不是一个XML文档.
  XML声明格式:
  <?xml version="1.0" encoding="" standalone=""?>
  可以省略 encoding和standalone,XML文档默认的字符系统为 UTF-8,如要指定别的就得指明字符集.
  standalone属性,独立文档声明,以XML声明的成分出现,告诉文档是否存在一个外部的文档实体或参数实体。即在XML声明中的 standalone属性用来定义是否存在外部的标记声明,如果不存在外部标记声明,standalone="yes",如果可能存在则 "no",如果不存在外部声明,standalone是没有意义的.如果存在而没有声明,则默认为 "no",外部的声明仅表示外部声明的存在,如
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

  XML元素
     元素是XML最为重要的组成部分,如果XML文档中没有元素,则不是XML文档。在XML文档的根元素下可以有若干级子元素,各级子元素形成树形结构。

     元素标记由用户自己定义。<开始标记名>内容</结束标记名>,内容称为元素值,除包含元素值外,还可以包含下一级子元素。命名 规则如编程语言一样,元素可以嵌套,每个XML文档必须有且只有一个称为根的元素.XML元素也有属性,采用 名值对的形式,如是有多个属性,可用空格分格,如 <price currency="RMB" unit="YUAN">100.00</price>,元素和属性没有本质的区别,如上面可以把属性分解为元素
     <price>100.00</price>
     <currency>RMB</currency>
     <unit>YUAN</unit>
     但是这样做消除了与price的关系。属性的类型有三种,字符串类型,标记化类型,枚举类型

实体:
可以这样理解,有效的XML文档本身/外部DTD子集/定义为 DTD 中外部实体的外部文档/在DTD中定义的,用引号括起来的字符串
按 普通实体来分(内部普通实体,外部普通实体)
内部普通实体(在DTD文件中定义,并可以在XML文档中引用的实体)
语法:
<!ENTITY ENTITY_NAME ENTITY_VALUE>
引用:
&ENTITY_NAME;
as:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE root [
  <!ELEMENT person (name,age)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT age (#PCDATA)>
  <!ENTITY names "lin3615">
]>
<root>
  <person>
    <name>&names;</name>
    <age>26</age>
  </person>
</root>

外部普通实体:(测试只能用于IE)
其他XML文档或文档嵌入到XML文档中,并将这些文档组合成一个新文档,外部普通实体通过 url 来定位数据,即为一个文件
格式:
<!ENTITY Entity_name SYSTEM ENTITY_URL>
引用:
&ENTITY_NAME;
as:
test.xml 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE 图书信息 [
  <!ELEMENT 图书信息 (书名,作者,出版信息,价格)>
  <!ELEMENT 书名 (#PCDATA)>
  <!ELEMENT 作者 (#PCDATA)>
  <!ELEMENT 出版信息 (出版社,书号,出版日期)>
  <!ELEMENT 出版社 (#PCDATA)>
  <!ELEMENT 书名 (#PCDATA)>
  <!ELEMENT 出版日期 (#PCDATA)>
  <!ELEMENT 价格 (#PCDATA)>
  <!ENTITY publisher SYSTEM  "http://localhost/test/xml.xml">
]>
<图书信息>
  <书名>xx</书名>
  <作者>yyy</作者>
  &publisher;
  <价格>19</价格>
</图书信息>

XML.XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<出版信息>
  <出版社>111</出版社>
  <书号>2222</书号>
  <出版日期>3333</出版日期>
</出版信息>

参数实体:(内部参数实体,外部参数实体)
参数实体内容不仅可以包含文本,还可以包含元素类型声明,属性列表声明,一般实体声明,标签声明,处理指令或注释等。普通实体可在XML元素中使用,也可在DTD使用中引用,但参数实体只能在DTD中引用,并且通常情况下只能在外部的DTD文档中引用。
内部参数声明如下:
<!ENTITY % ENTITY_NAME entity_value>
引用格式:
%entity_name;
as: 一个内部的DTD文档:(针对IE)
xml.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 图书信息 (书名,作者,出版信息,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ENTITY % pub "(出版社,书号,出版时间)">
<!ELEMENT 出版信息 %pub;>
<!ELEMENT 出版社 (#PCDATA)>
<!ELEMENT 书号 (#PCDATA)>
<!ELEMENT 出版时间 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>

外部参数实体
声明格式:
<!ENTITY % ENTITY_NAME SYSTEM ENTITY_URL>
引用格式:
%ENTITY_NAME;
as:

 不可解析实体:
 在XML文档中,唯一不可解析的实体地方就是属性值,也就是不能使用 &name;
 格式如下:
 <!ENTITY name SYSTEM "uri">
 或者
 <!ENTITY NAME SYSTEM "URL" NDATA type>
 as:
 <!ENTITY file SYSTEM "http://www.lin3615.net/xml.xml">
 如果URI引用的不是XML文档,则用第二种
 as:
 <!ENTITY Pic SYSTEM "pic.jpg" NDATA JPEG>

 处理指令:
    处理指令允许XML文档包含用于应用程序的指定,格式如下:
    <?指令名 属性=“属性值”?>,处理指令用  "<?" 和 "?>"包括起来,从形式上看,<?xml version="1.0"?>就是处理指令,作用是对XML文档进行标识。如下也是处理指令:
    <?xml - stylesheet type="text/css" href="book.css"?>
    <?xml - stylesheet type="text/xsl" href="cloth.xls"?>
    前者在样式表转换中引入了CSS文档对XML文档进行转换,后者是用XSL对XML文档进行格式转换

元素的声明:
<!ELEMENT 元素名 元素内容>
元素内容指的是元素的内容类型:包括EMPTY,子元素类型,混合型,ANY,#PCDATA
空类型(EMPTY)
as:
<!ELEMENT 雇员 EMPTY>
可以这样引用
<雇员/>或者
<雇员></雇员>

ANY(任意的)
as:
<!ELEMENT 雇员 ANY>
可表示任意类型的

#PCDATA:
表示标记的内容是可解析的,就是非标记文本,为了防止与关键字混淆,添加了 "#",可解析,即里面的内容不能再包括XML的标记了
as:
<!ELEMENT 雇员 (#PCDATA)>

子元素类型
as:
<!ELEMENT 雇员 (子元素列表)>
有两种方式,即列表和选择
列表用分号分隔,如:
<!ELEMENT 雇员 (姓名,性别,年龄...)>
选择是互斥的,如:
<!ELEMENT 雇员 (手机号码|电话号码|email)>只能选择其中之一

混合类型(会使结构混乱,少用为好,而必须以 #PCDATA 开头)
as:
<!ELEMENT 图书 (#PCDATA|书名|作者|价格)

元素限定词,如正则一样
(), * , . ? + |
as:
<!ELEMENT 项目 (价格)*>

元素属性声明:属性类型如: CDATA(文本),此时属性与区段不同,这里表示文本而已, #REQUIRED(必须) ...
<!ATTLIST 元素名 属性名 属性类型 [可选项]>
可分成多行写:as:
<!ATTLIST    元素名
    属性名1 类型 [可选项]
    属性名2 类型 [可选项]
>
as:可选项是附加条件,如下,类别指定默认为 小说,出版社 必须出一个字符数据,
<!ATTLIST 图书
  类别 CDATA "小说"
  出版社 CDATA #REQUIRED

  内部的 DOCTYPE 声明:
<!DOCTYPE 根元素 [元素声明]>
as:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [  // 定义此文档是 note类型的文档
  <!ELEMENT note (to, from, heading, body)> // 定义note元素有四个元素,"to,from,heading,body"
  <!ELEMENT to (#PCDATA)> // 定义 to元素为 #PCDATA 类型
  <!ELEMENT from (#PCDATA)> // 定义 from 元素为 #PCDATA 类型
  <!ELEMENT heading (#PCDATA)> //定义 heading 元素为 #PCDATA 类型
  <!ELEMENT body (#PCDATA)>   // 定义 body 为 #PCDATA 类型
]>
<note>
  <to>to</to>
  <from>from</from>
  <heading>heading</heading>
  <body>body</body>
</note>
--------------
外部文档声明
<!DOCTYPE 根元素 SYSTEM "文件名">
as:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
  <to>to</to>
  <from>from</from>
  <heading>heading</heading>
  <body>body</body>
</note>
note.dtd文档内容为:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDTA)>
总结:
通过使用 DTD ,每一个XML文件均可携带一个有关其自身格式的描述。
通过使用 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据.
而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
您还可以使用 DTD 来验证您自身的数据。
-----------
所有的XML文档均由以下构建模块组成:
元素,属性,实体,PCDATA,CDATA
as:
元素(body, message):
<body>this is body element</body>
<message>this is message element</message>

属性可提供有关元素的额外信息
as:
属性(src[名], 1.gif[值])
<img src="1.gif" />

实体(&lt;[<] .....):


PCDATA
意思就是被解析的字符数据(parsed character data)
可把字符数据想象为 XML元素的开始标签与结束标签之间的文本.
PCDATA是会被解析器解析的文本,这些文本将被解析器检查实体以及标记
文本中的标签会被当作标记来处理,而实体会被展开.

CDATA:
CDATA的意思是字符数据(character data)
CDATA是不会被解析器解析的文本,在这些文本中的标签不会被当作标志来对待,其中的实体也不会被展开。-----------------
在dtd中,元素的声明通过
<!ELEMENT 元素名称 类别>
或者
<!ELEMENT 元素名称 (元素内容)>
as:
<!DOCTYPE root [
  <!ELEMENT img gif>
  <!ELEMENT img (1.gif)>
]>

只有PCDATA的元素:
只有 PCDATA 的元素通过圆括号中的 #PCDATA进行声明:
<!ELEMENT 元素名称 (#PCDATA)>
as:
<!DOCTYPE note [
   <!ELEMENT from (#PCDATA)>
]>

DTD属性通过 ATTLIST 声明来进行声明的
<!ATTLIST 元素名称 属性名 属性类型 默认值>
as:
<!ATTLIST payment type CDATA "check">

属性类型:
CDATA:值为字符数据(character data)
(en1|en2|..):此值是枚举列表中的一个
ID:值为唯一的 id
IDREF:值为另外一个元素的ID
IDREFS:值为其它 id 的列表
NMTOKEN:值为合法的 XML名称
ENTITY:值是一个实体
ENTITIES:值是一个实体列表
NOTATION:此值是符号的名称
XML:值是一个预定义的 XML值

属性默认值:
#REQUIRED:属性值是必需的
#IMPLIED:属性不是必需的
#FIXED value:属性值是固定的

实体声明,可在内部,也可在外部
内部声明:
<!ENTITY 实体名 "实体值">
as:
<?xml version="1.0"?>
<!DOCTYPE book [
  <!ENTITY hepress "lin3615">    
]>
<book>
  <author>&hepress;</author>
</book>
一个实体由三部分组成:
 &,实体名和一个分号

外部实体声明:
<!ENTITY 实体名称 SYSTEM "URI/URL">
as:
<!ENTITY write SYSTEM "http://www.xxx.com/xx.dtd">
<!ENTITY read SYSTEM "http://www.yyy.com/yyy.dtd">

引用时用
<author>&write;</author>

------------------------
命名空间
如下:
文档1:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<table>
    <tr>
        <td>Apples</td>
        <td>Banner</td>
    </tr>
</table>
</list>
文档2:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<table>
    <name>lin3615</name>
    <width>179</width>
    <length>172</length>
</table>
</list>
当这两个文档一起使用时,由于两个文档都包含带有不同内容和定义的<table>元素,就会发生命名冲突,XML解析器无法确定如何处理这类冲突
自行解决方法如下:
1.使用前缀来避免命名冲突:
<?xml version="1.0" encoding="UTF-8"?>
<list>
    <h:table>
        <h:tr>
           <h:td>Apples</h:td>
           <h:td>Bananas</h:td>
        </h:tr>
    </h:table>
</list>

2。使用命名空间:(namespaces)(增加一个 xmlns属性)
<?xml version="1.0" encoding="UTF-8"?>
<list>
    <h:table xmlns:h="http://www.lin3615.net/xml/">
       <h:tr>
          <h:td>Apple</h:td>
          <h:td>Bananas</h:td>
       </h:tr>
    </h:table>
</list>
--------------
XML Namespaces (xmlns)属性:
XMLS命名空间属性被放置于元素的开始标签中,并使用以下的语法:
xmlns:namespace-prefix="namespaceURI"
当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素是赋予命名空间一个唯一的名称,只是一个标识,可以为空的,或不存在的,但URL格式化必须正确

默认的命名空间:
为元素定义默认的命名空间可以让我们省去所有的子元素中使用前缀工作
格式如下:
xmlns="namespaceURI"
as:文档1
<table xmlns="http://lin3615.net/xml/">
  <tr>
    <td>Apple</td>
    <td>Bananas</td>
  </tr>
</table>

文档2:
<table xmlns="http://lin3615.net/xml/xml/">
    <name>lin3615</name>
    <sex>M</sex>
</table>
---------------
XML PCDATA
所有 XML 文档中的文本均会被解析器解析
只有CDATA区段中的文本会被解析器忽略

PCDATA
指的是被解析的字符数据(parsed character data)
XML解析器通常会解析 XML文档中所有的文本
当某个XML元素被解析时,其标签之间的文本也会被解析:
<message>此文本也会被解析</message>
as:
<message><first>first</first></last>last</last></message>
会被解析为:
<message>
  <first>first</first>
  <last>last</last>
</message>

XML CDATA
CDATA指的是不应由XML解析器进行解析的文本数据(uparsed character data)
某些文本中,如 js,包含大量的 >, &,可以在脚本代码定义 CDATA
CDATA部分中的所有内容都会被解析器忽略
CDATA部分由 "<![CDATA[" 开始,由 "]]" 结束:
as:
<script>
<[!CDATA[
function t(aa)
{
  return aa;
}
]]>
</script>
CDATA部分不能包含字符串"]]>",也不能嵌套
标志CDATA部分结尾 "]]>" 不能包含空格或折行。

一份DTD实际上就是若干条有关元素,属性,实体等定义和声明语句的集合
as:
<?xml version="1.0" encoding="UTF-8"?>
<!-- DTD 定义 -->
<!DOCTYPE 公司[
<!-- 元素定义 -->
<!-- 元素声明,表示文档中可以出现的某个元素,包括名称,数据类型以及该元素下可以包含多个子元素 -->
<!ELEMENT 公司 (雇员)+>
<!-- 该元素下的子元素列表 -->
<!ELEMENT 雇员 (姓名,雇用日期,项目清单,说明)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 雇用日期 (#PCDATA)>
<!ELEMENT 项目清单 (项目)*>
<!ELEMENT 项目 (产品,价格)>
<!ELEMENT 产品 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
<!-- 属性定义 -->
<!-- 表示项目清单元素中的属性 -->
<!ATTLIST 项目清单 数量 CDATA #REQUIRED>
<!-- 表示雇员元素中的属性 -->
<!ATTLIST 雇员
      部门 CDATA #IMPLIED
      全职 CDATA #IMPLIED
>
<!ENTITY note "这里是备注信息">
]>
<!-- 内容定义 -->
<公司>
  <雇员 部门="bumen" 全职="yes">
    <姓名>林小二</姓名>
    <雇用日期>20140918</雇用日期>
    <项目清单 数量="10">
      <项目>
        <产品>php项目</产品>
        <价格>7000</价格>
      </项目>
      <项目>
        <产品>APP</产品>
        <价格>4000</价格>
      </项目>
    </项目清单>
  </雇员>

  <雇员 部门="bumen" 全职="yes">
    <姓名>林小二</姓名>
    <雇用日期>20140918</雇用日期>
    <项目清单 数量="10">
      <项目>
        <产品>php项目</产品>
        <价格>7000</价格>
      </项目>
      <项目>
        <产品>APP</产品>
        <价格>4000</价格>
      </项目>
    </项目清单>
  </雇员>
</公司>
================
DTD的引用
可以将 DTD 内容直接写在XML文件中,也可以形成独立于XML的DTD文件

内部DTD:
格式:
<!DOCTYPE 根元素名称 [
  DTD声明语句
]>
DTD声明语句为若干语句,对XML文档中的元素,属性和实体等进行声明
as:
<!ELEMENT 联系人列表 ANY>
<!ELEMENT 联系人 (姓名,EMAIL)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ATTLIST 联系人 编号 ID #REQUIRED>

外部DTD
是一个独立于XML文档的文件,并使用 .dtd 作为文件扩展名,实际上就是一个文本文件,没有内部中必要的 <!DOCTYPE [..]>,别的与XML文件一样
as:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 联系人列表 ANY>
<!ELEMENT 联系人 (姓名,EMAIL)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ATTLIST 联系人 编号 ID #REQUIRED>

外部DTD分为私有的和公开的
私有的是末公开的,通常属于某个组织或个人所有。
公开的是为某一应用领域或行业所制定,被国际上的标准组织或行业组织广泛认可,公开,标准的DTD文件
为了引用外部的DTD,必须将XML文档声明部分做如下修改:
增加 standalone="no"

引用私有的语法格式:
<!DOCTYPE 根元素 SYSTEM DTD_URL>
AS:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE root SYSTEM "http://lin3615.net/dtd.dtd">
<联系人列表>
  <姓名>ln3615</姓名>
</联系人列表>

引用公开的语法为:
<!DOCTYPE 根元素 PUBLIC DTD_NAME DTD_URL>
其中,每个公开的DTD文件,都有一个逻辑名称 DTD_NAME,该名称必须用引号

实体:
可以这样理解,有效的XML文档本身/外部DTD子集/定义为 DTD 中外部实体的外部文档/在DTD中定义的,用引号括起来的字符串
按 普通实体来分(内部普通实体,外部普通实体)
内部普通实体(在DTD文件中定义,并可以在XML文档中引用的实体)
语法:
<!ENTITY ENTITY_NAME ENTITY_VALUE>
引用:
&ENTITY_NAME;
as:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE root [
  <!ELEMENT person (name,age)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT age (#PCDATA)>
  <!ENTITY names "lin3615">
]>
<root>
  <person>
    <name>&names;</name>
    <age>26</age>
  </person>
</root>

外部普通实体:(测试只能用于IE)
其他XML文档或文档嵌入到XML文档中,并将这些文档组合成一个新文档,外部普通实体通过 url 来定位数据,即为一个文件
格式:
<!ENTITY Entity_name SYSTEM ENTITY_URL>
引用:
&ENTITY_NAME;
as:
test.xml 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE 图书信息 [
  <!ELEMENT 图书信息 (书名,作者,出版信息,价格)>
  <!ELEMENT 书名 (#PCDATA)>
  <!ELEMENT 作者 (#PCDATA)>
  <!ELEMENT 出版信息 (出版社,书号,出版日期)>
  <!ELEMENT 出版社 (#PCDATA)>
  <!ELEMENT 书名 (#PCDATA)>
  <!ELEMENT 出版日期 (#PCDATA)>
  <!ELEMENT 价格 (#PCDATA)>
  <!ENTITY publisher SYSTEM  "http://localhost/test/xml.xml">
]>
<图书信息>
  <书名>xx</书名>
  <作者>yyy</作者>
  &publisher;
  <价格>19</价格>
</图书信息>

XML.XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<出版信息>
  <出版社>111</出版社>
  <书号>2222</书号>
  <出版日期>3333</出版日期>
</出版信息>

参数实体:(内部参数实体,外部参数实体)
参数实体内容不仅可以包含文本,还可以包含元素类型声明,属性列表声明,一般实体声明,标签声明,处理指令或注释等。普通实体可在XML元素中使用,也可在DTD使用中引用,但参数实体只能在DTD中引用,并且通常情况下只能在外部的DTD文档中引用。
内部参数声明如下:
<!ENTITY % ENTITY_NAME entity_value>
引用格式:
%entity_name;
as: 一个内部的DTD文档:(针对IE)
xml.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 图书信息 (书名,作者,出版信息,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ENTITY % pub "(出版社,书号,出版时间)">
<!ELEMENT 出版信息 %pub;>
<!ELEMENT 出版社 (#PCDATA)>
<!ELEMENT 书号 (#PCDATA)>
<!ELEMENT 出版时间 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>

外部参数实体
声明格式:
<!ENTITY % ENTITY_NAME SYSTEM ENTITY_URL>
引用格式:
%ENTITY_NAME;
as:

 不可解析实体:
 在XML文档中,唯一不可解析的实体地方就是属性值,也就是不能使用 &name;
 格式如下:
 <!ENTITY name SYSTEM "uri">
 或者
 <!ENTITY NAME SYSTEM "URL" NDATA type>
 as:
 <!ENTITY file SYSTEM "http://www.lin3615.net/xml.xml">
 如果URI引用的不是XML文档,则用第二种
 as:
 <!ENTITY Pic SYSTEM "pic.jpg" NDATA JPEG>

-----------
 格式化显示XML文档内容:就如 html一样
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="css.css"?>
<root>
<name>lin3615</name>
<age>26</age>
<sex class="s">M</sex>
<addr id="i">address</addr>
</root>

css.css文件:
name{display:block;text-align:center;}
age{display:block;}
sex.s{text-align:center;display:block;color:#ff0000;}
addr#i{display:block;color:#ffff00;}

posted @ 2014-07-29 01:15  好记性还真不如烂笔头  阅读(564)  评论(0编辑  收藏  举报