xsl-list
[Top] [All Lists]

Re: [xsl] [ XSLT ] Dynamically Transform xml pages to database queries

2006-05-19 21:10:29
Jyotsna,

you don't mention which language you want to use to write write your application. I am assuming is Java but the answer should apply to any language for which you have an XSLT engine.

1) how to read each file from a folder ?
Use the filesystem API. XSLT cannot help you with this.
Once you have the file name you can read your document into a DOM or even better use SAX to stream it to the XSLT processor.

2) how to write a template that generate text:
<xsl:stylesheet...>
<xsl:output method="text"/>
<xsl:template match="/config/server">
 insert into server (
  'oracleAppVersion',java-version,java-vendor,
  java-vm-version,java-vm-vendor,java-vm-name,os-arch,os-name,os-version
 ) values (
  <xsl:value-of select="company/server-version"/>,
  <xsl:value-of select="java/version"/>,
  <xsl:value-of select="java/vendor"/>,
  <xsl:value-of select="java/vm/version"/>,
  <xsl:value-of select="java/vm/vendor"/>,
  <xsl:value-of select="java/vm/name"/>,
  <xsl:value-of select="os/arch"/>,
  <xsl:value-of select="os/name"/>,
  <xsl:value-of select="os/version"/>
 );
</xsl:template>
</xsl:stylesheet>

Note that I left out the namespace (I am lazy) so if you try this as-is your output will be empty.

I suggest you start with a command line XSLT processor (or use XMLSpy) and a static xml file. When you get that to work you can think about writing a program that runs the conversion.

Hope this helps,

-- Raffaele



Jyotsna B wrote:
Hi All,
I am NEWbie to XSLT and in process of learning.Any
code suggestions or direction is greatly appreciated
I have a list of XML files at certain location (ex:
D:\xmlfilesloc )
I need to write a program which checks the folder
automatically and if files exists -reads each xml file
at a time and transforms the xml file (using XSLT ) to
bunch of customized oracle database queries .
Questions :
1)How to read each xml file from a specified location
dynamically ?
2)How to use XSLT to transform a xml file
dynamically/automatically  to bunch of customized
database queries (elements to table name mapping ;
attributes to columns names ;...etc )? ------------------------------------------- Ex Output I am trying to acheive is queries :- -------------------------------------------
insert into server
('oracleAppVersion',java-version,java-vendor,
java-vm-version,java-vm-vendor,java-vm-name,os-arch,os-name,os-version
)
values('1.0','1.1.9.0','vendorcl','1.2','vendvmor','virtual','a','bb','ccc')
;

I tried using XMLSpy feature "Create DB structure from XML Schema" but its not helping to customize the output ..so I
want to code myself the XSLT transformation to get
desired output queries -------------------------------
Example of Input XML file :-
-----------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2006 sp1 U
(http://www.altova.com)-->
<config xmlns="http://xxx.y.com/c/";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation=http://xxx.y.com/c/ id="String">
<domain-name>oracle appserver</domain-name>
<timestamp>2001-12-17T09:30:47.0Z</timestamp>
<server is-admin-server="false" name="String">
<company>
<server-version>1.0</server-version>
</company>
<java>
<version>1.1.9.0</version>
<vendor>vendorcl</vendor>
<vm>
<version>1.2</version>
<vendor>vendvmor</vendor>
<name>virtual</name>
</vm>
</java>
<os>
<arch>a</arch>
<name>bb</name>
<version>ccc</version>
</os>
</server>
</config>
---------------------------
configdetail.xsd - XSD Schema that it macthes
------------
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
xmlns="http://y.com"; xmlns:inv="http://y.com/c";
targetNamespace="http://y.com/c";
elementFormDefault="qualified"
attributeFormDefault="unqualified">
 <xs:import namespace="http://y.com/c";
schemaLocation="../../configmain.xsd"/>
<xs:complexType name="configdetailtype">
<xs:complexContent>
<xs:extension base="cfg:ConfigmainType">
<xs:sequence>
<xs:element name="server" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
 <xs:element name="oracleAppVersion"
type="xs:string"/>
 <xs:element name="java">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="version" type="xs:string"/>
    <xs:element name="vendor" type="xs:string"/>
    <xs:element name="vm">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="version" type="xs:string"/>
       <xs:element name="vendor" type="xs:string"/>
       <xs:element name="name" type="xs:string"/>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="os">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="arch" type="xs:string"/>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="version" type="xs:string"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string"
use="required"/>
<xs:attribute name="adminServer" type="xs:boolean"
use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>

I can give me more explaination if needed.
Thanks a lot for your response
Jyotsna


__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



!DSPAM:446e5ab9193171715718467!


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--