-
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引擎。
PHP使用XSL stylesheets解析转换XML文件
最新推荐文章于 2024-07-24 11:54:20 发布