重新考慮XSLT因爲它維持一個sort方法。出於演示的,下面變換原始XML饋送到XML與由價格降序排序的特性,僅選擇特定的元件,過濾器,以第一5(<
相當於<
),並且僅與元件狀態='讓。
XSLT(保存爲文件名爲.xsl或嵌入PHP字符串)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="/properties">
<xsl:copy>
<xsl:apply-templates select="property[position() < 6 and status='Let']">
<xsl:sort select="translate(price, ',', '')" data-type="number" order="descending"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="property">
<xsl:copy>
<xsl:copy-of select="id|beds|baths|price|address1|area|postcode|date_updated|transaction|status|image|img|description"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
PHP(一定要在.ini文件中啓用了PHP的XSL擴展)
<?php
// LOAD XML FEED
$xml = simplexml_load_file("http://feed.harjbains.gnomen-europe.com/xml-feed/");
// LOAD XSLT SCRIPT
$xsl = new DOMDocument;
$xsl->load('XSLT_Script.xsl'); // OR $xsl->loadXML($xslstring);
// INITIALIZE TRANSFORMER
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
// TRANSFORM SOURCE TO NEW TREE
$newXML = $proc->transformToXML($xml);
// ECHO OUTPUT
echo $newXML;
// SAVE OUTPUT TO FILE
file_put_contents('Output.xml', $newXML);
?>
輸出
<properties>
<property>
<id>1184</id>
<beds>3</beds>
<baths>3</baths>
<image>
</image>
<price>695</price>
<area>Wolverhampton</area>
<address1>Park Hall Road</address1>
<description>A vastly extended three bedroom semi-detached property. Just been totally re-furbished. Comprising of front reception room, extended through lounge, third room which can be used as fourth bedroom. This leads into a shower room which has WC and basin. Utility room with plumbing. Fitted kitchen with gas cooker and hob. To the first floor, master bedroom with en-suite. Two further double bedrooms and family bathroom. Rear garden and front garden with drive for off-road parking.</description>
<postcode>WV4 5DU</postcode>
<date_updated></date_updated>
<transaction>2</transaction>
<status>Let</status>
</property>
<property>
<id>1176</id>
<beds>3</beds>
<baths>1</baths>
<image>
</image>
<price>575</price>
<area>Wolverhampton</area>
<address1>Park Hall Road</address1>
<description>A very well presented three bedroom semi-detached property which has been totally re-furbished. Living room, leading to dining room and fitted kitchen with cooker. Three bedrooms and new family bathroom with shower. New flooring and carpets throughout. Double glazed and gas central heated. Rear garden with patio, front garden with drive leading to garage. Available immediately.</description>
<postcode>WV4 5DU</postcode>
<date_updated></date_updated>
<transaction>2</transaction>
<status>Let</status>
</property>
<property>
<id>1181</id>
<beds>3</beds>
<baths>1</baths>
<image>
</image>
<price>550</price>
<area>Willenhall</area>
<address1>Westfield Road</address1>
<description>A very well presented three bedroom semi-detached property. Front reception room, large fitted kitchen with dining area. To the first floor, three bedrooms and modern family bathroom with separate shower cubicle. Front garden with space for off-road parking, rear garden. Double glazed and central heated throughout. Available immediately.</description>
<postcode>WV13 3JX</postcode>
<date_updated></date_updated>
<transaction>2</transaction>
<status>Let</status>
</property>
<property>
<id>1174</id>
<beds>3</beds>
<baths>1</baths>
<image>
</image>
<price>550</price>
<area>Willenhall</area>
<address1>Sandringham Avenue</address1>
<description>Three bedroom semi-detached property in popular residential area. Comprising of through lounge, fitted kitchen. Patio door to rear garden. Three bedrooms to first floor. Family bathroom with shower. Garage to side, front garden and off-road parking. Available immediately.</description>
<postcode>WV12 5TF</postcode>
<date_updated></date_updated>
<transaction>2</transaction>
<status>Let</status>
</property>
<property>
<id>1177</id>
<beds>3</beds>
<baths>1</baths>
<image>
</image>
<price>500</price>
<area>Willenhall</area>
<address1>Marshall Road</address1>
<description>Three bedroom semi-detached property. Comprising of two reception rooms, fitted kitchen to ground floor. Three bedrooms and family bathroom to first floor. Double glazed and central heated throughout. Front and rear gardens. Available immediately.</description>
<postcode>WV13 3PB</postcode>
<date_updated></date_updated>
<transaction>2</transaction>
<status>Let</status>
</property>
</properties>