Subject: Re: [xsl] [ XSLT ] Dynamically Transform xml pages to database queries From: Jyotsna B <jbendapu@xxxxxxxxx> Date: Sat, 20 May 2006 14:48:41 -0700 (PDT) |
Thanks for the response . The languagae I am using is JAVA. Solution suggested works fine for getting values replaced in query from XML file But in my project the condition is NOT to hardcode even the first part of query .Query need to be generated "dynamically" from XML 'elements' and 'attribute' names . Because the XML files I receive are not same pattern They always are different from eachother with element and attribute strcuture . The database table name amd column names are NOT known ahead of time to mention in template <xsl:template >.I need look at XML file elements and attribute names Questions :- How to get this First part of the Query from XSLT with unknown element & attribute info of XML files to map to XSLT template definition ? Please suggest if below 2 points are possible and best way to achieve this ? --------- insert into server(not always same tablename "server" - its diff name for each xml file) ( 'oracleAppVersion'not always "oracleAppVersion" - its diff attribute depending on element for each xml file)..etc 1)Element Name in XML (0 - Unbounded limit becomes -> Table Name in output query (CANNOT hardcode table name a head of time in XSLT) 2)Attribute Name under above element becomes Column Name in output query dynamically (CANNOT hardcode column names a head of time in XSLT) I can give me more explaination if needed. Appreciate your time Thanks Jyotsna --- Raffaele Sena <raff@xxxxxxxxxxxx> wrote: > 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 > === message truncated === __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] [ XSLT ] Dynamically Tran, Michael Kay | Thread | Re: [xsl] [ XSLT ] Dynamically Tran, Raffaele Sena |
RE: [xsl] Escaping of xsl:text in x, Michael Kay | Date | RE: [xsl] Escaping of xsl:text in x, Florent Georges |
Month |