Date post: | 20-Dec-2015 |
Category: |
Documents |
View: | 239 times |
Download: | 1 times |
XSL
Unit 6
November 2
XSL
• XSL– eXtensible Stylesheet Language– Basically a stylesheet for XML documents
• XSL has three parts:– XSLT– XPath– XSL-FO
XSLT
• The most important bit of XSL• XSLT allows us to transform an XML
document into another XML document– For instance, transform an XML document
into an XHTML document
• XSLT relies on using XPath– We’re going to use it, but not cover it– Don’t have to go into detail in order to create
simple, effective XSL documents
XSLT Basics
• The whole idea behind XSLT is template matching
• What’s a template?– Let’s say we have a list of students like what we’ve
done in class:
<student>
<firstName>Marky</firstName>
<lastName>Mark</lastName>
<studentNumber>2001-22222</studentNumber>
</student>
Templates, cont.
• We know what one student “looks” like• All students follow the same format:
Student:first namelast namestudent number
• Every single one of the students in our XML document are described in exactly the same manner
• We can use a template to identify and use the parts of each student
<studentList><student>
<firstName>Marky </firstName><lastName>Mark </lastName><studentNumber>200122222 </lastname>
</student><student>
<firstName>Selma </firstName><lastName>Blair </lastName><studentNumber>200133333 </lastname>
</student>……
</studentList>
Templates, cont.
Creating a New XSL Stylesheet
• Created with a text editor
• Saved with file extension “.xsl”
• Just like with HTML, we have to put some “bits” at the top of our XSL file
• Again, you do not have to have these memorized completely– I will provide a blank version online when/if
needed
Creating an XSL Stylesheet, cont.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> Or<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
• You can use either “xls:stylesheet” or “xls:transform”, they are identical
Linking the XSL file to the XML file
• The top of our XML file should read something like this:
<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl"
href=“studentlist.xsl"?> • This is nearly identical to how we link HTML
pages to CSS files• Again, an empty file will be provided for you if
needed– But! You do need to know how to link to an XSL file
xsl:template
• xsl:template is an XSL element
• We are going to use it to apply rules when the template match is found
• <xsl:template match = “/”>– match = “/” means that we’ll apply the
template to the entire XML document
• This is the next line of our XSL file
XSL File, so far
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match = “/”>
……….
</xsl:template>
</xsl:stylesheet>
Beginning the Transformation to HTML
• What do we need for an html file?– <html>– <body>– Maybe a <head> tag?
• This is what we’ll add next to our XSL file
Beginning HTML
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match = “/”><html>
<head><title>XML Example</title></head><body>……….</body>
</html></xsl:template></xsl:stylesheet>
In-Class Example
• Adding some HTML
How do we add data?
• <xsl:value-of> gives us the value of a certain bit of our xml file
• Which bit?– We’ll use the select property and the information about our tag
• <xsl:value-of select =“studentList/student/first_name”/>• This long value for select is based on the structure of our
XML document– <studentList> is our root element– <student> is contained within <studentList>– <first_name> is the data we’re interested in– Just like paths for URLs
In class Example
• Adding some data to our html
• Using more html tags
More than Student?
• We can get the data for a single student, but what about our list of 3 students?– Or 300 for that matter?– We don’t want to cut and paste for every
student• What if the number of students changes?
• We can use the <xsl:for-each> element to loop through each of our students– Can use it to look through any “sets” of data
nodes (think items with (+) marks)
Using <xsl:for-each>
• <xsl:for-each> requires the use of the select attribute
• <xsl:for-each select = “some expression”>• But what to use?
– Depends on the repeat of the data– In the case of having a list of students
• select = “studentList/student”• Basically you can read this as “for each student, apply these
rules below”
• <xsl:for-each select=“studentList/student”>
In Class Example
• Adding for-each to loop through the students in the XML document
• Reversing last and first name
• Changing the format of the data
Sorting the Data
• We can sort the data in our XML files– For instance, we can alphabetize our student
list– Even if it’s not alphabetical in the XML file, the
HTML output will have the items in alphabetical order
• We are going to use the element
<xsl:sort>
Using <xsl:sort>
• We can specify what we are sorting on– First name?– Last name?– <xsl:sort select=“last_name”>
• Default is to sort ascending (A, B…Z)– But we can reverse it by using the order
property:<xsl:sort select=“last_name” order=“descending”/>
In Class Example
• Sorting the student list ascending and descending– Using both first and last name
• Another XML file with products
Questions?