upCastRT 8 – What's new?
New Features in upCastRT 8
The upCast Processing Language has been extended in many areas: new functions, enhanced semantics, more pervasive use of its type system throughout the application.
New functions include:
xslt(), sourcefile-uri(), tokenize(), encode-for-uri(), decode-from-uri(), fs-exists(), distinct-values(), intersect(), except(), system-exec(), html-to-image(), extract-zip-archive(), create-zip-archive(), add-to-zip-archive(), markup-style-with-roots()
New core language features include verbatim string literals (using triple-" or triple-' for delimiting), bitwise AND, OR, NOT, XOR for Numeric values, and the support for assigning (and querying for)
nullto UPL variables of any type. Also, you can now call Java functions with UPL typed values, as they get automagically converted back and forth between Java native types. Last but not least, you now can create blocks for scoping of variable visibility.
XPath expressions (e.g. in
eval-xpath()or as parameters to functions like
set-attr()can now use a selection of new custom functions:
node-before(), node-after(), is-ancestor(), is-descendant(), is-same-node(), current()
The functions for extracting and especially creating and modifying zip files have been rewritten from scratch. They now allow you to easily specify which items to pack, and whether they should be stored or deflated. This is important for when you need to create e.g. EPUB files which require the mime type file to be first and stored only in the ZIP archive, which you can now easily achieve.
Changes & Improvements
External Variables (shared variables)
You can now store UPL value typed variable values in so-called external stores. You can think of these as scoped shared memory. This is useful when you need to store, and pass along to other components and subpipelines, common values which should be valid only within e.g. that specific conversion run, or you may even store values at application level to persist them across pipeline executions.
The RTF Importer is about 2.5 times faster on typical documents.
Support for XML catalogs has been greatly extended throughout the application. Whenever a resource is requested by an URI, that one passes through the full set of catalogs set up for that context, allowing you to redirect any file requests easily by way of the well-known, easy-to-understand (XML-) Catalog system.