DOC PREVIEW
Penn CIT 597 - Extensible Stylesheet Language Transformations

This preview shows page 1-2-14-15-29-30 out of 30 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 30 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

XSLTSlide 2Very simple exampleThe .xsl fileFinding the message textPutting it togetherHow XSLT worksWhere XSLT can be usedModern browsersxsl:value-ofxsl:for-eachFiltering outputFilter detailsBut it doesn’t work right!xsl:ifxsl:choosexsl:sortxsl:textCreating tags from XML dataCreating tags--solution 1Creating tags--solution 2ModularizationBook examplexsl:apply-templatesWhen templates are ignoredApplying templates to childrenCalling named templatesTemplates with parametersThoughts on XSLThe EndJan 13, 2019XSLT2XSLTXSLT stands for Extensible Stylesheet Language TransformationsXSLT is used to transform XML documents into other kinds of documents--usually, but not necessarily, XHTMLXSLT uses two input files:The XML document containing the actual dataThe XSL document containing both the “framework” in which to insert the data, and XSLT commands to do so3Very simple exampleFile data.xml: <?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="render.xsl"?><message>Howdy!</message>File render.xsl: <?xml version="1.0"?><xsl:stylesheet version="1.0” xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- one rule, to transform the input root (/) --> <xsl:template match="/"> <html><body> <h1><xsl:value-of select="message"/></h1> </body></html> </xsl:template></xsl:stylesheet>4The .xsl fileAn XSLT document has the .xsl extension The XSLT document begins with: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/ XSL/Transform">Contains one or more templates, such as: <xsl:template match="/"> ... </xsl:template>And ends with: </xsl:stylesheet>5Finding the message textThe template <xsl:template match="/"> says to select the entire fileYou can think of this as selecting the root node of the XML treeInside this template, <xsl:value-of select="message"/> selects the message childAlternative Xpath expressions that would also work:./message/message/text() (text() is an XPath function)./message/text()6Putting it togetherThe XSL was: <xsl:template match="/"> <html><body> <h1><xsl:value-of select="message"/></h1> </body></html> </xsl:template>The <xsl:template match="/"> chooses the rootThe <html><body> <h1> is written to the output fileThe contents of message is written to the output fileThe </h1> </body></html> is written to the output fileThe resultant file looks like: <html><body> <h1>Howdy!</h1> </body></html>7How XSLT worksThe XML text document is read in and stored as a tree of nodesThe <xsl:template match="/"> template is used to select the entire treeThe rules within the template are applied to the matching nodes, thus changing the structure of the XML treeIf there are other templates, they must be called explicitly from the main templateUnmatched parts of the XML tree are not changedAfter the template is applied, the tree is written out again as a text document8Where XSLT can be usedWith an appropriate program, such as Xerces, XSLT can be used to read and write filesA server can use XSLT to change XML files into HTML files before sending them to the clientA modern browser can use XSLT to change XML into HTML on the client sideThis is what we will mostly be doing in this classMost users seldom update their browsersIf you want “everyone” to see your pages, do any XSL processing on the server sideOtherwise, think about what best fits your situation9Modern browsersInternet Explorer 6 best supports XMLNetscape 6 supports some of XMLInternet Explorer 5.x supports an obsolete version of XMLIE5 is not good enough for this courseIf you must use IE5, the initial PI is different (you can look it up if you ever need it)10xsl:value-of<xsl:value-of select="XPath expression"/> selects the contents of an element and adds it to the output streamThe select attribute is requiredNotice that xsl:value-of is not a container, hence it needs to end with a slashExample (from an earlier slide): <h1> <xsl:value-of select="message"/> </h1>11xsl:for-eachxsl:for-each is a kind of loop statementThe syntax is <xsl:for-each select="XPath expression"> Text to insert and rules to apply </xsl:for-each> Example: to select every book (//book) and make an unordered list (<ul>) of their titles (title), use: <ul> <xsl:for-each select="//book"> <li> <xsl:value-of select="title"/> </li> </xsl:for-each> </ul>12Filtering outputYou can filter (restrict) output by adding a criterion to the select attribute’s value: <ul> <xsl:for-each select="//book"> <li> <xsl:value-of select="title[../author='Terry Pratchett']"/> </li> </xsl:for-each> </ul>This will select book titles by Terry Pratchett13Filter detailsHere is the filter we just used: <xsl:value-of select=" title[../author='Terry Pratchett' ]"/>author is a sibling of title, so from title we have to go up to its parent, book, then back down to authorThis filter requires a quote within a quote, so we need both single quotes and double quotesLegal filter operators are: = != &lt; &gt;Numbers should be quoted, but apparently don’t have to be14But it doesn’t work right!Here’s what we did: <xsl:for-each select="//book"> <li> <xsl:value-of select="title[../author='Terry Pratchett']"/> </li> </xsl:for-each>This will output <li> and </li> for every book, so we will get empty bullets for authors other than Terry PratchettThere is no obvious way to solve this with just xsl:value-of15xsl:ifxsl:if allows us to include content if a given condition (in the test attribute) is trueExample: <xsl:for-each select="//book"> <xsl:if test="author='Terry Pratchett'"> <li> <xsl:value-of select="title"/> </li> </xsl:if> </xsl:for-each>This does work correctly!16xsl:chooseThe xsl:choose ... xsl:when ... xsl:otherwise construct is XML’s equivalent of Java’s switch ... case ... default statementThe syntax is:<xsl:choose> <xsl:when test="some condition"> ... some code ... </xsl:when> <xsl:otherwise> ... some code ... </xsl:otherwise></xsl:choose>• xsl:choose is often used within an xsl:for-each loop17xsl:sortYou can place an xsl:sort inside an xsl:for-eachThe attribute of the sort tells what field to sort onExample: <ul> <xsl:for-each select="//book"> <xsl:sort select="author"/> <li> <xsl:value-of select="title"/> by


View Full Document

Penn CIT 597 - Extensible Stylesheet Language Transformations

Documents in this Course
DOM

DOM

21 pages

More DOM

More DOM

11 pages

Rails

Rails

33 pages

DOM

DOM

21 pages

RELAX NG

RELAX NG

31 pages

RELAX NG

RELAX NG

31 pages

RELAX NG

RELAX NG

31 pages

RELAX NG

RELAX NG

31 pages

Rake

Rake

12 pages

Ruby

Ruby

58 pages

DOM

DOM

21 pages

Tomcat

Tomcat

16 pages

DOM

DOM

21 pages

Servlets

Servlets

29 pages

Logging

Logging

17 pages

Html

Html

27 pages

DOM

DOM

22 pages

RELAX NG

RELAX NG

30 pages

Servlets

Servlets

28 pages

XHTML

XHTML

13 pages

DOM

DOM

21 pages

DOM

DOM

21 pages

Servlets

Servlets

26 pages

More CSS

More CSS

18 pages

Servlets

Servlets

29 pages

Logging

Logging

17 pages

Load more
Download Extensible Stylesheet Language Transformations
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Extensible Stylesheet Language Transformations and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Extensible Stylesheet Language Transformations 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?