ACG 5405 - acg4401

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
 XSLT
Linkbase
A UBL Catalogue Node Tree
Party
ID
Name
Issue
Date
+
Provider
Party
PartyName
+
Receiver
Party
Leaf Nodes
Branch Nodes
Catalogue
Name
+
Catalogue
Line
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
XSLT
XML
Instance
document
XSLT
Instructions
XML
Processor
• 2 Inputs:
• Instance & XSLT
• Processing
• Browser
XML
Result
document
Transforming your Instance
Document
 Contain elements and data but..
 Do 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
XSLT Scripting Code
 Elements used:




templates
for-each
value-of
Functions
 Formatting
 Format-number
Sum
 Mathematical

+, -, *, div
Operations
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=“Name”/>
 Value-of select can use a function.....
Functions





Numeric
ceiling()
floor()
number()
round()
sum()
String
 concat()
 contains()
 normalize-space()
 starts-with()
 string()
 string-length()
 substring()
 substring-after()
 substring-before()
 translate()
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’)”/>
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
 <TH>
 Tells browser to use text as heading (1st row)
 <TR>
 Tells browser to insert a new row
 <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>