[2.0] Using XSLT 2.0 to Simplify Things
We’ve mentioned several times in this chapter that XSLT 2.0 has capabilities that can greatly simplify our stylesheet. We’ll look at those techniques in this section.
The XSLT 1.0 stylesheet we’ve developed here has several areas ripe for improvement:
We have to use the XSLT 1.0 grouping technique. We can avoid this clumsiness by using XSLT 2.0’s
<xsl:for-each-group>to do the grouping for us. The XSLT processor does the work of finding all of the unique state values, simplifying our lives significantly.We have to use recursion to calculate the total of each purchase order. We can use new features of XPath 2.0 to calculate the total in one simple expression.
Although the
document('')technique we used works, it’s a convoluted way of doing things. We can replace it with an XSLT function that takes a state abbreviation as input and returns the full name of that state. This gives us a much simpler syntax. CallinggetStateName()is much easier to understand and maintain thandocument('')/*/states:name[@abbrev=$next-state].It’s a minor point, but we have to use an
<xsl:choose>element in a couple of places. We can use theifoperator defined in the XPath 2.0 and XQuery 1.0 Functions and Operators spec to simplify the stylesheet. Instead of<xsl:choose>,<xsl:when>, and<xsl:otherwise>, we’ll useif,then, andelse.Another minor point is that the date of each purchase order is stored in the XML source as a set of three attributes. We can use XSLT 2.0’s ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access