Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

XSLT to ADO recordset saved in XML format

Status
Not open for further replies.

umamahez

Programmer
Nov 5, 2004
2
0
0
US
Hi
Iam very sorry but this is going to be a very long post!!
I am trying to write a XSL style sheet to format the xml file created by saving an ADODB recordset in xml format.
The xml doc is as follows:
- <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
- <s:Schema id="RowsetSchema">
- <s:ElementType name="row" content="eltOnly" rs:CommandTimeout="300">
- <s:AttributeType name="OP_lKEY" rs:number="1" rs:write="true">
<s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" rs:maybenull="false" />
</s:AttributeType>
- <s:AttributeType name="OP_lfkLOCKEY" rs:number="2" rs:nullable="true" rs:write="true">
<s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" />
</s:AttributeType>
- <s:AttributeType name="OP_szCODE" rs:number="3" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="18" rs:maybenull="false" />
</s:AttributeType>
- <s:AttributeType name="OP_szAuditID" rs:number="4" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="16" />
</s:AttributeType>
- <s:AttributeType name="OP_szFName" rs:number="5" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="30" />
</s:AttributeType>
- <s:AttributeType name="OP_szLName" rs:number="6" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="30" />
</s:AttributeType>
- <s:AttributeType name="OP_szMI" rs:number="7" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="1" />
</s:AttributeType>
- <s:AttributeType name="OP_szTitle" rs:number="8" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="30" />
</s:AttributeType>
- <s:AttributeType name="OP_boolActiveStatus" rs:number="9" rs:write="true">
<s:datatype dt:type="i1" dt:maxLength="1" rs:precision="3" rs:fixedlength="true" rs:maybenull="false" />
</s:AttributeType>
- <s:AttributeType name="OP_szLoginID" rs:number="10" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="16" />
</s:AttributeType>
- <s:AttributeType name="OP_szPassword" rs:number="11" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="8" />
</s:AttributeType>
- <s:AttributeType name="OP_szLastUpdated" rs:number="12" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="16" />
</s:AttributeType>
- <s:AttributeType name="OP_dtLastUpdated" rs:number="13" rs:write="true">
<s:datatype dt:type="dateTime" rs:dbtype="timestamp" dt:maxLength="16" rs:scale="6" rs:precision="26" rs:fixedlength="true" rs:maybenull="false" />
</s:AttributeType>
- <s:AttributeType name="OP_lChangeCtr" rs:number="14" rs:write="true">
<s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" rs:maybenull="false" />
</s:AttributeType>
- <s:AttributeType name="OP_szHostOperatorCode" rs:number="15" rs:nullable="true" rs:write="true">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="18" />
</s:AttributeType>
- <s:AttributeType name="OP_lfkOperatorRole" rs:number="16" rs:nullable="true" rs:write="true">
<s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" />
</s:AttributeType>
<s:extends type="rs:rowbase" />
</s:ElementType>
</s:Schema>
- <rs:data>
<z:row OP_lKEY="1" OP_lfkLOCKEY="3" OP_szCODE="28885" OP_szAuditID="MJS" OP_szFName="Tony" OP_szLName="B" OP_szMI="J" OP_boolActiveStatus="1" OP_dtLastUpdated="2004-11-04T17:21:32.433000000" OP_lChangeCtr="10" OP_lfkOperatorRole="1" />
<z:row OP_lKEY="2" OP_lfkLOCKEY="1" OP_szCODE="88612" OP_szAuditID="JJJ" OP_szFName="John" OP_szLName="Jones" OP_szMI="J" OP_szTitle="Nurse" OP_boolActiveStatus="1" OP_dtLastUpdated="2002-03-07T13:47:06.164000000" OP_lChangeCtr="5" OP_lfkOperatorRole="1" />
<z:row OP_lKEY="3" OP_lfkLOCKEY="1" OP_szCODE="29444" OP_szAuditID="JJW" OP_szFName="Jack" OP_szLName="Watson" OP_szMI="J" OP_szTitle="Nurse" OP_boolActiveStatus="1" OP_dtLastUpdated="2002-03-07T13:42:13.633000000" OP_lChangeCtr="1" OP_lfkOperatorRole="1" />
<z:row OP_lKEY="4" OP_lfkLOCKEY="3" OP_szCODE="26843" OP_szAuditID="RGH" OP_szFName="Richard" OP_szLName="Hardy" OP_szMI="G" OP_szTitle="Nurse" OP_boolActiveStatus="1" OP_dtLastUpdated="2002-06-19T16:13:15.590000000" OP_lChangeCtr="2" OP_lfkOperatorRole="1" />
<z:row OP_lKEY="5" OP_lfkLOCKEY="3" OP_szCODE="19856" OP_szAuditID="LYY" OP_szFName="Larry" OP_szLName="Yard" OP_szMI="Y" OP_szTitle="Nurse" OP_boolActiveStatus="1" OP_dtLastUpdated="2002-03-07T13:42:47.963000000" OP_lChangeCtr="1" OP_lfkOperatorRole="1" />
<z:row OP_lKEY="6" OP_lfkLOCKEY="3" OP_szCODE="12513" OP_szAuditID="MMZ" OP_szFName="Martin" OP_szLName="Zillion" OP_szMI="M" OP_szTitle="Nurse" OP_boolActiveStatus="1" OP_dtLastUpdated="2002-06-19T16:02:22.671000000" OP_lChangeCtr="2" OP_lfkOperatorRole="1" />
</rs:data>
</xml>
I want to have the out put as
<rs: data>
- <Z:row>
<OP_lKEY>1</OP_lKEY>
<OP_lfkLOCKEY>Value</OP_lfkLOCKEY>
<OP_szCODE>Value</OP_szCODE>
<OP_szAuditID>value</OP_szAuditID>
<OP_szFName>value</OP_szFName>
..more fields
</Z:row>

another bunch
another bunch
Please help!!!

here is something i tried from sample XSLT on the net
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl=" <xsl:template match="/xml">
<xsl:for-each select="/rs:data/z:row">
<xsl:element name="{name()}">
<xsl:for-each select="@*">
xsl:element name="{name()}">
<xsl:value-of select="." />
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

It does not work
Thanks in advance for any help.
 
First: your xsl-declaration is incorrect. I guess the example is from a long time ago...
Second: if you want to use namespaces (like 'rs:') in xsl, you'll have to declare them.
And third:
<xsl:for-each select="/rs:data/z:row">
<xsl:element name="{name()}">
would give you a <z:row> node, not a <rs:data> node...
All in all, starting with your xsl I end up with:
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="[URL unfurl="true"]http://www.w3.org/1999/XSL/Transform"[/URL] xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
   <xsl:template match="/xml">
      <xsl:for-each select="rs:data">
         <xsl:element name="{name()}">
            <xsl:for-each select="z:row">
               <xsl:element name="{name()}">
                  <xsl:for-each select="@*">
                     <xsl:element name="{name()}">
                        <xsl:value-of select="." />
                     </xsl:element>
                  </xsl:for-each>
               </xsl:element>
            </xsl:for-each>
         </xsl:element>
      </xsl:for-each>
   </xsl:template>
</xsl:stylesheet>
Would that do?
 
Thank you so much Jel..it is working perfectly!!
I am going to try to extract only a subset of it...
thank you once again
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top