Index: XalanParsedURI.cpp
===================================================================
RCS file: /home/cvspublic/xml-xalan/c/src/PlatformSupport/XalanParsedURI.cpp,v
retrieving revision 1.1
diff -r1.1 XalanParsedURI.cpp
208a209,229
> /* Case insensitive comparison for URIs.  Limited to A-Za-z */
> static int ci_equals(const XalanDOMString &s1, const XalanDOMString &s2)
> {
> 	if (s1.length() != s2.length())
> 		return false;
> 
> 	const XalanDOMChar *p1 = s1.c_str(), *p2 = s2.c_str();
> 	for ( ; *p1 ; p1++, p2++)
> 	{
> 		XalanDOMChar c1 = *p1, c2 = *p2;
> 		if (c1 >= XalanUnicode::charLetter_A && c1 <= XalanUnicode::charLetter_Z)
> 			c1 = XalanUnicode::charLetter_a + (c1 - XalanUnicode::charLetter_A);
> 		if (c2 >= XalanUnicode::charLetter_A && c2 <= XalanUnicode::charLetter_Z)
> 			c2 = XalanUnicode::charLetter_a + (c2 - XalanUnicode::charLetter_A);
> 		if (c1 != c2)
> 			return false;
> 	}
> 
> 	return true;
> }
> 
236c257,261
< 	if (!(m_defined & d_scheme))
---
> 	// Also allow a scheme without authority that matches the base scheme to be 
> 	// interpreted as a relative URI
> 	if (!(m_defined & d_scheme) || ( 
> 			(base.m_defined & d_scheme) && !(m_defined & d_authority) 
> 			&& ci_equals(m_scheme, base.m_scheme)))
