[xsl] XSLT for Mashups

Subject: [xsl] XSLT for Mashups
From: "Alex Clark" <alex@xxxxxxxxxxx>
Date: Tue, 2 Mar 2010 18:32:55 -0800
Hello all,

I am the CTO of Bit Stew Systems and we offer a mashup technology that is
loosely based on extending XSLT, and leverages the capabilities of XPath 2.0
across any data source.  We've created a mashup language that we call Mix,
which has similar syntax and constructs to XSLT, and combined it with
powerful capabilities for discovering and using the vast amounts of
information on the Internet and the Enterprise.  This approach has worked
very well for us because developers that are already familiar with XSLT and
XPath can create mashup solutions right away.  

Mashups are becoming an increasingly important part of the technology
industry for data integration, transformation, and analytics.  The Open
Mashup Alliance is in the early stages of establishing a standard XML-based
mashup language called EMML.  However, it seems their approach reinvents the
wheel.  They have constructs such as if, for-each, etc. that are already
defined in XSLT but they've changed them to be just different enough to add
confusion.

It seems to me that a natural progression is to extend XSLT from generally
one input (XML) and one output (XML, HTML, etc) to include numerous input
sources of varying types to numerous output targets.  This type of approach
would allow the XSLT language (XSLT 3.0?) to be used as an industry standard
language for enterprise mashup solutions.

I believe it would make more sense to extend XSLT and add expressions that
support building mashups rather than to define a new language with similar
constructs.  This would be a better standard for the technology community
because of the familiarity many have with XSLT and the availability of
processors in the market.  Plus, learning yet another language is a burden
on developers-especially when a perfectly suitable one already exists.

I've included a simple example that illustrates some of the constructs we've
added to XSLT that enables the language to be used for Mashups.  The example
below fetches data from two sources (a REST service and a relational
database) and returns an XML document.   

I'd be very interested to hear everyone's thoughts about leveraging XSLT to
create an industry standard mashup language.  More examples can be found:
http://www.bitstew.com/docs/mix/stl/index.html

Thank you all for your thoughts,

Alex Clark

<!-- Begin contrived example -->
<mix:template xmlns:mix="http://bitstew.com/schemas/1.0/xml-template";>
    
    <!-- Define our JDBC Source -->
    <mix:include href="settings.xml"/>
    
    <MatchingCustomers>
        
        <!-- Get a list of customers from a partner's web service (REST
service that returns XML). -->
        <mix:xml-source name="theirCustomers"
url="http://bitstew.com/example/getCustomers?partnerID={$ourID}"/>
        
        <!-- Get the list of customers that have our parnter's ID. -->
        <mix:query name="ourCustomers" source="customerDB">select * from
customer where partner_id = {$partnerID}</mix:query> 
        
        <!-- For each of our customers -->
        <mix:for-each select="$ourCustomers">
        
            <!-- If the customer ID matches the partner's customer ID, then
return the match. -->
            <mix:if test="./partner_id = {$partnerID}">
                <Customer id="{./id}">
                    <Name><mix:value-of select="./name"/></Name>
                </Customer>
            </mix:if>
            
        </mix:for-each>
                
    </MatchingCustomers>
    
</mix:template>
<!-- End contrived example -->

Current Thread