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
© Copyright 2026 Paperzz