|
|
|
|
![]() ![]() |
Mar 15 2006, 06:31 AM
Post
#1
|
|
|
Newbie [ Level 2 ] Group: Members Posts: 10 Joined: 13-March 06 Member No.: 11,941 |
start with an xml file:
CODE <?xml encoding="utf-8" version="1.0"?> <root> <contact type="business"> <name>John</name> </contact> <contact type="business"> <name>Jane</name> </contact> <contact type="business"> <name>Jack</name> </contact> <contact type="family"> <name>Jim</name> </contact> </root> now write your contacts.xslt file: CODE <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="utf-8" /> <xsl:template match="/"> <html> <xsl:for-each select="//contact/[type=business]"> <xsl:call-template name="contact" /> </xsl:for-each> </html> </xsl:template> <xsl:template name="family"> <xsl:value-of select="./name" /> <br/> </xsl:template> </xsl:stylesheet> now you need xslt processor to combine xml + xslt, in php there is get Sablotron xslt processor. example using Sablotron: CODE <?php $xmlFile = 'contacts.xml'; $xslFile = 'contacts.xslt'; // Create a new processor handle $xslt_processor= xslt_create() or die("Can't create XSLT processor handle!"); //set up parameters //$parameters = array('searchstring'=>$searchstring); $parameters = NULL; //perform the XSLT transformation $result = xslt_process($xslt_processor, $xmlFile, $xslFile, NULL, NULL, $parameters); // Free up the resources xslt_free($xslt_processor); echo($result); ?> the output is: John Jane Jack notes and explanation: xslt uses powerful xpath expression to navigate through the xml parsetree. |
|
|
|
Jun 13 2008, 03:28 AM
Post
#2
|
|
|
Super Member Group: [HOSTED] Posts: 696 Joined: 12-July 06 From: Ontario, Canada Member No.: 14,464 |
First of all, you do not need to use server side XSLT parsing to read an XML file. You can simply specify it as a stylesheet using an XML processing instruction in the XML file like this:
CODE <?xml-stylesheet type="text/xsl" href="yourFile.xsl" ?> .Second of all, for a beginner tutorial, I wouldn't make it as complicated with attribute names and multiple templates. I mean <xsl:call-template />? That is definitely not for beginners. Internet Explorer has the MSXML parser, Gecko-based browsers (Firefox/Mozilla/Flock) has a built-in XSLT parser and Safari/Konqueror can also read XSLT correctly too. You don't need PHP to parse XSLT, browsers can do it. |
|
|
|
![]() ![]() |
Similar Topics
|
Lo-Fi Version | Time is now: 11th October 2008 - 06:07 PM |