INNOV-12: Transforming Non-XML Documents with

INNOV-12:
Transforming Non-XML
Documents with XML
Tools
Tony Lavinio
Principal Software Architect, Stylus Studio
Let’s use Stylus Studio!
It’s what all the cool people are using


eWEEK 5th Annual Excellence Awards Finalist
Integrated with:
–
–
–
–
–
–
Saxon 6.5.3 and 8.4 from Saxonica
Xalan-J from the Apache Xerces project
MSXML 3 and 4
System.XML XSLT from .Net
Sleepycat Berkeley DB XML
Mark Logic XDMS
2 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Build on Standards
Everything-but-the-kitchen sink









XSLT 1.0 and 2.0
XQuery
XPath 1.0 and 2.0
DTD
W3C XML Schema
SQL/XML
JDBC and ODBC
SOAP, WSDL, UDDI
OASIS Catalogs
3 © 2005 Progress Software Corporation









Java™
JSP
JAXP (formerly TrAX)
JAXB
HTTP[S]
FTP
[X]HTML
EDIFACT/CEFACT
X12
INNOV-12 Transforming Non-XML Documents with XML Tools
XML or Not XML, Who Cares?
Stylus Studio can treat non-XML data as XML

XQuery and XSLT only act on XML
– CSV, EDI, etc. are not XML
– What can we do?


Batch convert? — No!
On-the-fly conversions
– Convert-to-XML feature
– Native adapters
4 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Agenda





Convert-to-XML feature
The Architecture
XQuery and XSLT on non-XML
Deploying
Running
5 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Convert-to-XML User Interface
Maps flat input data to XML output data
Properties
Pane
XML
Output
Preview
6 © 2005 Progress Software Corporation
Schema
Pane
Input Canvas
INNOV-12 Transforming Non-XML Documents with XML Tools
Convert-to-XML Features

Maps text or binary formats
– CSV, TSV, EDI — even xBase





Gobs of encodings
Fixed or variable-length fields
Variety of data types supported
Regular expression matching
Streaming engine supports large input files
7 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Demonstration of Convert-to-XML UI


Let’s build a CSV converter!
Let’s build an EDI converter!
(Sample of X12 EDI data)
<Demonstration/>
8 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Agenda





Convert-to-XML feature
The Architecture
XQuery and XSLT on non-XML
Deploying
Running
9 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Extensible File System Support
Lets us treat any type of resource as a URI

Traditional file systems
– file:, ftp: and http[s]: (WebDAV) schemes

Web Service Call Composer
– wscc: scheme

SQL/XML for Relational Databases
– db: scheme

Sleepycat Berkeley DB XML
– dbxml: scheme
10 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
The Adapter URL Syntax
Two forms:

Convert-to-XML:
adapter:map.conv?url

Native XML Adapters:
adapter:name:[option=value:…]?url
11 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Implementation
What’s under the hood

Convert-to-XML has two parts
– User interface
– Runtime engine


The runtime engine is just one of many
native converters that can be plugged into
the Adapter File System.
Designed as a streaming engine for low
footprint
12 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Adapter File System
It plugs in – and supports its own plug-ins
file:
*.d
*.txt
*.csv
*.html
*.xslt
*.???
db:
java:
user:
custom file
system driver
adapter:
.d
13 © 2005 Progress Software Corporation
Stylus Studio
http: and https: (WebDAV)
dBase CSV CtoXML
INNOV-12 Transforming Non-XML Documents with XML Tools
Agenda





Convert-to-XML feature
The Architecture
XQuery and XSLT on non-XML
Deploying
Running
14 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
A Simple Confluence of Ideas
1+1+1>3
+ If we combine the idea that adapters
convert non-XML to XML,
+ With the idea that adapters can be
addressed with URLs,
+ With the idea that XQuery and XSLT work
on URL-addressable XML,
= We have an integration tool
15 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Design XSLT or XQuery
Take the non-XML and manipulate it as XML



Build an XSLT transformation
Input is EDI
Desired output is CSV
<Demonstration/>
16 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Agenda





Convert-to-XML feature
The Architecture
XQuery and XSLT on non-XML
Deploying
Running
17 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Assembling the Building Blocks
Here’s what we’ve done:
1. Used the Convert-to-XML map we built
earlier for input
2. Used a CSV file via adapter as the target
3. Built XSLT from and to representative
non-XML documents
And here’s what we’re about to do:
1. Build a Java program to call XSLT
2. Call the Java program from the 4GL
18 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
The Runtime



We use Saxon 6.5.3 or 8.4, or Xalan-J as
the XSLT engine, or Saxon 8.4 as the
XQuery engine
The Stylus Studio runtime adds the
missing pieces, such as our URL resolver
and adapter libraries
We’ll even generate the code for you
19 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Calling Our Transform
This is just plain standard JAXP code
// This is the “before” version…
String xslURL = "file:///c:/temp/EXCHANGE.xsl";
String xmlURL = "file:///c:/temp/EXCHANGE.xml";
Source xsl = new StreamSource(new URL(xslURL).openStream(), xslURL);
Source xml = new StreamSource(new URL(xmlURL).openStream(), xmlURL);
Result out = new StreamResult(System.out);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer t = factory.newTransformer(xsl);
t.transform(xml, out);
20 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Same, But with Stylus URL Resolver
Add two property settings, and use the new factory
System.setProperty(STYLUS_ROOTDIR, ".");
System.setProperty(STYLUS_APPDATA, ".");
String xslURL = "file:///c:/temp/EXCHANGE.xsl";
String xmlURL = "adapter:EXCHANGE.conv?file:///c:/temp/EXCHANGE.edi";
Source xsl = StylusFileFactory.getFactory().resolve(xslURL, null);
Source xml = StylusFileFactory.getFactory().resolve(xmlURL, null);
Result out = new StreamResult(System.out);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer t = factory.newTransformer(xsl);
t.transform(xml, out);
21 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
URI Resolvers are for Writing Too
Since adapters can go
either way or go both ways,
so can the URI resolver.
Non-XML to XML
XML to Non-XML
Both Ways
22 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Agenda





Convert-to-XML feature
The Architecture
XQuery and XSLT on non-XML
Deploying
Running
23 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Finishing up…




Compile the .java
Move things into the proper locations
Set up the 4GL
Go for it!
24 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Let’s See It All Work Together
EDI  XML  XSLT  CSV  4GL
=
+
<Demonstration/>
25 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Resources




Stylus Studio Web Site
http://www.stylusstudio.com
Stylus Scoop Newsletter
http://www.stylusstudio.com/scoop
The W3C XSLT and XPath Standards
http://www.w3.org/Style/XSL/
The W3C XQuery Standard
http://www.w3.org/XML/Query#specs
26 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
In Summary



Stylus Studio lets you treat
non-XML data sources as
XML
Nothing beats XSLT/XQuery
for transforming XML
The XSLT/XQuery Mappers
make standards-based
integration simpler
27 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Questions?
28 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
Thank you for
your time!
29 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools
30 © 2005 Progress Software Corporation
INNOV-12 Transforming Non-XML Documents with XML Tools