  | |  | Problem evaluating xpath with muliple prefix with different namespace | Problem evaluating xpath with muliple prefix with different namespace 2007-07-09 - By Erin Harris
Hi,
I found two problems in the stylesheet.
The first is with the following line:
<xsl:element name="buybiz:postBuy" namespace="{$bizServiceNameSpace}" xmlns:mod="{$intModelNameSpace}">
In the XSLT 1.0 Specification, 7.6.2 Attribute Value Templates ( http://www.w3.org/TR/xslt#attribute-value-templates) it says:
NOTE:Not all attributes are interpreted as attribute value templates. Attributes whose value is an expression or pattern, attributes of top-level elements and attributes that refer to named XSLT objects are not interpreted as attribute value templates. In addition, xmlns attributes are not interpreted as attribute value templates; it would not be conformant with the XML Namespaces Recommendation to do this.
So xmlns:mod="{$intModelNameSpace}" is just treated as a string value and is not evaluated as an AVT.
Since there is a variable declaration: <xsl:variable name="intModelNameSpace">http://schemas.xxx.com/model</xsl:variable>, I tried replacing xmlns:mod="{$intModelNameSpace}" with xmlns:mod="http://schemas.xxx.com/model" but that did not work either because now in the stylesheet the prefix mod is bound to the namespace http://schemas.xxx.com/model, but in the xml input document the prefix mod is bound to http://ws.xxx.com/2007/06/model so there is no match. So I tried just removing that namespace declaration so that:
<xsl:element name="buybiz:postBuy" namespace="{$bizServiceNameSpace}" xmlns:mod="{$intModelNameSpace}">
becomes:
<xsl:element name="buybiz:postBuy" namespace="{$bizServiceNameSpace}">
and then everything works.
If you need that namespace declaration for some reason (though it didn't look like it was being used) then you can do something like this:
<xsl:element name="buybiz:postBuy" namespace="{$bizServiceNameSpace}" xmlns:mod="http://schemas.xxx.com/model" xmlns:modtarget=" http://ws.xxx.com/2007/06/model">
...
<xsl:with-param name="cat" select="serviceBusMessage/payload/buytypes:postLiveBuyRequest/buytypes:liveBuy /buytypes:category/modtarget:catName"/>
....
<xsl:with-param name="subcat" select="serviceBusMessage/payload/buytypes:postLiveBuyRequest/buytypes:liveBuy /buytypes:category/modtarget:subCatName"/>
Note that the XSLT processor uses the namespace bound to the prefix to match nodes in the xml input document and not the prefix name itself.
Thanks.
Erin Harris
laxman <lchandramouli@(protected)> 06/07/2007 03:59 PM
To xalan-j-users@(protected) cc
Subject Re: Problem evaluating xpath with muliple prefix with different namespace
Hi,
I edited the xml and renamed the xsl for convinence.
Thanks
laxman wrote: > > Hi Erin, > > Thanks for the reply I am working with Xalan Java 2.7.0 and jdk > 1.4.2_08 > > I am attaching the xsl and the input xml. Not sure what the exact > problem is. > > Thanks > > http://www.nabble.com/file/p11470588/P1.xsl P1.xsl > > http://www.nabble.com/file/p11470588/2.xml 2.xml >
-- View this message in context: http://www.nabble.com/Problem-evaluating-xpath-with-muliple-prefix-with -different-namespace-tf4036498.html#a11471552
Sent from the Xalan - J - Users mailing list archive at Nabble.com.
<br><font size=2 face="sans-serif">Hi,</font> <br> <br><font size=2 face="sans-serif">I found two problems in the stylesheet.< /font> <br> <br><font size=2 face="sans-serif">The first is with the following line:</font> <br> <br><font size=2 face="sans-serif"><xsl:element name="buybiz:postBuy " namespace="{$bizServiceNameSpace}" xmlns:mod="{ $intModelNameSpace}"></font> <br> <br><font size=2 face="sans-serif">In the XSLT 1.0 Specification, 7.6.2 Attribute Value Templates (</font><a href="http://www.w3.org/TR/xslt#attribute -value-templates"><font size=2 color=blue face="sans-serif">http://www.w3.org/TR /xslt#attribute-value-templates</font></a><font size=2 face="sans-serif">) it says:</font> <br> <br><font size=3><b>NOTE:</b>Not all attributes are interpreted as attribute value templates. Attributes whose value is an expression or pattern, attributes of </font><a href="http://www.w3.org/TR/xslt#dt-top-level"><font size=3 color =blue><u>top-level</u></font></a><font size=3> elements and attributes that refer to named XSLT objects are not interpreted as attribute value templates. In addition, </font><tt><font size=3>xmlns</font> </tt><font size=3> attributes are not interpreted as attribute value templates; it would not be conformant with the XML Namespaces Recommendation to do this. </font> <br> <br><font size=2 face="sans-serif">So <b>xmlns:mod="{$intModelNameSpace} "</b> is just treated as a string value and is not evaluated as an AVT.</font> <br> <br><font size=2 face="sans-serif">Since there is a variable declaration: <b><xsl:variable name="intModelNameSpace">http://schemas.xxx .com/model</xsl:variable></b>, I tried replacing <b>xmlns:mod="{$intModelNameSpace}"</b> with <b>xmlns:mod="http://schemas.xxx.com/model"</b> but that did not work either because now in the stylesheet the prefix <b>mod</b> is bound to the namespace <b>http://schemas.xxx.com/model</b>, but in the xml input document the prefix <b>mod</b> is bound to <b>http://ws.xxx.com/2007 /06/model</b> so there is no match. So I tried just removing that namespace declaration so that:</font> <br> <br><font size=2 face="sans-serif"> <xsl:element name=" ;buybiz:postBuy" namespace="{$bizServiceNameSpace}" xmlns:mod="{ $intModelNameSpace}"></font> <br> <br><font size=2 face="sans-serif">becomes:</font> <br> <br><font size=2 face="sans-serif"> <xsl:element name=" ;buybiz:postBuy" namespace="{$bizServiceNameSpace}"></font> <br> <br><font size=2 face="sans-serif">and then everything works.</font> <br> <br><font size=2 face="sans-serif">If you need that namespace declaration for some reason (though it didn't look like it was being used) then you can do something like this:</font> <br> <br><font size=2 face="sans-serif"> <xsl:element name=" ;buybiz:postBuy" namespace="{$bizServiceNameSpace}" xmlns:mod="http://schemas.xxx .com/model" xmlns:modtarget="http://ws.xxx.com/2007/06/model"></font> <br> <br><font size=2 face="sans-serif"> ...</font> <br> <br><font size=2 face="sans-serif"> <xsl:with-param name=" ;cat" select="serviceBusMessage/payload/buytypes:postLiveBuyRequest/buytypes :liveBuy/buytypes:category/modtarget:catName"/></font> <br> <br><font size=2 face="sans-serif"> ....</font> <br> <br><font size=2 face="sans-serif"> <xsl:with-param name=" ;subcat" select="serviceBusMessage/payload/buytypes:postLiveBuyRequest/buytypes :liveBuy/buytypes:category/modtarget:subCatName"/></font> <br> <br> <br><font size=2 face="sans-serif">Note that the XSLT processor uses the namespace bound to the prefix to match nodes in the xml input document and not the prefix name itself.</font> <br> <br> <br><font size=2 face="sans-serif">Thanks.<br> <br> Erin Harris<br> <br> </font> <br> <br> <br> <table width=100%> <tr valign=top> <td width=40%><font size=1 face="sans-serif"><b>laxman <lchandramouli@(protected) .com></b> </font> <p><font size=1 face="sans-serif">06/07/2007 03:59 PM</font> <td width=59%> <table width=100%> <tr valign=top> <td> <div align=right><font size=1 face="sans-serif">To</font></div> <td><font size=1 face="sans-serif">xalan-j-users@(protected)</font> <tr valign=top> <td> <div align=right><font size=1 face="sans-serif">cc</font></div> <td> <tr valign=top> <td> <div align=right><font size=1 face="sans-serif">Subject</font></div> <td><font size=1 face="sans-serif">Re: Problem evaluating xpath with muliple prefix with different namespace</font></table> <br> <table> <tr valign=top> <td> <td></table> <br></table> <br> <br> <br><tt><font size=2><br> Hi,<br> <br> I edited the xml and renamed the xsl for convinence.<br> <br> Thanks<br> <br> <br> <br> laxman wrote:<br> > <br> > Hi Erin,<br> > <br> > Thanks for the reply I am working with Xalan Java 2.7.0 and jdk<br> > 1.4.2_08<br> > <br> > I am attaching the xsl and the input xml. Not sure what the exact<br> > problem is.<br> > <br> > Thanks<br> > <br> > http://www.nabble.com/file/p11470588/P1.xsl P1.xsl <br> > <br> > http://www.nabble.com/file/p11470588/2.xml 2.xml <br> > <br> <br> -- <br> View this message in context: http://www.nabble.com/Problem-evaluating-xpath -with-muliple-prefix-with-different-namespace-tf4036498.html#a11471552<br> Sent from the Xalan - J - Users mailing list archive at Nabble.com.<br> <br> </font></tt> <br>
|
|
 |