You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by TAMURA Kent <ke...@hauN.org> on 2000/06/19 09:14:02 UTC
[Xalan-J] [PATCH] default namespace in XPath expressions
With Xalan-J on CVS, an XPathProcessorImpl does not resolve
default namespace for a name with no prefix.
For example,
<XPath xmlns="http://www.w3.org/2000/02/xmldsig#">//Signature</XPath>
I wanted that the name "Signature" belonged to http://www.w3.org/2000/02/xmldsig#,
but XPathProcessorImpl#initXPath() did not call PrefixResolver
for "Signature".
The following patch fixes this problem, maybe:-)
Index: XPathProcessorImpl.java
===================================================================
RCS file: /home/cvspublic/xml-xalan/src/org/apache/xalan/xpath/XPathProcessorImpl.java,v
retrieving revision 1.31
diff -c -r1.31 XPathProcessorImpl.java
*** XPathProcessorImpl.java 2000/04/12 17:06:45 1.31
--- XPathProcessorImpl.java 2000/06/19 06:50:50
***************
*** 263,276 ****
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
isAttrName = false;
! if(-1 != posOfNSSep)
! {
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i);
! }
! else
! {
! addToTokenQueue(pat.substring(startSubstring, i));
! }
}
startSubstring = i;
for(i++; (i < nChars) && ((c = pat.charAt(i)) != '\"'); i++);
--- 263,270 ----
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
isAttrName = false;
! if (-1 == posOfNSSep) posOfNSSep = startSubstring;
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i);
}
startSubstring = i;
for(i++; (i < nChars) && ((c = pat.charAt(i)) != '\"'); i++);
***************
*** 292,305 ****
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
isAttrName = false;
! if(-1 != posOfNSSep)
! {
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i);
! }
! else
! {
! addToTokenQueue(pat.substring(startSubstring, i));
! }
}
startSubstring = i;
for(i++; (i < nChars) && ((c = pat.charAt(i)) != '\''); i++);
--- 286,293 ----
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
isAttrName = false;
! if (-1 != posOfNSSep) posOfNSSep = startSubstring;
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i);
}
startSubstring = i;
for(i++; (i < nChars) && ((c = pat.charAt(i)) != '\''); i++);
***************
*** 323,336 ****
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
isAttrName = false;
! if(-1 != posOfNSSep)
! {
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i);
! }
! else
! {
! addToTokenQueue(pat.substring(startSubstring, i));
! }
startSubstring = -1;
}
break;
--- 311,318 ----
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
isAttrName = false;
! if (-1 != posOfNSSep) posOfNSSep = startSubstring;
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i);
startSubstring = -1;
}
break;
***************
*** 371,384 ****
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
isAttrName = false;
! if(-1 != posOfNSSep)
! {
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i);
! }
! else
! {
! addToTokenQueue(pat.substring(startSubstring, i));
! }
startSubstring = -1;
}
else if(('/' == c) && isStartOfPat)
--- 353,360 ----
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
isAttrName = false;
! if (-1 != posOfNSSep) posOfNSSep = startSubstring;
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, i);
startSubstring = -1;
}
else if(('/' == c) && isStartOfPat)
***************
*** 452,465 ****
{
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
! if(-1 != posOfNSSep)
! {
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, nChars);
! }
! else
! {
! addToTokenQueue(pat.substring(startSubstring, nChars));
! }
}
if(0 == m_xpath.m_tokenQueueSize)
--- 428,435 ----
{
isNum = false;
isStartOfPat = mapPatternElemPos(nesting, isStartOfPat, isAttrName);
! if (-1 != posOfNSSep) posOfNSSep = startSubstring;
! posOfNSSep = mapNSTokens(pat, startSubstring, posOfNSSep, nChars);
}
if(0 == m_xpath.m_tokenQueueSize)
--
TAMURA, Kent