You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Cindy Moncsko (JIRA)" <xe...@xml.apache.org> on 2005/03/03 15:54:50 UTC

[jira] Created: (XERCESJ-1047) Error calcuating the Base URI for XML included through the XInclude process.

Error calcuating the Base URI for XML included through the XInclude process.
----------------------------------------------------------------------------

         Key: XERCESJ-1047
         URL: http://issues.apache.org/jira/browse/XERCESJ-1047
     Project: Xerces2-J
        Type: Bug
  Components: XInclude 1.0  
    Versions: 2.6.2    
 Environment: 1. Custom protocol and the java.protocol.handler.pkgs System property set
	to recognize that protocol.
2. Running Sun JDK 1.4.2_04
3. Xerces 2.6.2 initially, 
	xercesImpl-gump-03032005.jar for last minute check.
    Reporter: Cindy Moncsko
 Attachments: TestBaseUri.zip, xercesCustomProtocolBaseUriPatch.txt

Error calcuating the Base URI for XML included through the XInclude process.

I did not see a way to use existing tests to illustrate this problem so I 
zipped up a standalone test.

Problem:
---------
TESTING CONDITIONS:
	
	Root document 
		error.test://dogs/DogRoot.xml
	XIncludes
		error.test://cats/Noise.xml
	which XIncludes
		error.test://dogs/Noise.xml
	

When the XIncludeHandler.getRelativeBaseURI() method calculates the relative
Base URI 

	relativeURI        = error.test://dogs/Noise.xml
	fParentRelativeURI = error.test://cats/Noise.xml

it assumes it is a file: protocol.

		URI uri = new URI("file", error.test://cats/Noise.xml);


The PATH of the the uri then equals 
	error.test://cats/Noise.xml 

The URI is then resolved against the URI specification string
	error.test://dogs/Noise.xml

		uri = new URI(uri, error.test://dogs/Noise.xml);
	
Resulting in the relative path
	/Noise.xml

		return uri.getPath();
		
Since parent was //cats/Noise.xml the /Noise.xml could be seen as //cats/Noise.xml

This is incorrect because error test://dogs/Noise.xml 
is a different file than error  test://cats/Noise.xml 

Solution:
---------
Remove hard coded file scheme. Return path is the scheme and
authority are the same, otherwise return the relative path.

			URI uriParent = new URI(fParentRelativeURI);
			URI uriChild = new URI(uriParent, relativeURI);
			if (!uriChild.getHost().equals(uriParent.getHost())
					|| !uriChild.getScheme().equals(uriParent.getScheme())) {
				return relativeURI;
			}
			return uriChild.getPath();

In the above test the relativeURI value (error.test://dogs/Noise.xml) would
be returned, since the authority dogs does not equal cats.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org


[jira] Updated: (XERCESJ-1047) Error calcuating the Base URI for XML included through the XInclude process.

Posted by "Cindy Moncsko (JIRA)" <xe...@xml.apache.org>.
     [ http://issues.apache.org/jira/browse/XERCESJ-1047?page=history ]

Cindy Moncsko updated XERCESJ-1047:
-----------------------------------

    Attachment: xercesCustomProtocolBaseUriPatch.txt
                TestBaseUri.zip

Patch. Standalone test for windows. Open command window in java directory and run testxerces bat

> Error calcuating the Base URI for XML included through the XInclude process.
> ----------------------------------------------------------------------------
>
>          Key: XERCESJ-1047
>          URL: http://issues.apache.org/jira/browse/XERCESJ-1047
>      Project: Xerces2-J
>         Type: Bug
>   Components: XInclude 1.0
>     Versions: 2.6.2
>  Environment: 1. Custom protocol and the java.protocol.handler.pkgs System property set
> 	to recognize that protocol.
> 2. Running Sun JDK 1.4.2_04
> 3. Xerces 2.6.2 initially, 
> 	xercesImpl-gump-03032005.jar for last minute check.
>     Reporter: Cindy Moncsko
>  Attachments: TestBaseUri.zip, xercesCustomProtocolBaseUriPatch.txt
>
> Error calcuating the Base URI for XML included through the XInclude process.
> I did not see a way to use existing tests to illustrate this problem so I 
> zipped up a standalone test.
> Problem:
> ---------
> TESTING CONDITIONS:
> 	
> 	Root document 
> 		error.test://dogs/DogRoot.xml
> 	XIncludes
> 		error.test://cats/Noise.xml
> 	which XIncludes
> 		error.test://dogs/Noise.xml
> 	
> When the XIncludeHandler.getRelativeBaseURI() method calculates the relative
> Base URI 
> 	relativeURI        = error.test://dogs/Noise.xml
> 	fParentRelativeURI = error.test://cats/Noise.xml
> it assumes it is a file: protocol.
> 		URI uri = new URI("file", error.test://cats/Noise.xml);
> The PATH of the the uri then equals 
> 	error.test://cats/Noise.xml 
> The URI is then resolved against the URI specification string
> 	error.test://dogs/Noise.xml
> 		uri = new URI(uri, error.test://dogs/Noise.xml);
> 	
> Resulting in the relative path
> 	/Noise.xml
> 		return uri.getPath();
> 		
> Since parent was //cats/Noise.xml the /Noise.xml could be seen as //cats/Noise.xml
> This is incorrect because error test://dogs/Noise.xml 
> is a different file than error  test://cats/Noise.xml 
> Solution:
> ---------
> Remove hard coded file scheme. Return path is the scheme and
> authority are the same, otherwise return the relative path.
> 			URI uriParent = new URI(fParentRelativeURI);
> 			URI uriChild = new URI(uriParent, relativeURI);
> 			if (!uriChild.getHost().equals(uriParent.getHost())
> 					|| !uriChild.getScheme().equals(uriParent.getScheme())) {
> 				return relativeURI;
> 			}
> 			return uriChild.getPath();
> In the above test the relativeURI value (error.test://dogs/Noise.xml) would
> be returned, since the authority dogs does not equal cats.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org