230 likes | 349 Views
ACG 4401. XSLT Extensible Stylesheet Language for Transformations Presenting XML and XBRL. XSLT. Extensible Hey it ’ s based on XML Stylesheet What the data will look like Language Scripting Transformations Reuse, Repurpose, calculate, sort, etc. XSLT Parts. XSL
E N D
ACG 4401 XSLT Extensible Stylesheet Language for Transformations Presenting XML and XBRL
XSLT • Extensible • Hey it’s based on XML • Stylesheet • What the data will look like • Language • Scripting • Transformations • Reuse, Repurpose, calculate, sort, etc.
XSLT Parts • XSL • Transform Instance Document to different Form • HTML, XHTML, XML (new), PDF • XSLFO • For formatting data
Re-Purpose • The main benefit of XML / XBRL • Reusability of Data contained in Instance Document • We need a method of presenting the data • Presentation Linkbase • XSLT
A UBL Catalogue Node Tree Name PartyName Party + Provider Party + Receiver Party + Catalogue Line ID Name IssueDate Leaf Nodes Branch Nodes Catalogue
Transformation Requires xml code in Two Documents • Instance Document • 2nd Prolog line linking instance document to XSLT document • XSLT Document • Contains script for selecting elements to be displayed
Must have 2nd prolog linking to .xsl XSLT XML Instance document XML Processor XML Result document XSLT Instructions • 2 Inputs: • Instance & XSLT • Processing • Browser
Transforming your Instance Document • Contain elements and data but.. • Does NOT contain formatting information • Add an additional prolog statement • Connects your .xml to your .xsl document <?xml-stylesheet type=“text/xsl” href=“name.xsl”?> • xml-stylesheet • Tells the processor to use the stylesheet file to transform the data in the .xml document • href= • Points to location of .xsl document.
XSLT (the XML code) • Root Element • namespace declaration • <xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/XSL/Transform” version="1.0"> • All other namespaces used in the instance document (MUST MATCH) • Default namespaces (e.g. without the prefix) are not allowed in XSLT v 1.0 • Need to make up a prefix Don’t forget this!
XSLT Scripting Code • Elements used: • templates • for-each • value-of • Functions • Formatting • Format-number • Sum • Mathematical Operations • +, -, *, div
Templates • Line that follows root element • What elements from .xml are being used? • Templates provide answer • Processing Elements from Instance against Template created in XSLT • <xsl:template match=“/”> • / = Look in entire source document
How to transform data • <HTML> container • Tells processor transformation will use html tags. • Remaining code between <HTML> and </HTML> code is the data to be transformed and the formatting code for the transformation
<?xml version="1.0"?> <Inventory> <InventoryItem> <Name>Basketball</Name> <IdNumber>12345</IdNumber> <Cost units="USD">12.50</Cost> <RetailPrice units="USD">25.00</RetailPrice> </InventoryItem> </Inventory>
value-of • Selects and transforms/formats • Displays the value of the selected element • At the end of the node • Based on select attribute • You must point to the “node” you want displayed • “Full node path” • “Inventory/InventoryItem/IdNumber” = 12345 • “//elementname” • Used when one and only one element has the name • Start at root and look for element name. • <xsl:value-of select=“NodeName”/> • Value-of select can use a function.....
Numeric ceiling() floor() number() round() sum() String concat() contains() normalize-space() starts-with() string() string-length() substring() substring-after() substring-before() translate() Functions
format() function • format-number attribute has two arguments • Number • Pattern (see formatting patterns) • <xsl:value-of select =“format-number(Inventory/InventoryItem/Cost,’$#.00’)”/> Number pattern
Formatting Numbers • 0 A digit. • # A digit, zero shows as absent. • $ prefix • . (period) Placeholder for decimal separator. • , Placeholder for grouping separator. • ; Separate formats. • - Default prefix for negative. • % Multiply by 100 and show as a percentage. • X Any other characters can be used in the prefix or suffix. • ‘ Used to quote special characters in a prefix or suffix.
for-each loop • Selects • All elements contained in a node-set • Node-set is declared with select attribute • Additional .xsl code provide instructions for what to do with selected data • What transformations to make • HTML, and XSL tags combined. • <xsl:for-each select=“Inventory/InventoryItem>
Accessing Remote Instance Docs • document() function • <xsl:value-of select=“document(‘URI.xml’)/xpath”/>
Output (HTML) • <HTML> • Transformation will be to an HTML doc. • <Center> • All tags must be closed!
Defining Tables in HTML • <Table Border=“n”> • Tells browser to begin making a table • <TR> • Tells browser to insert a new row • <TH> • Tells browser to insert a new column in the new row AND use text as heading (bold) • <TD> • Tells browser to insert a new column in the new row • Close all tags • </TD>, </TR>, </Table>
Table with 2 rows and 3 columns <TABLE BORDER=“1”> <TR> <TD>r1c1</TD> <TD>r1c2</TD> <TD>r1c3</TD></TR> <TR> <TD>r2c1</TD> <TD>r2c2</TD> <TD>r2c3</TD></TR>