You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Nicholas Sushkin (JIRA)" <xa...@xml.apache.org> on 2006/11/01 04:24:17 UTC

[jira] Commented: (XALANJ-2332) If a URIResolver is provided, don't call SystemIDResolver.getAbsoluteURI in document() function

    [ http://issues.apache.org/jira/browse/XALANJ-2332?page=comments#action_12446149 ] 
            
Nicholas Sushkin commented on XALANJ-2332:
------------------------------------------

In the "document()" function, the same issue is still unresolved. If a URIResolver is provided, don't call SystemIDResolver.getAbsoluteURI.

The change should be somewhere in org/apache/xalan/xsltc/dom/LoadDocument.java

Perhaps need to reuse or factor out the new function "private Source getSourceFromUriResolver(StylesheetHandler handler)" from org/apache/xalan/processor/ProcessorInclude.java

Without knowing the inner working of Xalan, I would venture to guess the candidates for rewrite are as follows:

- setting of baseUri in "document(2 args)" implemented in
  "public static DTMAxisIterator documentF(Object arg1, DTMAxisIterator arg2, String xslURI, AbstractTranslet  translet, DOM dom)"

- setting of baseUri variable in "document(1 arg)" implemented in
  "public static DTMAxisIterator documentF(Object arg, String xslURI, AbstractTranslet translet, DOM dom)"

- In the function that actually creates a Source from the arguments of document function, do the same modification as in Bug #XALANJ-2205. In other words, in function
"private static DTMAxisIterator document(String uri, String base, AbstractTranslet translet, DOM dom, boolean cacheDOM)"
Instead of doing basically 
 uri = SystemIDResolver.getAbsoluteURI(uri, base);
 dtmManager.getDTM(new StreamSource(uri), ...);

do
  // Get the Source from the user's URIResolver (if any).
 Source sourceFromURIResolver = getSourceFromUriResolver(handler);
 dtmManager.getDTM(sourceFromURIResolver, ...)


> If a URIResolver is provided, don't call SystemIDResolver.getAbsoluteURI in document() function
> -----------------------------------------------------------------------------------------------
>
>                 Key: XALANJ-2332
>                 URL: http://issues.apache.org/jira/browse/XALANJ-2332
>             Project: XalanJ2
>          Issue Type: Bug
>    Affects Versions: Latest Development Code, 2.6, 2.7
>            Reporter: Nicholas Sushkin
>         Assigned To: Brian Minchau
>             Fix For: Latest Development Code
>
>
> If the user provides a URIResolver that returns the Source given the absolute URI of the stylesheet module doing the include/import and the relative URI from the href attribute, and if that Source has its system ID set, then there is no reason for the XSLT processor to get involved with the contents of the URIs. The user has provided the full management of stylesheet URIs, to resolve all included/imported Source stylesheet modules and their absolute URIs.
> The URIs are supposed to be legitimate URIs, but wheter or not they actually are should be in the user's control. For example the URIs might be of the form "file:///..." with directories or filenames that have characters in them that are not allowed in legitimate URIs.
> On the other hand, if the user hasn't provided a URIResolver, or that resolver doesn't return a Source, or that Source doesn't have its system ID set, then the fallback of using SystemIDResolver to get the base URI of the included document is OK. If the URIs are not legitimate, the services provided by this class may throw MalformedURIException. 

-- 
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
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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