Subjects
Home
Xalan extension functions
Fomatting question serializing DOM with pretty print
xalan with pull parser
Cannot find the declaration
Apache Xalan drop support to run on JRE 1 1 x
Why does Doctype change processing of a document
Node set to XML string via Java extensions in Xalan J: possible?
Templates/Transformers + thread safety???
Problem evaluating xpath with muliple prefix with different namespace
remove an arbitrary attribute from xsl output
Xalan3 XSLT 2 0 XPath 2 0 support?
Problem using compiled translets with Xalan !!
Xalan and jstl 1 1 problem with transform tag
NullPointer in DOM2DTM getLocalName
URIResolvers base parameter with xsltc and cascaded imports
Performance problem for Xalan J on intel dual core
Standard libraries in JAXP?
Serializing a DOM tree to XML file, customize entities replacement
Library Conflict Involving BCEL Library
A question on how users are using <xsl:message >
Kevin Cormier as a new Apache Xalan J committer
Struggling to iterate over tokenized string
Xalan count() trouble
Problem with recursive xpath
Error when switching to java 1 5
document( ' ')
Problem with Xalan2 7 0 transformation
cr/lf options
entity encoded XML
can xalan transform 2 xml using one xslt?
Xalan J JIRA defect review Monday October 16, 2006 from 2:00 to 3:30 pm ED
xsl transform with cdata section elements
xslt parameters not expanded
Weird behavior of XPath evaluate()
How to avoid <xsl:message > instruction prints stylesheet file informations ?
Cannot find SimpleTransform subdirectory after installing Xalan J
recover from document not found exceptions
jdk1 5 and Xalan jar differences?
Performance Issue
Error/Bug adding floating point numbers
XPathAPI: eval exp using nodes with default namespace
modifying xalan to output invalid XML
NullPointerException
mege two separate xml nodes into one
Is this a XALAN document identification bug?
is StylesheetRoot really java io Serializable ?
transform() fails for DOMSource but succeeds for StreamSource
Thoughts on Transformer parameter passing
HELP, Xalan and jstl 1 1 problem with transformer
Problem with XPath namespace axis?
string utils:replace deleting search string if replacement string is an HTML
help with enumeration values pls
xalan 2 5 1 vs 2 7 performance question
How to insert/update in XML document
HTML Serialization and Handling of Ampersands in HREF Attributes
XHTML link tag stripping
SystemId Unknown; Line #24; Column #49; java lang NullPointerException
xpath text() help
Apostrophe problem with xalan 2 7 0
How to set variables in XML document?
Links
Home
Oracle database error code ...
 
Search:  
Power your search with and, or, +, -, or "some phrase" operators.
Problem evaluating xpath with muliple prefix with different namespace

Problem evaluating xpath with muliple prefix with different namespace

2007-07-09       - By Erin Harris
Reply:     1     2     3     4     5     6  

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">&lt;xsl:element name=&quot;buybiz:postBuy
&quot;
namespace=&quot;{$bizServiceNameSpace}&quot; xmlns:mod=&quot;{
$intModelNameSpace}&quot;&gt;</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=&quot;{$intModelNameSpace}
&quot;</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>&lt;xsl:variable name=&quot;intModelNameSpace&quot;&gt;http://schemas.xxx
.com/model&lt;/xsl:variable&gt;</b>,
I tried replacing <b>xmlns:mod=&quot;{$intModelNameSpace}&quot;</b> with
<b>xmlns:mod=&quot;http://schemas.xxx.com/model&quot;</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. &nbsp;So I tried just removing that namespace declaration
so that:</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &lt;xsl:element name=&quot
;buybiz:postBuy&quot;
namespace=&quot;{$bizServiceNameSpace}&quot; xmlns:mod=&quot;{
$intModelNameSpace}&quot;&gt;</font>
<br>
<br><font size=2 face="sans-serif">becomes:</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &lt;xsl:element name=&quot
;buybiz:postBuy&quot;
namespace=&quot;{$bizServiceNameSpace}&quot;&gt;</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">&nbsp; &nbsp; &lt;xsl:element name=&quot
;buybiz:postBuy&quot;
namespace=&quot;{$bizServiceNameSpace}&quot; xmlns:mod=&quot;http://schemas.xxx
.com/model&quot;
xmlns:modtarget=&quot;http://ws.xxx.com/2007/06/model&quot;&gt;</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; ...</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &lt;xsl:with-param name=&quot
;cat&quot;
select=&quot;serviceBusMessage/payload/buytypes:postLiveBuyRequest/buytypes
:liveBuy/buytypes:category/modtarget:catName&quot;/&gt;</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; ....</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &lt;xsl:with-param name=&quot
;subcat&quot;
select=&quot;serviceBusMessage/payload/buytypes:postLiveBuyRequest/buytypes
:liveBuy/buytypes:category/modtarget:subCatName&quot;/&gt;</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 &lt;lchandramouli@(protected)
.com&gt;</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>
&nbsp; I edited the xml and renamed the xsl for convinence.<br>
<br>
Thanks<br>
<br>
<br>
<br>
laxman wrote:<br>
&gt; <br>
&gt; Hi Erin,<br>
&gt; <br>
&gt; &nbsp; &nbsp; Thanks for the reply I am working with Xalan Java 2.7.0
and jdk<br>
&gt; 1.4.2_08<br>
&gt; <br>
&gt; &nbsp; &nbsp;I am attaching the xsl and the input xml. Not sure what
the exact<br>
&gt; problem is.<br>
&gt; <br>
&gt; Thanks<br>
&gt; <br>
&gt; &nbsp;http://www.nabble.com/file/p11470588/P1.xsl P1.xsl <br>
&gt; <br>
&gt; &nbsp;http://www.nabble.com/file/p11470588/2.xml 2.xml <br>
&gt; <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>