kennysflau
asked on
xslt generator
Is there any xslt generator help to generate an xslt from an xml raw data file + html output?
ASKER
<env:Envelope
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns0="http://oracle.e1.bssv.JPF43111/types/">
<env:Body>
<ans1:getF4311ResponseElem ent
xmlns:ans1="http://oracle.e1.bssv.JPF43111/"
xsi:type="ns0:F4311_List">
<ns0:e1MessageList/>
<ns0:result
xsi:type="ns0:F4311_Output ">
<ns0:companyKeyOrderNo>000 01</ns0:co mpanyKeyOr derNo>
<ns0:orderType>OH</ns0:ord erType>
<ns0:documentOrderInvoiceE >6255</ns0 :documentO rderInvoic eE>
<ns0:lineNumber>2.000</ns0 :lineNumbe r>
<ns0:statusCodeLast>225</n s0:statusC odeLast>
<ns0:costCenter> 19999</ns0:costCenter>
<ns0:addressNumber>32773</ ns0:addres sNumber>
<ns0:itemNumberRelatedKit/ >
<ns0:descriptionLine1>Stat ionery </ns0:descriptionLine1>
<ns0:orderSuffix>000</ns0: orderSuffi x>
<ns0:identifier2ndItem>392 -00 </ns0:identifier2ndItem>
</ns0:result>
<ns0:result
xsi:type="ns0:F4311_Output ">
<ns0:companyKeyOrderNo>000 01</ns0:co mpanyKeyOr derNo>
<ns0:orderType>OH</ns0:ord erType>
<ns0:documentOrderInvoiceE >6255</ns0 :documentO rderInvoic eE>
<ns0:lineNumber>1.000</ns0 :lineNumbe r>
<ns0:statusCodeLast>420</n s0:statusC odeLast>
<ns0:costCenter> 19999</ns0:costCenter>
<ns0:addressNumber>32773</ ns0:addres sNumber>
<ns0:itemNumberRelatedKit/ >
<ns0:descriptionLine1>Stat ionery </ns0:descriptionLine1>
<ns0:orderSuffix>000</ns0: orderSuffi x>
<ns0:identifier2ndItem>392 -00 </ns0:identifier2ndItem>
</ns0:result>
<ns0:result
xsi:type="ns0:F4311_Output ">
<ns0:companyKeyOrderNo>000 01</ns0:co mpanyKeyOr derNo>
<ns0:orderType>OH</ns0:ord erType>
<ns0:documentOrderInvoiceE >6244</ns0 :documentO rderInvoic eE>
<ns0:lineNumber>1.000</ns0 :lineNumbe r>
<ns0:statusCodeLast>280</n s0:statusC odeLast>
<ns0:costCenter> 19999</ns0:costCenter>
<ns0:addressNumber>32324</ ns0:addres sNumber>
<ns0:itemNumberRelatedKit/ >
<ns0:descriptionLine1>Prin ting </ns0:descriptionLine1>
<ns0:orderSuffix>000</ns0: orderSuffi x>
<ns0:identifier2ndItem>390 -00 </ns0:identifier2ndItem>
</ns0:result>
</ans1:getF4311ResponseEle ment>
</env:Body>
</env:Envelope>
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns0="http://oracle.e1.bssv.JPF43111/types/">
<env:Body>
<ans1:getF4311ResponseElem
xmlns:ans1="http://oracle.e1.bssv.JPF43111/"
xsi:type="ns0:F4311_List">
<ns0:e1MessageList/>
<ns0:result
xsi:type="ns0:F4311_Output
<ns0:companyKeyOrderNo>000
<ns0:orderType>OH</ns0:ord
<ns0:documentOrderInvoiceE
<ns0:lineNumber>2.000</ns0
<ns0:statusCodeLast>225</n
<ns0:costCenter> 19999</ns0:costCenter>
<ns0:addressNumber>32773</
<ns0:itemNumberRelatedKit/
<ns0:descriptionLine1>Stat
<ns0:orderSuffix>000</ns0:
<ns0:identifier2ndItem>392
</ns0:result>
<ns0:result
xsi:type="ns0:F4311_Output
<ns0:companyKeyOrderNo>000
<ns0:orderType>OH</ns0:ord
<ns0:documentOrderInvoiceE
<ns0:lineNumber>1.000</ns0
<ns0:statusCodeLast>420</n
<ns0:costCenter> 19999</ns0:costCenter>
<ns0:addressNumber>32773</
<ns0:itemNumberRelatedKit/
<ns0:descriptionLine1>Stat
<ns0:orderSuffix>000</ns0:
<ns0:identifier2ndItem>392
</ns0:result>
<ns0:result
xsi:type="ns0:F4311_Output
<ns0:companyKeyOrderNo>000
<ns0:orderType>OH</ns0:ord
<ns0:documentOrderInvoiceE
<ns0:lineNumber>1.000</ns0
<ns0:statusCodeLast>280</n
<ns0:costCenter> 19999</ns0:costCenter>
<ns0:addressNumber>32324</
<ns0:itemNumberRelatedKit/
<ns0:descriptionLine1>Prin
<ns0:orderSuffix>000</ns0:
<ns0:identifier2ndItem>390
</ns0:result>
</ans1:getF4311ResponseEle
</env:Body>
</env:Envelope>
How would that XSLT generator look like? XSLT is a programming language and you can do (almost) anything with it in regards to transforming one format into the other. The output can be XML, HTML, Text, and with XSLT 2.0 even other formats can be supported (actually, in XSLT 1.0 as well, but that requires extensions).
It seems that your XSLT contains nodes under ns0:result which should be translated into <td>keyname</td><td>keyval ue</td>. This only requires a few lines of XSLT to do. Hold on a minute., I'll dig up an example.
- Abel --
It seems that your XSLT contains nodes under ns0:result which should be translated into <td>keyname</td><td>keyval
- Abel --
PS: in the future, please use "Attach code snippet", it is there for a reason: makes the thread more readable and the code easier to cut and paste.
My 10 minutes. This little XSLT will provide the output you specified:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:types="http://oracle.e1.bssv.JPF43111/types/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" />
<xsl:template match="/">
<html>
<body>
<table width="640" border="2">
<xsl:apply-templates select="*" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="types:result/*">
<tr>
<td><xsl:value-of select="local-name(.)"/></td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:template>
<!-- do not output anything for nodes we do not specify -->
<xsl:template match="* | node()" >
<xsl:apply-templates select="*" />
</xsl:template>
</xsl:stylesheet>
More to the point, because I used indent="yes", this is the output when I run it against your data:
<html xmlns:types="http://oracle.e1.bssv.JPF43111/types/">
<body>
<table width="640" border="2">
<tr>
<td>companyKeyOrderNo</td>
<td>00001</td>
</tr>
<tr>
<td>orderType</td>
<td>OH</td>
</tr>
<tr>
<td>documentOrderInvoiceE</td>
<td>6255</td>
</tr>
<tr>
<td>lineNumber</td>
<td>2.000</td>
</tr>
<tr>
<td>statusCodeLast</td>
<td>225</td>
</tr>
<tr>
<td>costCenter</td>
<td> 19999</td>
</tr>
<tr>
<td>addressNumber</td>
<td>32773</td>
</tr>
<tr>
<td>itemNumberRelatedKit</td>
<td></td>
</tr>
<tr>
<td>descriptionLine1</td>
<td>Stationery </td>
</tr>
<tr>
<td>orderSuffix</td>
<td>000</td>
</tr>
<tr>
<td>identifier2ndItem</td>
<td>392-00 </td>
</tr>
<tr>
<td>companyKeyOrderNo</td>
<td>00001</td>
</tr>
<tr>
<td>orderType</td>
<td>OH</td>
</tr>
<tr>
<td>documentOrderInvoiceE</td>
<td>6255</td>
</tr>
<tr>
<td>lineNumber</td>
<td>1.000</td>
</tr>
<tr>
<td>statusCodeLast</td>
<td>420</td>
</tr>
<tr>
<td>costCenter</td>
<td> 19999</td>
</tr>
<tr>
<td>addressNumber</td>
<td>32773</td>
</tr>
<tr>
<td>itemNumberRelatedKit</td>
<td></td>
</tr>
<tr>
<td>descriptionLine1</td>
<td>Stationery </td>
</tr>
<tr>
<td>orderSuffix</td>
<td>000</td>
</tr>
<tr>
<td>identifier2ndItem</td>
<td>392-00 </td>
</tr>
<tr>
<td>companyKeyOrderNo</td>
<td>00001</td>
</tr>
<tr>
<td>orderType</td>
<td>OH</td>
</tr>
<tr>
<td>documentOrderInvoiceE</td>
<td>6244</td>
</tr>
<tr>
<td>lineNumber</td>
<td>1.000</td>
</tr>
<tr>
<td>statusCodeLast</td>
<td>280</td>
</tr>
<tr>
<td>costCenter</td>
<td> 19999</td>
</tr>
<tr>
<td>addressNumber</td>
<td>32324</td>
</tr>
<tr>
<td>itemNumberRelatedKit</td>
<td></td>
</tr>
<tr>
<td>descriptionLine1</td>
<td>Printing </td>
</tr>
<tr>
<td>orderSuffix</td>
<td>000</td>
</tr>
<tr>
<td>identifier2ndItem</td>
<td>390-00 </td>
</tr>
</table>
</body>
</html>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks Gertone, yes this is what I need.
Do you know if I can something like this but free of charge?
Do you know if I can something like this but free of charge?
No, as far as I know there are two products of this kind.
The second delivers obscure XSLT and is more expensive, so I don't mention it
(and by the way I hate Altova tools :)
The second delivers obscure XSLT and is more expensive, so I don't mention it
(and by the way I hate Altova tools :)
Money on Stylus Studio is by the way very well spent
So much for giving a full, simple solution that gives you the requested output... :(
Anyway, glad that you found what you want. I know I didn't answer your original request, mainly because these tools seldomly create helpful XSLT files, let alone performant or elegant and that I just wanted to show you how easy it can be to do it by hand (and in my case, I use oXygen or Stylus Studio). I second the opinion of Gertone on Mapforce, I tried it years ago and won't do that again any time soon.
Anyway, glad that you found what you want. I know I didn't answer your original request, mainly because these tools seldomly create helpful XSLT files, let alone performant or elegant and that I just wanted to show you how easy it can be to do it by hand (and in my case, I use oXygen or Stylus Studio). I second the opinion of Gertone on Mapforce, I tried it years ago and won't do that again any time soon.
ASKER
<body>
<table width="640" border="2">
<tr><td>companyKeyOrderNo<
<tr><td>orderType</td><td>
<tr><td>documentOrderInvoi
<tr><td>lineNumber</td><td
<tr><td>statusCodeLast</td
<tr><td>costCenter</td><td
<tr><td>addressNumber</td>
<tr><td>itemNumberRelatedK
<tr><td>descriptionLine1</
<tr><td>orderSuffix</td><t
<tr><td>identifier2ndItem<
<tr><td>companyKeyOrderNo<
<tr><td>orderType</td><td>
<tr><td>documentOrderInvoi
<tr><td>lineNumber</td><td
<tr><td>statusCodeLast</td
<tr><td>costCenter</td><td
<tr><td>addressNumber</td>
<tr><td>itemNumberRelatedK
<tr><td>descriptionLine1</
<tr><td>orderSuffix</td><t
<tr><td>identifier2ndItem<
<tr><td>companyKeyOrderNo<
<tr><td>orderType</td><td>
<tr><td>documentOrderInvoi
<tr><td>lineNumber</td><td
<tr><td>statusCodeLast</td
<tr><td>costCenter</td><td
<tr><td>addressNumber</td>
<tr><td>itemNumberRelatedK
<tr><td>descriptionLine1</
<tr><td>orderSuffix</td><t
<tr><td>identifier2ndItem<
</table>
</body>
</html>