這幾天開始了XML之旅,一些體會和大家說說……
XML涉及的方面太多,學起來比較費勁。不過學XML首先得學好XPATH。
1、先要了解XML結構.
1)序言
<?xml version="1.0"?>
<!DOCTYPE 文檔元素 SYSTEM "url">
2)主體
<books>
<book>
<書名>XML</書名>
<價格>100</價格>
</book>
</books>
3)尾聲
尾聲不是必須的
2、明确“根元素”不是“文檔元素”
3、一個簡單練習
1)定義DTD
<? xml version="1.0" encoding="UTF-8" ?>
<!-- 元素類型聲明 -->
<! ELEMENT players (player*) >
<! ELEMENT player (name,score_1,score_2,touch_times) >
<! ELEMENT name (#PCDATA) >
<! ELEMENT score_1 (#PCDATA) >
<! ELEMENT score_2 (#PCDATA) >
<! ELEMENT touch_times (#PCDATA) >
也可以用schema來驗證有效性,以後再和大家讨論下schema
2)XML文檔
<? xml version="1.0" encoding="UTF-8" ?>
<? xml-stylesheet type="text/xsl" href="x_players.xsl" target="_blank" rel="external nofollow" ?>
<! DOCTYPE players SYSTEM "x_players.dtd" >
< players >
< player >
< name > Vivian Richards </ name >
< score_1 > 76 </ score_1 >
< score_2 > 26 </ score_2 >
< touch_times > 276 </ touch_times >
</ player >
< player >
< name > Sachin Tendulkar </ name >
< score_1 > 45 </ score_1 >
< score_2 > 30 </ score_2 >
< touch_times > 250 </ touch_times >
</ player >
< player >
< name > Steve Waugh </ name >
< score_1 > 49 </ score_1 >
< score_2 > 22 </ score_2 >
< touch_times > 208 </ touch_times >
</ player >
< player >
< name > Sunil Gavaskar </ name >
< score_1 > 86 </ score_1 >
< score_2 > 32 </ score_2 >
< touch_times > 200 </ touch_times >
</ player >
</ players >
3)用XSL轉換顯示内容
<? xml version="1.0" encoding="UTF-8" ?>
< xsl:stylesheet version ="1.0" xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" xmlns:fo ="http://www.w3.org/1999/XSL/Format" >
< xsl:output method ="html" media-type ="all" />
< xsl:template match ="/" >
< html >
< head >
< title > 選手得分情況表 </ title >
< style type ="text/css" >
table{font-size:12px;background-color:black;}
th{text-align:center;background-color:#ccc;}
td{background-color:white;width:150px;}
</ style >
</ head >
< body >
< div align ="center" >
< h1 > 選手得分情況表 </ h1 >
</ div >
< div align ="center" >
< table cellpadding ="5px" cellspacing ="1px" >
< tbody >
< tr >
< th > 選手 </ th >
< th > No.得分超過50的次數 </ th >
< th > 得分超過100的次數 </ th >
< th > No.有效接球次數 </ th >
</ tr >
< xsl:for-each select ="players/player" >
< tr >
< td >< xsl:value-of select ="name" /></ td >
< td >< xsl:value-of select ="score_1" /></ td >
< td >< xsl:value-of select ="score_2" /></ td >
< td >< xsl:value-of select ="touch_times" /></ td >
</ tr >
</ xsl:for-each >
</ tbody >
</ table >
</ div >
</ body >
</ html >
</ xsl:template >
</ xsl:stylesheet >
這樣,就用到了DTD和XSL,要明白XSL轉換,首先要了解XPATH語言.
XPATH實作了對XML文檔的定位.上面的例子中match="/"比對了文檔的根節點.定義了文檔的上下文.
接着用<xsl:for-each>來循環并取出相應節點的文本内容.其中select屬性包含了XPATH表達式和定位路徑.