天天看點

開始我的XML之旅

 這幾天開始了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之旅

<? xml version="1.0" encoding="UTF-8" ?>

開始我的XML之旅

<!-- 元素類型聲明 -->

開始我的XML之旅

<! ELEMENT players (player*) >

開始我的XML之旅

<! ELEMENT player (name,score_1,score_2,touch_times) >

開始我的XML之旅

<! ELEMENT name (#PCDATA) >

開始我的XML之旅

<! ELEMENT score_1 (#PCDATA) >

開始我的XML之旅

<! ELEMENT score_2 (#PCDATA) >

開始我的XML之旅

<! ELEMENT touch_times (#PCDATA) >

也可以用schema來驗證有效性,以後再和大家讨論下schema

2)XML文檔

開始我的XML之旅

<? xml version="1.0" encoding="UTF-8" ?>

開始我的XML之旅

<? xml-stylesheet type="text/xsl" href="x_players.xsl" target="_blank" rel="external nofollow" ?>

開始我的XML之旅

<! DOCTYPE players SYSTEM "x_players.dtd" >

開始我的XML之旅

< players >

開始我的XML之旅

     < player >

開始我的XML之旅

         < name > Vivian Richards </ name >

開始我的XML之旅

         < score_1 > 76 </ score_1 >

開始我的XML之旅

         < score_2 > 26 </ score_2 >

開始我的XML之旅

         < touch_times > 276 </ touch_times >

開始我的XML之旅

     </ player >

開始我的XML之旅

     < player >

開始我的XML之旅

         < name > Sachin Tendulkar </ name >

開始我的XML之旅

         < score_1 > 45 </ score_1 >

開始我的XML之旅

         < score_2 > 30 </ score_2 >

開始我的XML之旅

         < touch_times > 250 </ touch_times >

開始我的XML之旅

     </ player >

開始我的XML之旅

     < player >

開始我的XML之旅

         < name > Steve Waugh </ name >

開始我的XML之旅

         < score_1 > 49 </ score_1 >

開始我的XML之旅

         < score_2 > 22 </ score_2 >

開始我的XML之旅

         < touch_times > 208 </ touch_times >

開始我的XML之旅

     </ player >

開始我的XML之旅

     < player >

開始我的XML之旅

         < name > Sunil Gavaskar </ name >

開始我的XML之旅

         < score_1 > 86 </ score_1 >

開始我的XML之旅

         < score_2 > 32 </ score_2 >

開始我的XML之旅

         < touch_times > 200 </ touch_times >

開始我的XML之旅

     </ player >

開始我的XML之旅

</ players >

3)用XSL轉換顯示内容

開始我的XML之旅

<? xml version="1.0" encoding="UTF-8" ?>

開始我的XML之旅

< xsl:stylesheet  version ="1.0"  xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"  xmlns:fo ="http://www.w3.org/1999/XSL/Format" >

開始我的XML之旅

< xsl:output  method ="html"  media-type ="all" />

開始我的XML之旅

< xsl:template  match ="/" >

開始我的XML之旅

     < html >

開始我的XML之旅

         < head >

開始我的XML之旅

             < title > 選手得分情況表 </ title >

開始我的XML之旅

             < style  type ="text/css" >

開始我的XML之旅

                table{font-size:12px;background-color:black;}

開始我的XML之旅

                th{text-align:center;background-color:#ccc;}

開始我的XML之旅

                td{background-color:white;width:150px;}

開始我的XML之旅

             </ style >

開始我的XML之旅

         </ head >

開始我的XML之旅

         < body >

開始我的XML之旅

             < div  align ="center" >

開始我的XML之旅

                 < h1 > 選手得分情況表 </ h1 >

開始我的XML之旅

             </ div >

開始我的XML之旅

             < div  align ="center" >

開始我的XML之旅

                 < table  cellpadding ="5px"  cellspacing ="1px" >

開始我的XML之旅

                     < tbody >

開始我的XML之旅

                         < tr >

開始我的XML之旅

                             < th > 選手 </ th >

開始我的XML之旅

                             < th > No.得分超過50的次數 </ th >

開始我的XML之旅

                             < th > 得分超過100的次數 </ th >

開始我的XML之旅

                             < th > No.有效接球次數 </ th >

開始我的XML之旅

                         </ tr >

開始我的XML之旅

                         < xsl:for-each  select ="players/player" >

開始我的XML之旅

                         < tr >

開始我的XML之旅

                             < td >< xsl:value-of  select ="name" /></ td >

開始我的XML之旅

                             < td >< xsl:value-of  select ="score_1" /></ td >

開始我的XML之旅

                             < td >< xsl:value-of  select ="score_2" /></ td >

開始我的XML之旅

                             < td >< xsl:value-of  select ="touch_times" /></ td >

開始我的XML之旅

                         </ tr >

開始我的XML之旅

                         </ xsl:for-each >

開始我的XML之旅

                     </ tbody >

開始我的XML之旅

                 </ table >

開始我的XML之旅

             </ div >

開始我的XML之旅

         </ body >

開始我的XML之旅

     </ html >

開始我的XML之旅

</ xsl:template >

開始我的XML之旅

</ xsl:stylesheet >

這樣,就用到了DTD和XSL,要明白XSL轉換,首先要了解XPATH語言.

XPATH實作了對XML文檔的定位.上面的例子中match="/"比對了文檔的根節點.定義了文檔的上下文.

接着用<xsl:for-each>來循環并取出相應節點的文本内容.其中select屬性包含了XPATH表達式和定位路徑.