Title: Building Oracle8i XML Applications with XML, XSLT, and XSQL Pages
1Building Oracle8i XML Applications with XML,
XSLT, and XSQL Pages
- Steve Muench
- Lead XML Evangelist
- Oracle Corporation
2Oracle XML Technologies
- XML-Enabled Object Views
- Virtual XML Structures on Top of Tables
- XML BFILE, CLOB and Column Search
- Search Docs Doc Fragments forNested Elements,
Attributes SQL - Core XML Components (In Out of DB)
- XML Parser and XSLT Processors
- XML SQL Utility (SQL lt-gtXML )
- XSQL Pages and XSQL Servlet
- XML Class Generators
- XML Schema Support Preview Imminent
- Tools
- Transviewer Beans
3What are XSQL Pages?
- Server-Side XML Templates
- You already know how to create them
- Declaratively Assemble XML"Datapages"
- Database Queries Stored Procedures
- Local or Over-the-Web XML Resources
- Transform XML Datapages for Delivery
- Makes SQL, XML, and XSLT Dead Easy
- Leverages Oracle's XML Components
- With Any Database Any Servlet Engine
4Serving a List of Available Flights
- lt?xml version"1.0"?gt
- ltxsqlquery connection"db" xmlnsxsql"urnoracle
-xsql"gt - SELECT Carrier,
- FlightNumber,
- Origin,
- TO_CHAR(ExpectedTime,'HH24MI') AS Due
- FROM FlightSchedule
- WHERE TRUNC(ExpectedTime) TRUNC(SYSDATE)
- AND Arrived 'N'
- AND Destination '_at_City'
- ORDER BY ExpectedTime
- lt/xsqlquerygt
5AvailableFlights.xsql?CityJFK
- lt?xml version"1.0"?gt
- ltxsqlquery connection"db" xmlnsxsql"urnoracle
-xsql"gt - SELECT Carrier,
- FlightNumber,
- Origin,
- TO_CHAR(ExpectedTime,'HH24MI') AS Due
- FROM FlightSchedule
- WHERE TRUNC(ExpectedTime) TRUNC(SYSDATE)
- AND Arrived 'N'
- AND Destination '_at_City'
- ORDER BY ExpectedTime
- lt/xsqlquerygt
6AvailableFlights.xsql?CityJFK
HTTP Web Request
Web Server
Servlet Runner
XSQLServlet
AvailableFlights.xsql
7Serving a Specific DTD Strucure
8Take an Example of Output
- ltflight-listgt
-
- ltflight airline"BA" number"207"gt
- ltarrivesgt1120lt/arrivesgt
- lt/flightgt
-
- lt/flight-listgt
9Turn an Example Into Stylesheet
- ltflight-list xmlnsxsl""xslversion"1.0" gt
- ltxslfor-each select"ROWSET/ROW"gt
- ltflight airline"CARRIER"
number"FLIGHTNUMBER"gt - ltarrivesgtltxslvalue-of select"DUE"/gtlt/arriv
esgt - lt/flightgt
- lt/xslfor-eachgt
- lt/flight-listgt
10Associate Stylesheet with XSQL
- ltflight-list xmlnsxsl""xslversion"1.0" gt
- ltxslfor-each select"ROWSET/ROW"gt
- ltflight airline"CARRIER"
number"FLIGHTNUMBER"gt - ltarrivesgtltxslvalue-of select"DUE"/gtlt/arriv
esgt - lt/flightgt
- lt/xslfor-eachgt
- lt/flight-listgt
lt?xml version"1.0"?gt lt?xml-stylesheet
type"text/xsl" href"flightlist.xsl"?gt ltxsqlquer
y connection"db" xmlnsxsql"urnoracle-xsql"gt
SELECT Carrier, FlightNumber,
11"Morphs" the Raw Datapage
- ltflight-list xmlnsxsl""xslversion"1.0" gt
- ltxslfor-each select"ROWSET/ROW"gt
- ltflight airline"CARRIER"
number"FLIGHTNUMBER"gt - ltarrivesgtltxslvalue-of select"DUE"/gtlt/arriv
esgt - lt/flightgt
- lt/xslfor-eachgt
- lt/flight-listgt
lt?xml version"1.0"?gt lt?xml-stylesheet
type"text/xsl" href"flightlist.xsl"?gt ltxsqlquer
y connection"db" xmlnsxsql"urnoracle-xsql"gt
SELECT Carrier, FlightNumber,
12Into Valid, Dynamic XML
- ltflight-list xmlnsxsl""xslversion"1.0" gt
- ltxslfor-each select"ROWSET/ROW"gt
- ltflight airline"CARRIER"
number"FLIGHTNUMBER"gt - ltarrivesgtltxslvalue-of select"DUE"/gtlt/arriv
esgt - lt/flightgt
- lt/xslfor-eachgt
- lt/flight-listgt
lt?xml version"1.0"?gt lt?xml-stylesheet
type"text/xsl" href"flightlist.xsl"?gt ltxsqlquer
y connection"db" xmlnsxsql"urnoracle-xsql"gt
SELECT Carrier, FlightNumber,
13Use a Different Stylesheet
- lttable border"0"gtlttrgt ltthgtFlightlt/thgt
ltthgtArriveslt/thgtlt/trgtltxslfor-each
select"ROWSET/ROW"gt lttrgtlttdgtlttablegtlttrgt
lttdgtltimg align"absmiddle" src"images/CARRIER.g
if"/gtlt/tdgt lttd width"180"gt ltxslvalue-of
select"CARRIER"/gt ltxsltextgt lt/xsltextgt
ltxslvalue-of select"FLIGHTNUMBER"/gt
lt/tdgtlt/trgtlt/tablegt lt/tdgt lttd align"center"gt
ltxslvalue-of select"DUE"/gt lt/tdgt
lt/trgtlt/xslfor-eachgt - lt/tablegt
14Same Datapage, New Look!
- lttable border"0"gtlttrgt ltthgtFlightlt/thgt
ltthgtArriveslt/thgtlt/trgtltxslfor-each
select"ROWSET/ROW"gt lttrgtlttdgtlttablegtlttrgt
lttdgtltimg align"absmiddle" src"images/CARRIER.g
if"/gtlt/tdgt lttd width"180"gt ltxslvalue-of
select"CARRIER"/gt ltxsltextgt lt/xsltextgt
ltxslvalue-of select"FLIGHTNUMBER"/gt
lt/tdgtlt/trgtlt/tablegt lt/tdgt lttd align"center"gt
ltxslvalue-of select"DUE"/gt lt/tdgt
lt/trgtlt/xslfor-eachgt - lt/tablegt
15Assemble XML Data Transform
XSQL Page XSL Stylesheet
Site Categories
Web SiteContent
News Stories
Sidebar Items
Site Stylesheet
16Server or Client XSLT
ClientXSLT
Web SiteContent
XML
HTML
17Deliver HTML to Mozilla
18Deliver HTML to Mozilla
19Deliver XML to IE5 Client XSLT
20Deliver XML to IE5 Client XSLT
21User-Agent Specific Transforms
- XSLT Stylehseet Based on User-Agent
- Transform in the Server or the Client
lt?xml version"1.0"?gtlt?xml-stylesheet
type"text/xsl" media"MSIE 5.0"
href"flyHTML.xsl"?gtlt?xml-stylesheet
type"text/xsl" media"Motorola Voice"
href"flyVox.xsl"?gtlt?xml-stylesheet
type"text/xsl" media"UP.Browser"
href"flyWML.xsl"?gtlt?xml-stylesheet
type"text/xsl" media"HandHTTP"
href"flyPalmPilot.xsl"?gtlt?xml-stylesheet
type"text/xsl" href"flyHTMLdefault.xsl"?gtltflyFi
nderResult xmlnsxsql"urnoracle-xsql"
connection"fly" lang"english"gtltxsqlquery
tag-case"upper"gt SELECT carrier, code,
destination, expected FROM ALL_FIGHTS
WHERE lt/xsqlquerygtlt/flyFinderResultgt
22The Power of a Simple Model
Web XML
DatabaseXML
SVG
WML
xml
HTML
VoxML
xml
23One Engine, Multiple Clients
XSQLCommandLine
XSQLRequest
24Built-in Handlers
- Object/Relational Data
- SQL Queries, Stored Procedures Functions
- Including XML
- From Any URL or Another XSQL Page
- Inserting Data
- Posted XML Documents HTML Forms
- Working With Parameters
- Page, URL, Session, Cookie Stylesheet
Parameters
25Pluggable Handler Architecture
- Action Handlers
- Carry Out User-Defined Actions
- Produce XML Content for Your Datapage
- Handler Implementations Can Access
- HTTP Request Response
- JDBC Connection
- Aligned with XSL Extension Elements
- By XSQL 1.0, XSQL and XSLT Extension Elements
will be Unified
26Works with Any Database
- Oracle 8i 8.1.5, 8.1.6
- Oracle 8i Lite
- JDBC/ODBC Driver
- MySQL
- DB2
- Informix
- Sybase
- Others
27Works with Any Servlet Engine
- Allaire JRun 2.3.3
- Apache 1.3.9 JServ 1.0 / 1.1 / Tomcat 3.1
- Caucho Resin 1.1
- JSWDK 1.0.1 Web Server
- NewAtlanta ServletExec 2.2 for IIS/PWS 4.0
- Oracle Application Server 4.0.8.1
- Oracle8i Lite Web-to-Go Server
- Oracle8i 8.1.7 Beta "Aurora" Servlet Engine
- Tomcat 3.1 Milestone 1
28What Is Oracle-Specific?
- Object/Relational Features
- Object Views Give Logical, QueryableXML Views of
Multiple Database Tables - Nested CURSOR() Queries for On-the-FlyTree-Data
Shaping. - Intermedia XML Doc Frag Searching
- Spielberg WITHIN director WITHIN movie
- XML Insert
- Presently Restricted to Oracle JDBC Driver
29Oracle 8i Release 3 (8.1.7)
- Servlet 2.2 Engine Inside the Database
- JSP Support
- XSQL Pages
- Platform forVery Scalable"XML Over HTTP"Data
Services
XSQL
JSP
Yours
"Aurora"Servlet Engine
JServer VM
30OTN XML Support Forum
31http//technet.oracle.com/tech/xml
32http//technet.oracle.com/tech/xml
33http//technet.oracle.com/tech/xml
34XSQL Releases
- Release 0.8 June 18th, 1999
- Release 0.9.5 August 25th, 1999
- Release 0.9.6.2 October 14th, 1999
- Release 0.9.8.6 January 1st, 2000
- Release 0.9.9.1 March 2000
- Release 1.0 April 2000
35Give Them All a Try
- Oracle XSQL Pages
- ltxsqlquerygt SQL lt/xsqlquerygt
- Apache Cocoon SQL Processor
- ltquerygt SQL lt/querygt
- Microsoft SQL Server XML Tech Preview
- ltsqlquerygt SQL lt/sqlquerygt
36And Send Us Your Feedback
- http//technet.oracle.com/tech/xml
Stay Tuned to Oracle Technet for Our XML Schema
Tech Previewin the next 1-2 weeks