I went to the ACCU Spring Conference 2006 last week. There were some interesting sessions, as usual.
XSLT2 and XPath2
Version 1 of XSLT and XPath were fairly limited in their XML processing abilities in some respects: no possibility to reference local variables was the worst. Version 2.0 of these langauges fixes this and other shortcomings with a raft of new features and generalisations. In fact XSLT2 and XPath2 are very different from their predecessors.
XSLT2 allows operations on temporary/local variables and returned node sets. This can lead to greatly simplified XSLT documents. In addition, there are some nice new operator and keywords:
xsl:for-each – generalised operations over the universal new Sequence type (see below)
xsl:for-each-group – allows GROUP BY (pivot) of data
xsl:analyze-string – use RegEx to match text in nodes
xsl:function – define a custom function in XSL, and call it using XPath2 expressions
xsl:unparsed-text – handle non-XML text e.g. CSV
The most fundamental change in XPath2 is that all XPath2 expressions now operate upon the (typed) Sequence datatype instead of node sets. XPath2 also allows conditional expressions, whereas in XPath1 all expressions had to resolve at ‘compile’ time.
Comments are now allowed in XPath2 expressions, and nested loops are allowed (akin to JOIN in SQL). There is a new
doc() function for pulling in nodes from a separate XML document, and RegEx support has been beefed up.
Java Server Faces 1.2 (JSF)
Java Server Faces is Sun’s answer to ASP.NET, and shares the smae basic approach of separating logic from presentation.
Sun seems to have taken the ‘any browser’ abstraction from ASP.NET and extended this to ‘any device’: we were shown a demonstration of the same JSF application serving pages to a web browser, a Telnet client, and a Jabber client, of all things!
It’s possible to define much of the application and component configuration via config files, and this process seemed simpler than the techinique for ASP.NET, even version 2.0 with the improved config file handlers.
The other nice thing about JSF 1.2 was the Page Flow model: a sequence of navigation actions by the user can be captured in the config file, allowing JSF to craft up appropriate links (e.g. for Edit, Save, Delete actions) automatically.
I spend some valuable time talking to on of the keynote speakers about Due Diligence reviews for software.
Approximation: the source code doesn’t matter: it’s the environment and processes which determine how maintainable the software is.