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 <[EMAIL PROTECTED]> 06/07/2007 03:59 PM To xalan-j-users@xml.apache.org 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.