Upload
lyneth
View
23
Download
0
Embed Size (px)
DESCRIPTION
CG0119 Web Database Systems Parsing XML: using SimpleXML & XSLT. XSLT. E X tensible S tylesheet L anguage T ransformations What is it? w3c recommendation that applies style sheets to XML Allows styles to be applied for outputting XML, to a web browser for instance. - PowerPoint PPT Presentation
Citation preview
CG0119 Web Database Systems
Parsing XML: using SimpleXML & XSLT
XSLT
• EXtensible Stylesheet Language Transformations
• What is it?– w3c recommendation that applies style
sheets to XML– Allows styles to be applied for outputting
XML, to a web browser for instance.– Can also sort and filter data for output– Like CSS, separates formatting from content
Creating the XSLT (1/6)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="heading" select="'XML Grade Listing (using XSLT)'"/> <xsl:output method="html" encoding="iso-8859-1" indent="no"/> <xsl:template match="/"> <h1><xsl:value-of select="$heading"/></h1> <table border="1"> ... <xsl:for-each select="grades/grade"> <tr> <td><xsl:value-of select="gradeID"/></td> <td><xsl:value-of select="result"/></td> </tr> </xsl:for-each> </table> </xsl:template></xsl:stylesheet>
Style sheet declaration (must be at the beginning of the file)
Creating the XSLT (2/6)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="heading" select="'XML Grade Listing (using XSLT)'"/> <xsl:output method="html" encoding="iso-8859-1" indent="no"/> <xsl:template match="/"> <h1><xsl:value-of select="$heading"/></h1> <table border="1"> ... <xsl:for-each select="grades/grade"> <tr> <td><xsl:value-of select="gradeID"/></td> <td><xsl:value-of select="result"/></td> </tr> </xsl:for-each> </table> </xsl:template></xsl:stylesheet>
This is optional – purely demonstrates that parameters can be used in a similar way to variables.
Creating the XSLT (3/6)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="heading" select="'XML Grade Listing (using XSLT)'"/> <xsl:output method="html" encoding="iso-8859-1" indent="no"/> <xsl:template match="/"> <h1><xsl:value-of select="$heading"/></h1> <table border="1"> ... <xsl:for-each select="grades/grade"> <tr> <td><xsl:value-of select="gradeID"/></td> <td><xsl:value-of select="result"/></td> </tr> </xsl:for-each> </table> </xsl:template></xsl:stylesheet>
Declares the output method. Can also output as “xml” and “text”.
Creating the XSLT (4/6)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="heading" select="'XML Grade Listing (using XSLT)'"/> <xsl:output method="html" encoding="iso-8859-1" indent="no"/> <xsl:template match="/"> <h1><xsl:value-of select="$heading"/></h1> <table border="1"> ... <xsl:for-each select="grades/grade"> <tr> <td><xsl:value-of select="gradeID"/></td> <td><xsl:value-of select="result"/></td> </tr> </xsl:for-each> </table> </xsl:template></xsl:stylesheet>
Create a template that will be applied to any part of the XML that matches the expression. “/” is the expression for the root element.
Creating the XSLT (5/6)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="heading" select="'XML Grade Listing (using XSLT)'"/> <xsl:output method="html" encoding="iso-8859-1" indent="no"/> <xsl:template match="/"> <h1><xsl:value-of select="$heading"/></h1> <table border="1"> ... <xsl:for-each select="grades/grade"> <tr> <td><xsl:value-of select="gradeID"/></td> <td><xsl:value-of select="result"/></td> </tr> </xsl:for-each> </table> </xsl:template></xsl:stylesheet>
value-of is used to extract the data from a XML element or a param.XHTML can be inserted where ever required…
Creating the XSLT (6/6)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="heading" select="'XML Grade Listing (using XSLT)'"/> <xsl:output method="html" encoding="iso-8859-1" indent="no"/> <xsl:template match="/"> <h1><xsl:value-of select="$heading"/></h1> <table border="1"> ... <xsl:for-each select="grades/grade"> <tr> <td><xsl:value-of select="gradeID"/></td> <td><xsl:value-of select="result"/></td> </tr> </xsl:for-each> </table> </xsl:template></xsl:stylesheet>
Selects & applies a style for every element of a node-set as defined by the expression in the ‘select’ attribute.
Displaying XML using XSLT in PHP
// Load the XML data source$xml= simplexml_load_file('grade.xml'); // one of these will work$xml= DOMDocument::loadXML(file_get_contents('grade.xml');
// Load the XML stylesheet$xsl = simplexml_load_file('grade.xsl'); // one of these will work$xsl = DOMDocument::loadXML(file_get_contents('grade.xsl');// create an xslt processor instance$proc = new XSLTProcessor;
// import the xsl stylesheet into the xslt processor$proc->importStyleSheet($xsl);
// Transform and output the xml data sourceecho $proc->transformToXML($xml);
The output (unsorted)…
Sorting Data using the XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> ... <xsl:template match="/"> <h1><xsl:value-of select="$heading"/></h1> <table border="1"> ... <xsl:for-each select="grades/grade"> <xsl:sort select="result"/> <tr> <td><xsl:value-of select="gradeID"/></td> <td><xsl:value-of select="result"/></td> </tr> </xsl:for-each> </table> </xsl:template></xsl:stylesheet>
The output (sorted)…
Summary
• XSLT allows style sheets to be applied to XML documents
– Separates style from content
– Can output as xml, html and text
Use the reference on the next page. It is a good resource
Recommended Reading
http://www.w3schools.com/xsl/default.asp- w3schools XSLT tutorial & reference