开始我的XML之旅

    技术2022-05-11  94

     这几天开始了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" ?> <! 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表达式和定位路径.


    最新回复(0)