XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Ian ShulerSubject: XSL Selection Syntax help with namespace qualified elements
Author: Ian Shuler
Date: 17 Jun 2005 12:43 PM
Hi all,

I thought I'd re-phrase this post...I have the following xml file that will be transformed into a text string to be inserted into an SQL database via another operation.

<?xml version="1.0" encoding="UTF-8"?>
<returnsoap>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<queryResponse xmlns="urn:foo.soap.bar.com">
<result>
<done>true</done>
<queryLocator xsi:nil="true"/>
<records xsi:type="sf:sObject" xmlns:sf="urn:foo1.foo.soap.bar.com">
<sf:type>Opportunity</sf:type>
<sf:Id>006300000027mFGAAY</sf:Id>
<sf:Id>006300000027mFGAAY</sf:Id>
<sf:Name>USA Exports-Market Research</sf:Name>
<sf:Expiration_Date__c xsi:nil="true"/>
</records>
<size>1</size>
</result>
</queryResponse>
</soapenv:Body>
</soapenv:Envelope>
</returnsoap>

The xsl I have been using looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:sf="urn:foo1.foo.soap.bar.com">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:text>insert into `somedb`.`sometable`( col1, col2,col n ) values ("</xsl:text>
<xsl:apply-templates select="//records"/>
<xsl:for-each select="/">
<xsl:value-of select="."/>
<xsl:text>","</xsl:text>
</xsl:for-each>
<xsl:for-each select="/">
<xsl:value-of select="."/>
<xsl:text>","</xsl:text>
</xsl:for-each>
<xsl:for-each select="/">
<xsl:value-of select="/"/>
<xsl:text>")</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

I am getting output that is almost exactly what I need:

insert into `somedb`.`sometable`( col1, col2,col n ) values ("trueOpportunity006300000027mFGAAY006300000027mFGAAYUSA Exports-Market Research1","trueOpportunity006300000027mFGAAY006300000027mFGAAYUSA Exports-Market Research1","trueOpportunity006300000027mFGAAY006300000027mFGAAYUSA Exports-Market Research1")

I need to be able to select the sf: qualified elements only and I am running around in circles trying to figure this out...any help would be appreciated...

TIA, Ian


DocumentSFQresult(2).xml
input xml

Documentdbinserttest(2).xslt
XSL to transform input

Postnext
Ivan PedruzziSubject: XSL Selection Syntax help with namespace qualified elements
Author: Ivan Pedruzzi
Date: 17 Jun 2005 02:42 PM
Hi Ian,

Try the following.

Hope this helps
Ivan Pedruzzi
Stylus Studio Team


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sf="urn:foo.soap.bar.com">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:text>insert into `somedb`.`sometable`( col1, col2,col n ) values (</xsl:text>
<xsl:for-each select="//sf:records/*">
<xsl:value-of select="concat('&quot;', . , '&quot;')"/>
<xsl:if test="position() &lt; last()">,</xsl:if>
<xsl:if test="position() = last()">)</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Postnext
Ian ShulerSubject: XSL Selection Syntax help with namespace qualified elements
Author: Ian Shuler
Date: 17 Jun 2005 03:10 PM
Ivan,

Once again I'm in your debt....thanks a million. Can you tell me where I went wrong in my original approach? In examining the 2 files side by side, I see that your approach was to eval the result returned from <xsl:for-each select="//sf:records/*"> using the <xsl:value-of select="concat('&quot;', . , '&quot;')"/> and xsl:if functions below it. I am assuming that I erred in my node selection, //records as opposed to //sf:records. Is this standard with any namespace qualified element when selecting?

Cheers...

Ian

Postnext
Ivan PedruzziSubject: XSL Selection Syntax help with namespace qualified elements
Author: Ivan Pedruzzi
Date: 17 Jun 2005 04:08 PM

Before addressing any element outside the defautl namespace you need the define the namespace.
I have bound the sf prefix in the stylesheet element

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sf="urn:foo.soap.bar.com">


Ivan

Posttop
Ian ShulerSubject: XSL Selection Syntax help with namespace qualified elements
Author: Ian Shuler
Date: 17 Jun 2005 04:29 PM
Ah...makes sense. Thanks for the help..

Ian

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.