1 / 19

Introduction to XSLT & its use in Grainger Library full-text & metadata projects

Introduction to XSLT & its use in Grainger Library full-text & metadata projects. Thomas G. Habing Grainger Engineering Library Presentation to ASIS&T, 12 November 2003 http://dli.grainger.uiuc.edu/ASIS_XSLT / (soon). XSL Transformations (XSLT).

sun
Download Presentation

Introduction to XSLT & its use in Grainger Library full-text & metadata projects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to XSLT & its use in Grainger Library full-text & metadata projects Thomas G. HabingGrainger Engineering Library Presentation to ASIS&T, 12 November 2003http://dli.grainger.uiuc.edu/ASIS_XSLT/ (soon)

  2. XSL Transformations (XSLT) XSLT 1.0 – W3C Recommendation (16 November 1999) XSL FO 1.0 –W3C Recommendation(15 October 2001) XSLT 2.0 – W3C Working Draft (2 May 2003) • Language for transforming XML to XML, HTML • Map from one semantic scheme to another (generally of equivalent or lesser granularity) • E.g., map <auth><sn>Cole</sn><fn>Tim</fn></auth> to <creator>Tim Cole</creator> Intro to XSLT at Grainger

  3. XSL Transformations (XSLT) – 2 • Examples: • XML to XHTML • MARC to Dublin Core • ISO Math Markup to MathML • Normalize collection of heterogeneous markup • Extract subset of a complete document(s) • Open multiple XML documents simultaneously • Search across multiple XML documents • Read XSD to decide how to transform an XML file Intro to XSLT at Grainger

  4. XSL Transformations (XSLT) – 3 • Full-featured procedural programming language • Flow control (e.g., looping & conditional branching) • Variables, input parameters supported • Basic string manipulation, numeric calculations • Modularity, calls to external functions, recursion • External functions execute within constraints of transforming XML parser being used • Single XML document as output (1.0) Intro to XSLT at Grainger

  5. XSL Transformations (XSLT) – 4 • Implemented by transforming XML parsers • Transforms can be done server or client side • Newer browsers (IE5, Mozilla / Netscape 7) • XSLT documents are themselves XML <xsl:template match='//author'> <xsl:element name='dc:creator'> <xsl:value-of select='lastname'/> <xsl:text>, </xsl:text> <xsl:value-of select='firstname'/> </xsl:element > </xsl:template> • Valuable for interoperability or reusability Intro to XSLT at Grainger

  6. XML Path Language (XPath) XPath 1.0 – W3C Recommendation (16 November 1999) XPath 2.0 – W3C Working Draft (22 August 2003) • Language for addressing parts of an XML file • Data model for XML • Includes tests, pattern matching • Used in XSLT to access DOM elements Intro to XSLT at Grainger

  7. XML Path Language (XPath) – 2 • XPath expressions evaluate to atomic values, individual nodes, or collections of nodes • XPath is syntax for identify document nodes in XSLT • //dc:title • dc:dc/dc:subject[3] • dc:dc/dc:* • marc:datafield[@tag=100] | marc:datafield[@tag=110] • marc:datafield[@tag=260]/marc:subfield[@code='c'] • . • substring(dc:title,5,10) Intro to XSLT at Grainger

  8. XSLT Examples • XSLT for Dublin Core XML to XHTML • Ballads DC • XSLT for MARC21 XML to HTML • Ballads MARC • XSLT for MARC21 XML to DC XML • Ballads MARC to DC • XSLT to search multiple DC XML files • Search 5 DC Records Intro to XSLT at Grainger

  9. ZVON Tutorial http://www.zvon.org/xxl/XPathTutorial/General/examples.html http://www.zvon.org/xxl/XSLTutorial/Output/contents.html Intro to XSLT at Grainger

  10. XSL Tools • TIBCO XMLTransform • MarrowSoft Xselerator • Treebeard • JAXP (Java XML Transforming Parser) • MSXML SDK • MSXSL (Command line transformer) • EXSLT Intro to XSLT at Grainger

  11. XSLT Where Should It Happen • Client-side • IE5+ or Mozilla • IE5 not yet fully compliant w/ XSLT and XPath standard • Can reduce the load on your servers • But performance on low-end clients can be BAD • Server-side • Performance could be a problem on busy servers, serving large, complex documents • More control and flexibility over the conversion (metamerge) • Offline Preconversion • Best performance • Not good for dynamic documents (metamerge) Intro to XSLT at Grainger

  12. How We Use XSLT • Most tags are converted to HTML spans with a class attribute equal to the original tag name,i.e. <sect>becomes<span class=“sect”> <xsl:template match=“*”> <span> <xsl:attribute name=“class”> <xsl:value-of select=“local-name()”/> </xsl:attribute> <xsl:apply-templates/> </span></xsl:template> • If the tag must be a block element, that is specified in the CSS: span.sect {display:block} • This improves the modularity of the code Intro to XSLT at Grainger

  13. How We Use XSLT (cont.) • Some tags require special conversion,i.e.<emph type=“1”>becomes <span class=“emph_1”> <xsl:template match=“emph”> <span> <xsl:attribute name=“class”> <xsl:value-of select=“local-name()”/>_ <xsl:value-of select=“@type”/> </xsl:attribute> <xsl:apply-templates/> </span></xsl:template> • CSS: span.emph_1 {font-style:italic} span.emph_2 {font-weight:bold} Intro to XSLT at Grainger

  14. How We Use XSLT (cont.) • Some elements need to have punctuation added, i.e.<ag><au>Tom</au><au>Tim</au><au>Bob</au></ag> becomes Tom, Tim, Bob. <xsl:template match=“au[position() = last()]”> <span><xsl:call-template name=“class-attr”/> <xsl:apply-templates/>. </span></xsl:template><xsl:template match=“au[position() != last()]”> <span><xsl:call-template name=“class-attr”/> <xsl:apply-templates/>,&#32; </span></xsl:template> Intro to XSLT at Grainger

  15. How We Use XSLT (cont.) • Some elements need their children rearrangedi.e.<au><sn>Habing</sn><fn>Tom</fn></au> becomes Tom Habing <xsl:template match=“au”> <span><xsl:call-template name=“class-attr”/> <xsl:apply-templates select=“fn”/>&#32; <xsl:apply-templates select=“sn”/> </span></xsl:template> • ‘Real’ DTDs can require some fairly complex processing. • So far XSLT seems to be able to handle nearly every case we have come across • However, some cases have required JScript extensions to XSLT Intro to XSLT at Grainger

  16. How We Use XSLT (cont.) • Some elements are converted into HTML elements other than <span> • Elements representing figures or images are converted to the <img src=“…”> tag. • Elements representing internal links with ID and IDREF attributes are usually converted into <a name=“…”></a> or <a href=“#…”>…</a> tags. • Table elements are converted into corresponding HTML <table>, <tr>, or <td> tags. • In all cases, a class attribute is added which is the original XML tag name; this is used in the CSS. Intro to XSLT at Grainger

  17. XSLT Demos • ASM Handbook • article2.xsl • asm_ie5_html.css • Summary of Engineering Research • SER2FO.xsl • Dublin Core XML Schemas • DCDD.xsl • DCDD2.xsl • test_dcterms.xml • sampleDCDD2.xml Intro to XSLT at Grainger

  18. TEI and XSLT • XSL stylesheets for TEI XML • XSL TEI HTML stylesheet parameterization Intro to XSLT at Grainger

  19. Extreme XSLT • http://fxsl.sourceforge.net/ • http://www.topxml.com/code/?p=1&ms=10&l=designpatterns&sw=categ • http://www.schematron.com/ Intro to XSLT at Grainger

More Related