XML Stylesheets Andy Clark 17 Apr 2002 What
- Slides: 37
XML Stylesheets Andy Clark 17 Apr 2002
What Is It? l l Extensible Stylesheet Language (XSL) Language for document transformation – Transformation (XSLT) l Converting XML to another form – – Formatting objects (XSL: FO) l Layout of XML document – – e. g. Use Xalan to convert to text, XML, HTML, etc… e. g. Use FOP to convert to PDF, etc… Defined by W 3 C
The Simplest Stylesheet (1 of 2) l 01 02 03 04 Empty XSLT document <? xml version=‘ 1. 0’ encoding=‘UTF-16’? > <xsl: stylesheet xmlns: xsl=‘http: //www. w 3. org/1999/XSL/Transform’ version=‘ 1. 0’> </xsl: stylesheet>
The Simplest Stylesheet (2 of 2) l 01 02 03 04 Empty XSLT document <? xml version=‘ 1. 0’ encoding=‘UTF-16’? > <xsl: stylesheet xmlns: xsl=‘http: //www. w 3. org/1999/XSL/Transform’ version=‘ 1. 0’> </xsl: stylesheet> – Note: This will simply copy the text content of the input document to the output.
What Are Its Features? l Features – Templates l – – Map input patterns to output Conditionals Loops Functions Extensions
Templates l Transformation rules – Selects nodes from input document l – Specifies output l l Can be text, XML, HTML (xml with html tags) Template modes – l Uses XPath expressions Allows multiple templates to have same rules Named templates – Call templates by name
Simple Template (1 of 4) l Match document root – <xsl: template match=‘/’> l <HTML> <BODY> l <xsl: apply-templates select=‘child: : *’/> – </BODY> – l – </HTML> </xsl: template>
Simple Template (2 of 4) l Match document root – <xsl: template match=‘/’> l <HTML> <BODY> l <xsl: apply-templates select=‘child: : *’/> – </BODY> – l – </HTML> </xsl: template>
Simple Template (3 of 4) l Match document root – <xsl: template match=‘/’> l <HTML> <BODY> l <xsl: apply-templates select=‘child: : *’/> – </BODY> – l – </HTML> </xsl: template>
Simple Template (4 of 4) l Match document root – <xsl: template match=‘/’> l <HTML> <BODY> l <xsl: apply-templates select=‘child: : *’/> – </BODY> – l – </HTML> </xsl: template>
Simple Template+ (1 of 5) l Match document root – <xsl: template match=‘/’> l <HTML> <BODY> l <xsl: apply-templates select=‘child: : *’/> – </BODY> – l – – </xsl: template> <xsl: template match=‘book’> l – </HTML> <H 1> <xsl: value-of select=‘title’/> </H 1> </xsl: template>
Simple Template+ (2 of 5) l Match document root – <xsl: template match=‘/’> l <HTML> <BODY> l <xsl: apply-templates select=‘child: : *’/> – </BODY> – l – – </xsl: template> <xsl: template match=‘book’> l – </HTML> <H 1> <xsl: value-of select=‘title’/> </H 1> </xsl: template>
Simple Template+ (3 of 5) l Match document root – <xsl: template match=‘/’> l <HTML> <BODY> l <xsl: apply-templates select=‘child: : *’/> – </BODY> – l – – </xsl: template> <xsl: template match=‘book’> l – </HTML> <H 1> <xsl: value-of select=‘title’/> </H 1> </xsl: template>
Simple Template+ (4 of 5) l Match document root – <xsl: template match=‘/’> l <HTML> <BODY> l <xsl: apply-templates select=‘child: : *’/> – </BODY> – l – – </xsl: template> <xsl: template match=‘book’> l – </HTML> <H 1> <xsl: value-of select=‘title’/> </H 1> </xsl: template>
Simple Template+ (5 of 5) l 01 02 03 nn <book isdn=‘ 1234 -5678 -90’> <title>Care and Feeding of Wombats</title> <chapter/> </book> l 01 02 03 04 05 Input Output <HTML> <BODY> <H 1>Care and Feeding of Wombats</H 1> </BODY> </HTML>
Conditionals l If statement – l <xsl: if test='expression'>. . . </xsl: if> Switch statement – <xsl: choose> l l – l <xsl: when test='expression'>. . . </xsl: when> <xsl: otherwise>. . . </xsl: otherwise> </xsl: choose> Predicates – foo[@bar="value"]
Loops l For statement – <xsl: for-each select='expression'> l l – <xsl: sort select='expression'/> … </xsl: for-each>
XPath Functions l Node-set functions – l String functions – l e. g. string(), contains(), substring(), etc… Boolean functions – l e. g. position(), last(), local-name(), etc… e. g. boolean(), not(), etc… Number functions – e. g. number(), sum(), round(), etc…
XSLT Functions l Multiple source documents – l l l e. g. document(“document 2. xml”) Keys Number formatting Additional functions – e. g. current(), system-property(), etc…
Example Transformation (0 of 14) l Source 01 <order> 02 <item code=‘BK 123’> 03 <name>Care and Feeding of Wombats</name> 04 <price currency=‘USD’>42. 00</price> 05 </item> 06 </order> l Destination 01 <HTML> 02 <BODY> 03 <TABLE border=‘ 1’> 04 <TR> <TH>Item</TH> <TH>Price</TH> </TR> 05 <TR> 06 <TD>BK 123 - <U>Care and Feeding of Wombats</U></TD> 07 <TD>$42. 00</TD> 08 </TR> 09 </TABLE> 10 </BODY> 11 </HTML>
Example Transformation (1 of 14) l Match <order> element 01 <xsl: stylesheet xmlns: xsl=‘http: //www. w 3. org/1999/XSL/Transform’ 02 version=‘ 1. 0’> 03 04 <xsl: template match=‘/order’> 05 <HTML> 06 <BODY> 07 <TABLE border=‘ 1’> 08 <TR> <TH>Item</TH> <TH>Price</TH> </TR> 09 <xsl: for-each select=‘item’> 10 <xsl: apply-templates/> 11 </xsl: for-each> 12 </TABLE> 13 </BODY> 14 </HTML> 15 </xsl: template>
Example Transformation (2 of 14) l Match <order> element 01 <xsl: stylesheet xmlns: xsl=‘http: //www. w 3. org/1999/XSL/Transform’ 02 version=‘ 1. 0’> 03 04 <xsl: template match=‘/order’> 05 <HTML> 06 <BODY> 07 <TABLE border=‘ 1’> 08 <TR> <TH>Item</TH> <TH>Price</TH> </TR> 09 <xsl: for-each select=‘item’> 10 <xsl: apply-templates/> 11 </xsl: for-each> 12 </TABLE> 13 </BODY> 14 </HTML> 15 </xsl: template>
Example Transformation (3 of 14) l Match <order> element 01 <xsl: stylesheet xmlns: xsl=‘http: //www. w 3. org/1999/XSL/Transform’ 02 version=‘ 1. 0’> 03 04 <xsl: template match=‘/order’> 05 <HTML> 06 <BODY> 07 <TABLE border=‘ 1’> 08 <TR> <TH>Item</TH> <TH>Price</TH> </TR> 09 <xsl: for-each select=‘item’> 10 <xsl: apply-templates/> 11 </xsl: for-each> 12 </TABLE> 13 </BODY> 14 </HTML> 15 </xsl: template>
Example Transformation (4 of 14) l Match <order> element 01 <xsl: stylesheet xmlns: xsl=‘http: //www. w 3. org/1999/XSL/Transform’ 02 version=‘ 1. 0’> 03 04 <xsl: template match=‘/order’> 05 <HTML> 06 <BODY> 07 <TABLE border=‘ 1’> 08 <TR> <TH>Item</TH> <TH>Price</TH> </TR> 09 <xsl: for-each select=‘item’> 10 <xsl: apply-templates/> 11 </xsl: for-each> 12 </TABLE> 13 </BODY> 14 </HTML> 15 </xsl: template>
Example Transformation (5 of 14) l Match <order> element 01 <xsl: stylesheet xmlns: xsl=‘http: //www. w 3. org/1999/XSL/Transform’ 02 version=‘ 1. 0’> 03 04 <xsl: template match=‘/order’> 05 <HTML> 06 <BODY> 07 <TABLE border=‘ 1’> 08 <TR> <TH>Item</TH> <TH>Price</TH> </TR> 09 <xsl: for-each select=‘item’> 10 <xsl: apply-templates/> 11 </xsl: for-each> 12 </TABLE> 13 </BODY> 14 </HTML> 15 </xsl: template>
Example Transformation (6 of 14) l Match <item> element 17 <xsl: template match=‘item’> 18 <TR> 19 <TD> 20 <xsl: value-of select=‘@code’/> 21 <U> <xsl: value-of select=‘name’/> </U> 22 </TD> 23 <xsl: apply-templates select=‘price’/> 24 </TR> 25 </xsl: template>
Example Transformation (7 of 14) l Match <item> element 17 <xsl: template match=‘item’> 18 <TR> 19 <TD> 20 <xsl: value-of select=‘@code’/> 21 <U> <xsl: value-of select=‘name’/> </U> 22 </TD> 23 <xsl: apply-templates select=‘price’/> 24 </TR> 25 </xsl: template>
Example Transformation (8 of 14) l Match <item> element 17 <xsl: template match=‘item’> 18 <TR> 19 <TD> 20 <xsl: value-of select=‘@code’/> 21 <U> <xsl: value-of select=‘name’/> </U> 22 </TD> 23 <xsl: apply-templates select=‘price’/> 24 </TR> 25 </xsl: template>
Example Transformation (9 of 14) l Match <item> element 17 <xsl: template match=‘item’> 18 <TR> 19 <TD> 20 <xsl: value-of select=‘@code’/> 21 <U> <xsl: value-of select=‘name’/> </U> 22 </TD> 23 <xsl: apply-templates select=‘price’/> 24 </TR> 25 </xsl: template>
Example Transformation (10 of 14) l Match <price> element 27 <xsl: template match=‘price’> 28 <TD> 29 <xsl: choose> 30 <xsl: when test=‘text()=“JPN”’> ¥ </xsl: when> 31 <xsl: otherwise> $ </xsl: otherwise> 32 </xsl: choose> 33 <xsl: value-of select=‘text()’/> 34 </TD> 35 </xsl: template> 36 37 </xsl: stylesheet>
Example Transformation (11 of 14) l Match <price> element 27 <xsl: template match=‘price’> 28 <TD> 29 <xsl: choose> 30 <xsl: when test=‘text()=“JPN”’> ¥ </xsl: when> 31 <xsl: otherwise> $ </xsl: otherwise> 32 </xsl: choose> 33 <xsl: value-of select=‘text()’/> 34 </TD> 35 </xsl: template> 36 37 </xsl: stylesheet>
Example Transformation (12 of 14) l Match <price> element 27 <xsl: template match=‘price’> 28 <TD> 29 <xsl: choose> 30 <xsl: when test=‘text()=“JPN”’> ¥ </xsl: when> 31 <xsl: otherwise> $ </xsl: otherwise> 32 </xsl: choose> 33 <xsl: value-of select=‘text()’/> 34 </TD> 35 </xsl: template> 36 37 </xsl: stylesheet>
Example Transformation (13 of 14) l Match <price> element 27 <xsl: template match=‘price’> 28 <TD> 29 <xsl: choose> 30 <xsl: when test=‘text()=“JPN”’> ¥ </xsl: when> 31 <xsl: otherwise> $ </xsl: otherwise> 32 </xsl: choose> 33 <xsl: value-of select=‘text()’/> 34 </TD> 35 </xsl: template> 36 37 </xsl: stylesheet>
Example Transformation (14 of 14) l Output Item Price BK 123 - Care and Feeding of Wombats $42. 00
Rendering XML in Browsers l l Latest browsers (e. g. IE 6. 0+) have support for XSLT Insert “xml-stylesheet” processing instruction – l <? xml-stylesheet type=‘text/xsl’ href=‘style. xsl’? > Output Item Price BK 123 - Care and Feeding of Wombats $42. 00
Useful Links l XPath 1. 0 Specification – l http: //www. w 3. org/TR/xpath XSLT 1. 0 Specification – http: //www. w 3. org/TR/xslt
XML Stylesheets Andy Clark
- User stylesheets
- Twinery org wiki
- Syntactically awesome stylesheets
- Clark and clark marketing functions
- Air purifying respirator (apr)
- Jan feb mar apr
- Apr vs ear
- àpr
- Apr vs ear
- Program
- Sistem za centralizovano prijavljivanje korisnika apr
- Nominal vs real return
- Apr annual product review
- Cours cap apr
- What does apr stand for
- Kotamiura 2002
- Visual studio 2002
- Nec vertinimo lentele
- Kotler 2002
- T.trimpe 2003 http //sciencespot.net/ answers
- Kakugu
- San antonio flood 2002
- Pocket pc 2002 emulator
- Brady and weil 2002
- Direito objetivo e subjetivo
- 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002
- Bonos 2002
- 5 novembre 2002
- Nrs 2002 başlangıç taraması
- Peraturan pembebanan indonesia terbaru
- Spm 2002
- Sknyliv air show disaster in 2002
- Une 157001:2002
- Konzeptmatrix
- Bartholow and anderson 2002
- Dgcpe
- Outil de la loi 2002
- Atv 2002