PHPÊDz»ÉÙÔÚWeb¿ª·¢ÁìÓò·ÜÕ½µÄÓÂÊ¿ÃÇËùÑ¡ÓõÄÎäÆ÷£¬ÒòΪËüÊÇÒ»ÖÖºÜÖ±¹ÛµÄ±à³ÌÓïÑÔ£¬ÓÐÇ¿´óµÄº¯Êý£¬Á¼ºÃµÄ¿çƽ̨¼æÈÝÐÔ£¬»¹ÓÐËüÊÇÃâ·ÑµÄ¡£´ÓÍøÉϵÄСÉ̵굽´óÐÍÆóÒµµÄÍøÕ¾¶¼ÄÜ¿´µ½PHPµÄÓ°×Ó¡£
PHPÓÐÒ»µãÌØÐÔ¾³£±»ÈËÃǺöÊÓ£¬ÄǾÍÊǺÍXSL stylesheetsºÏ×÷¶ÔXML½øÐнâÎöµÄÄÜÁ¦¡£ÏÂÃæ¾ÍÈÃÎÒÃÇÀ´¿´¿´ÔõÑùÔÚPHPÖÐÉèÖÃÒ»¸öXSL½âÎöÆ÷ÒÔ¼°Äã¸ÃÈçºÎʹÓÃÕâÒ»¹¦ÄÜ¡£
Àý×Ó
ÁбíAÊÇÒ»¸ö¼òµ¥µÄ¶©µ¥Îĵµ£¬ÎÒÃǻὫÕâ¸öÎĵµÊäÈëXSL½âÎöÆ÷¡£Í¬Ê±£¬ÁбíBÖеÄXSL stylesheetÒ²»á±»ÊäÈëXSL½âÎöÆ÷¡£
Listing A: order.xml
<?xml version="1.0" ?>
<Order>
<Account>9900234</Account>
<Item id="1">
<SKU>1234</SKU>
<PricePer>5.95</PricePer>
<Quantity>100</Quantity>
<Subtotal>595.00</Subtotal>
<Description>Super Widget Clamp</Description>
</Item>
<Item id="2">
<SKU>6234</SKU>
<PricePer>22.00</PricePer>
<Quantity>10</Quantity>
<Subtotal>220.00</Subtotal>
<Description>Mighty Foobar Flange</Description>
</Item>
<Item id="3">
<SKU>9982</SKU>
<PricePer>2.50</PricePer>
<Quantity>1000</Quantity>
<Subtotal>2500.00</Subtotal>
<Description>Deluxe Doohickie</Description>
</Item>
<Item id="4">
<SKU>3256</SKU>
<PricePer>389.00</PricePer>
<Quantity>1</Quantity>
<Subtotal>389.00</Subtotal>
<Description>Muckalucket Bucket</Description>
</Item>
<NumberItems>1111</NumberItems>
<Total>3704.00</Total>
<OrderDate>07/07/2002</OrderDate>
<OrderNumber>8876</OrderNumber>
</Order>
Listing B: order.xsl
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="column" select="'SKU'"/>
<xsl:param name="order" select="'ascending'"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="Order">
<xsl:with-param name="sortcolumn" select="$column" />
<xsl:with-param name="sortorder" select="$order" />
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="Order">
<xsl:param name="sortcolumn" />
<xsl:param name="sortorder" />
<table border="1">
<tr>
<th>Account</th>
<th>SKU</th>
<th>Description</th>
<th>Price</th>
<th>Quantity</th>
<th>Subtotal</th>
</tr>
<xsl:apply-templates select="Item">
<xsl:sort select="*[name()=$sortcolumn]" order="{$sortorder}" />
</xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="Item">
<tr>
<td><xsl:value-of select="../Account" /></td>
<td><xsl:value-of select="SKU" /></td>
<td><xsl:value-of select="Description" /></td>
<td><xsl:value-of select="PricePer" /></td>
<td><xsl:value-of select="Quantity" /></td>
<td><xsl:value-of select="Subtotal" /></td>
</tr>
</xsl:template>
</xsl:stylesheet>
¸ÅÊö
ÔÚÕâ¸öÀý×ÓÖÐÎÒÃÇÖ÷ÒªÓõ½PHPÖеÄÈý¸öXSLº¯Êý¡£Ê×ÏÈÎÒÃÇÒª´´½¨Ò»¸öXSLÒýÇæµÄʵÀý£¬È»ºó°ÑËùÓÐÒªÊäÈëµÄÎĵµÊäÈëÕâ¸öXSLÒýÇæ½øÐд¦Àí£¬²¢µÃµ½·µ»Ø½á¹û£¬×îºó£¬µ±ÎÒÃÇÔÙÒ²²»ÐèÒªÕâ¸öXSLÒýÇæÊ±¾Í¹Ø±ÕËü¡£
´´½¨¡¢´¦Àí¡¢¹Ø±Õ
ÎÒÃǽ«ÒªÔÚÄÚ´æÖÐн¨Ò»¸öXSL½ø³Ì¡£ÎªÁË·½±ãÔÚÆäËûXSLº¯ÊýÖÐʹÓÃÕâ¸öXSL½ø³Ì£¬PHP»á¸øÎÒÃÇÌṩÕâ¸öXSL½ø³ÌµÄ¾ä±ú£¬¶ø²»ÊÇÒ»¸ö¶ÔÏó¡£½¨Á¢Õâ¸öXSLÒýÇæµÄÃüÁîÊÇxslt_create¡£º¯Êý·µ»ØÒ»¸ö¾ä±ú£¬ÈçÏÂËùʾ£º
$handle = xslt_create();
ΪÁËÕæÕýµÄ½âÎöXMLÎĵµ²¢Ê¹XSLTÄܹ»½øÐд¦Àí£¬Äã±ØÐëʹÓÃPHPÖеÄxslt_processº¯Êý¡£Õâ¸öº¯ÊýÐèÒª»ñÈ¡¼¸¸ö²»Í¬µÄ²ÎÊý¡£
ÔÚÕâÀïÎÒÃÇʹÓÃÒ»¸öºÜ»ù±¾µÄ·½·¨£¬Îªxslt_processÌṩÈý¸ö²ÎÊý¡£µÚÒ»¸ö²ÎÊýÊÇÎÒÃǽÏÔçǰ´´½¨µÄÄǸöXSLÒýÇæµÄ¾ä±ú¡£µÚ¶þ¸ö²ÎÊýÊÇÊäÈëµÄXMLÎĵµµÄÎļþÃû¡£µÚÈý¸ö²ÎÊýÊÇÊäÈëµÄXSLÎļþµÄÎļþÃû¡£Õâ¸öº¯Êý»á·µ»Ø´¦Àí½á¹û¡£ÏÂÃæÊÇÀý×Ó£º
$return = xslt_process($handle, $xmlfile, $xslfile);
×îºóÎÒÃÇÒªÓõ½µÄº¯ÊýÊÇxslt_free¡£Õâ¸öº¯ÊýÓÃÀ´É±µôÄÚ´æÖеÄXSLÒýÇæÊµÀý²¢ÊͷųöÄÚ´æ¿Õ¼ä¡£ËüÖ»ÐèÒªÒ»¸ö²ÎÊý£¬¾ÍÊÇÄÚ´æÖÐÕâ¸öXSLʵÀýµÄ¾ä±ú¡£ÏÂÃæÊǸöÀý×Ó£º
xslt_free($handle);
×ÛºÏʵÏÖ
ÏÂÃæÈÃÎÒÃǽáºÏÉÏÃæµÄ¸÷¸ö´úÂëÆ¬¶ÏʵÏÖPHPͨ¹ýXSL stylesheetsÀ´´¦ÀíXMLÎĵµµÄ·½·¨¡£ÎÒÃÇʹÓÃÁбíA×÷ΪÎÒÃǵÄÊäÈëXMLÎĵµ£¬ÁбíB×÷ΪÎÒÃÇXSLÊäÈë¡£ÁбíCÊÇÕâ¸öÀý×ÓµÄÍêÕûPHP´úÂ룺
Listing C: order.php
<?php
$xmlfile = "order.xml";
$xslfile = "order.xsl";
$args = array("column"=>"Quantity", "order"=>"descending");
$engine = xslt_create();
$output = xslt_process($engine, $xmlfile, $xslfile, NULL, NULL, $args);
print $output;
xslt_free($engine);
?>
ÕâÀïÐèҪעÒâÒ»µã£¬ÎÒÃÇÔÚ´úÂëÖÐ×öÁËÒ»µã±ä¶¯¡£ÔÚXSL stylesheetÖУ¬Í¨¹ýÖ¸¶¨Ò»Ð©²ÎÊý£¬ÎÒÃÇ¿ÉÒԸıäÒ»Ð©ÇøÓò£¬±ÈÈçµØÖ·¡£ÕâʱÎÒÃÇÒªÖ¸¶¨¶©µ¥ÉϵÄÏîĿӦ¸Ã°´ÊýÁ¿µÝ¼õ·½Ê½ÅÅÁС£ÎÒÃÇʹÓÃPHPµÄÊý×éÀ´´æ´¢Ãû×Ö¶ÔÓ¦ÎÒÃǵIJÎÊý£¬È»ºóͨ¹ýxslt_processº¯Êý½«Ãû×Ö´«µÝ¸øXSLÒýÇæ¡£
±¾ÎÄ×÷ÕßBrian SchaffnerÊǸ»Ê¿Í¨×Éѯ¹«Ë¾µÄ¸±Ö÷ÈΡ£ËûΪ¸»Ê¿Í¨µ