Cup of Cafe con Leche XML News and Resources

Quote of the Day

You Can’t Be Too Skeptical of Authority

  • Don’t assume anything administration officials tell you is true. In fact, you are probably better off assuming anything they tell you is a lie.
  • Demand proof for their every assertion. Assume the proof is a lie. Demand that they prove that their proof is accurate.

--Dan Froomkin
Read the rest in Nieman Watchdog > Commentary > How the press can prevent another Iraq

Today's News

Mark Logic has released version 4.1 of their namesake XML database for Linux, Solaris, and Windows. New features in 4.1 include:

  • SSL and HTTPS Support
  • URL Rewriting
  • xdmp:to-json and xdmp:from-json extensions functions that serialize XQuery datatypes as a JSON string and vice-versa
  • Japanese Language Support
  • Read-Only Forests
  • Built-in scheduler (like cron)
  • Search API With Support for Facets and Snippets
  • W3C XML Schema Validation
  • Function Values
  • xdmp:pretty-print extension function
  • xdmp:elapsed-time extension function

Pricing's hidden, but seems to be in the ballpark of $60,000 as best I can tell.


Permalink to Today's News | Recent News | Today's Java News on Cafe au Lait | The Cafes | Older News | E-mail Elliotte Rusty Harold


Recommended Reading

Selected content that might have some relevance or interest for this site's visitors:

You can also see previous recommended reading or subscribe to the recommended reading RSS feed if you like.


Recent News

Friday, June 26, 2009 (Permalink)

Norm Walsh has posted version 0.9.12 of Calabash, an open source XProc implementation written in Java. This release fixes bugs and adds a non-standard “general values extension”. Java 5 or later is required. Calabash is published under the GNU General Public License Version 2.0.

Thursday, June 25, 2009 (Permalink)

Oracle has released the final version of Java Specification Request (JSR) 225, XQuery API for Java™ (XQJ). There's also a reference implementation and technical compatibility kit. As JDBC is to SQL, XQJ is to XQuery.

The following sample Java code is meant to convey a first look and feel of the style and usage of the XQJ API. It is by no means exhaustive or complete; e.g., no error handling is shown and it is assumed that xqds is an XQDataSource object representing a given data source. It illustrates the basic steps that an application would perform to execute an XQuery expression at a given XQuery implementation.

// establish a connection to the XQuery engine 
XQConnection conn = xqds.getConnection(); 
 
// create an expression object that is later used 
// to execute an XQuery expression 
XQExpression expr = conn.createExpression(); 
 
// the XQuery expression to be executed 
String es = "for $n in fn:doc('catalog.xml')//item " + 
  "return fn:data($n/name)"; 
 
// execute the XQuery expression 
XQResultSequence result = expr.executeQuery(es); 
 
// process the result (sequence) iteratively  
while (result.next()) {  
  // retrieve the current item of the sequence as a String 
  String str  = result.getAtomicValue(); 
  System.out.println("Product name: " + str); 
} 
 
// free all resources allocated for the result 
result.close(); 
 
// free all resources allocated for the expression 
expr.close(); 
 
// free all resources allocated for the connection 
conn.close(); 

On a side note, kudos to the spec authors for putting this simple example in the spec right up front. Something like this would help a lot of other JSRs.

Wednesday, June 24, 2009 (Permalink)

The W3C Voice Browser Working Group has published the second working draft of the VoiceXML 3.0 specification. VoiceXML is used to describe those annoying call trees you hear when calling most major companies. "Press 1 if you want to wait on hold for 20 minutes and then be hung up on; press 2 if you want to wait indefinitely; press 3 if you'd rather we just hung up on you now."

How does one build a successor to VoiceXML 2.0/2.1? Requests for improvements to VoiceXML fell into two main categories: extensibility and new functionality.

To accommodate both, the Voice Browser Working Group

  1. Developed the detailed semantic descriptions of VoiceXML functionality that versions 2.0 and 2.1 lacked. The semantic descriptions clarify the meaning of the VoiceXML 2.0 and 2.1 functionalities and how they relate to each other. The semantic descriptions are represented in this document as English text, UML state chart visual diagrams [ref] and/or textual SCXML representations [ref]. Figure 1 illusrates the VoiceXML 3.0 framework which contains some abstract UML state chart visual diagrams representing some existing VoiceXML functionality.
  2. Described the detailed semantics for new functionality. New functions include, for example, speaker identification and verification, video capture and replay, and a more powerful prompt queue. These semantic descriptions for these new functions are also represented in this document as English text, UML state chart visual diagrams [ref] and/or textual SCXML representations [ref]. Figure 2 contains some abstract UML state chart visual diagrams representing new functionality.
  3. Organized the functionality into modules, with each module implementing different functions. One reason for the introduction of a more rigorous semantic definition is that it allows us to assign semantics to individual modules. This makes it easier to understand what happens when modules are combined or new ones are defined. In contrast, VoiceXML 2.0 and 2.1 had a single global semantic definition (the FIA), which made it difficult to understand what would happen if certain elements were removed from the language or if new ones were added. Figure 3 contains some modules, each containing VoiceXML 3.0 functionality Vendors may extend VoiceXML functionality by creating additional modules with additional functionality not described in this document. For example, a vendor might create a new GPS input module. Application developers should be cautious about using vendor-specific modules because the resulting application may not be portable.
  4. Restructured and revisedDefined the syntax of each module to incorporate any new functionality. Application developers use the syntax of each module as an API to invoke the module’s functions. Figure 4 illustrates some simplified syntax associated with modules.
  5. Introduced the concept of a profile (language) which incorporates the syntax of several modules. Figure 5 illustrates two profiles. For example, a VoiceXML 2.1 profile incorporates the syntax of most of the modules corresponding to the VoiceXML 2.1 functionality which will support most existing VoiceXML 2.1 applications. Thus most VoiceXML 2.1 applications can be easily ported to VoiceXML 3.0 using the VoiceXML 2.1 profile. Another profile omits the VoiceXML 2.1 Form Interpretation Algorithm (FIA). This profile may be used by developers who want to define their one own flow control rather than using the FIA. Profiles enable platform developers to select just the functionality that application developers need for a platform or class of application. Multiple profiles enables developers to use just the profile (language) needed for a platform or class of applications. For example, a lean profile for portable devices, or a full-function profile for servers-based applications using all of the new functionality of VoiceXML 3.0.

One of the benefits of detailed semantic descriptions is improving portability within VoiceXML. Two vendors may implement the same functionality differently; however, the functionality must be consistent with the semantic meanings described in this document so that application authors are isolated from the different implementations. This increases portable among platforms that support the same syntax. Note that there are many other factors that effect to the portability that is outside the scope of this document (e.g. speech recognition capabilities, telephony).

Tuesday, June 23, 2009 (Permalink)

Wolfgang Meier has released eXist 1.2.6:

an open source database management system entirely built on XML technology. It stores XML data according to the XML data model and features efficient, index-based XQuery processing.

eXist-db supports many (web) technology standards making it an excellent application platform:

eXist-db is highly compliant with the XQuery standard (current XQTS score is 99.4%). The query engine is highly extensible and features a large collection of XQuery Function Modules.

1.2.6 fixes several scary database corruption issues.

Monday, June 22, 2009 (Permalink)

The W3C XQuery working group has posted a new candidate recommendation of XQuery Update Facility. XQuery as it currently exists is basically just SELECT in SQL terms. XQuery Update adds INSERT, UPDATE, and DELETE. More specifically it is:

  • upd:mergeUpdates
  • upd:revalidate
  • upd:applyUpdates
  • upd:insertBefore
  • upd:insertAfter
  • upd:insertInto
  • upd:insertIntoAsFirst
  • upd:insertIntoAsLast
  • upd:insertAttributes
  • upd:delete
  • upd:replaceNode
  • upd:replaceValue
  • upd:replaceElementContent
  • upd:rename
  • upd:removeType
  • upd:setToUntyped

The following features are considered to be at risk:

They may be removed if implementations of them do not exist at the end of the Candidate Recommendation period.

Comments are due by August 31.

Friday, June 19, 2009 (Permalink)

Could it really be 7 years? Yes, it could. back from the dead after 7 years as a last call working draft, the W3C CSS Working Group has posted a new working draft of CSS Fonts Module Level 3. Described properties include:

  • font-family
  • font-weight
  • font-stretch
  • font-style
  • font-variant
  • font-size
  • font-size-adjust
  • font
  • @font-face

"This draft consolidates material previously divided between the CSS3 Fonts and CSS3 Web Fonts modules."

Thursday, June 18, 2009 (Permalink)

The first release candidate of Firefox 3.5 is out; though you'll need to get it by auto-updating 3.5 beta 4. It's ugly as sin, breaks the back button, breaks the scrollbars, and still hasn't fixed this AppleScript bug. To add insult to injury the feedback page uses a pointless, illegible CAPTCHA:

No one can read this

I think I'm giving up on Firefox. I just need to get del.icio.us integrated into Safari and I'll be done.

They've also released Firefox 3.0.11 to fix a security vulnerability.

Wednesday, June 17, 2009 (Permalink)

Michael Kay has released version 9.1.0.7 of Saxon, his XSLT 2.0 and XQuery processor for Java and .NET. This is a bug fix release.

Saxon is published in two versions for both of which Java 1.4 or later (or .NET) is required. Saxon 9.1B is an open source product published under the Mozilla Public License 1.0 that "implements the 'basic' conformance level for XSLT 2.0 and XQuery." Saxon 9.1 SA is £300.00 payware. According to Kay,

The most obvious difference between Saxon-SA and Saxon-B is that Saxon-SA is schema-aware: it allows stylesheets and queries to import an XML Schema, to validate input and output trees against a schema, and to select elements and attributes based on their schema-defined type. Saxon-SA also incorporates a free-standing XML Schema validator.>

In addition Saxon-SA incorporates some advanced extensions and optimizations not available in the Saxon-B product:

  • Saxon-SA is able to compile XQuery code directly into Java classes.

  • Saxon-SA has an advanced optimizer which recognizes joins in XPath expressions, XQuery FLOWR expressions, and in XSLT templates (nested xsl:for-each instructions). Whereas Saxon-B always implements these as nested loops, Saxon-SA uses a variety of strategies including indexes and hash joins. This can give dramatic improvements in execution time for large documents: some of the queries in the XMark benchmark improve by a factor of 300 (from 16 seconds to 45 milliseconds) to process a 10Mbyte source file.

  • Saxon-SA has a facility to process large documents in streaming mode. This enables documents to be handled that are too large to hold in memory (it has been tested up to 20Gb).

  • Additional extensions available in Saxon-SA include a try/catch capability for catching dynamic errors, improved error diagnostics, support for higher-order functions, and additional facilities in XQuery including support for grouping, advanced regular expression analysis, and formatting of dates and numbers.


Older News