PHP使用XSL stylesheets解析转换XML文件

  • PHP与XSL stylesheets相结合来处理XML文档,似乎大家不常用,不过这却是一个很有用的技巧,在众多大型php web应用中,你肯定见到过与XSL stylesheets结合的例子,只是你可能不知道那是什么玩意,今天通过一个简单的例子,让你对PHP使用XSL stylesheets解析转换XML文档有一个大致的了解。

    在开始之前,我们先准备两个XML文档,之后会将第一个XML文档输入XSL解析器。同时,第二个XSL文档中的XSL stylesheet也会被输入XSL解析器。

    XML文档:文件名:order.xml

    01 <?xml version="1.0" ?>
    02 <Order>
    03   <Account>9900234</Account>
    04   <Item id="1">
    05     <SKU>1234</SKU>
    06     <PricePer>5.95</PricePer>
    07     <Quantity>100</Quantity>
    08     <Subtotal>595.00</Subtotal>
    09     <Description>Super Widget Clamp</Description>
    10   </Item>
    11   <Item id="2">
    12     <SKU>6234</SKU>
    13     <PricePer>22.00</PricePer>
    14     <Quantity>10</Quantity>
    15     <Subtotal>220.00</Subtotal>
    16     <Description>Mighty Foobar Flange</Description>
    17   </Item>
    18   <Item id="3">
    19     <SKU>9982</SKU>
    20     <PricePer>2.50</PricePer>
    21     <Quantity>1000</Quantity>
    22     <Subtotal>2500.00</Subtotal>
    23     <Description>Deluxe Doohickie</Description>
    24   </Item>
    25   <Item id="4">
    26     <SKU>3256</SKU>
    27     <PricePer>389.00</PricePer>
    28     <Quantity>1</Quantity>
    29     <Subtotal>389.00</Subtotal>
    30     <Description>Muckalucket Bucket</Description>
    31   </Item>
    32   <NumberItems>1111</NumberItems>
    33   <Total>3704.00</Total>
    34   <OrderDate>07/07/2002</OrderDate>
    35   <OrderNumber>8876</OrderNumber>
    36 </Order>

    XSL文档:文件名:order.xsl

    01 <?xml version="1.0"  ?>
    02 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    03   <xsl:param name="column" select="'SKU'"/>
    04  <xsl:param name="order" select="'ascending'"/>
    05   <xsl:template match="/">
    06     <html>
    07       <body>
    08         <xsl:apply-templates select="Order">
    09           <xsl:with-param name="sortcolumn" select="$column" />
    10           <xsl:with-param name="sortorder" select="$order" />
    11         </xsl:apply-templates>
    12       </body>
    13     </html>
    14   </xsl:template>
    15   <xsl:template match="Order">
    16     <xsl:param name="sortcolumn" />
    17     <xsl:param name="sortorder" />
    18     <table border="1">
    19       <tr>
    20         <th>Account</th>
    21         <th>SKU</th>
    22         <th>Description</th>
    23         <th>Price</th>
    24         <th>Quantity</th>
    25         <th>Subtotal</th>
    26       </tr>
    27       <xsl:apply-templates select="Item">
    28         <xsl:sort select="*[name()=$sortcolumn]"  order="{$sortorder}" />
    29       </xsl:apply-templates>
    30     </table>
    31   </xsl:template>
    32   <xsl:template match="Item">
    33     <tr>
    34       <td><xsl:value-of select="../Account" /></td>
    35       <td><xsl:value-of select="SKU" /></td>
    36       <td><xsl:value-of select="Description" /></td>
    37       <td><xsl:value-of select="PricePer" /></td>
    38       <td><xsl:value-of select="Quantity" /></td>
    39       <td><xsl:value-of select="Subtotal" /></td>
    40     </tr>
    41   </xsl:template>   
    42 </xsl:stylesheet>

    下面是PHP通过XSL stylesheets来处理XML文档的代码演示,结合以上给出的XML和XSL文档代码,XML文档作为输入的XML文档,XSL文件则是XSL的输入文档,以下是PHP处理代码:

    1 <?php
    2 $xmlfile "order.xml";
    3 $xslfile "order.xsl";
    4 $args array("column"=>"Quantity""order"=>"descending");
    5 $engine = xslt_create();//创建XSL引擎
    6 $output = xslt_process($engine$xmlfile$xslfile, NULL, NULL, $args);//处理
    7 print $output;//输出内容
    8 xslt_free($engine);//关闭处理引擎
    9 ?>

    从上PHP代码主要是使用PHP的数组来存储名字对应参数,通过xslt_process函数将名字传递给XSL引擎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值