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.
document( ' ')

document( ' ')

2006-12-27       - By Mike Brown
Reply:     1     2     3     4     5  

Christine Li wrote:
> >which leads me to believe that Xalan is actually using the system id as a
> >URI to load a resource.  It seems kind of broken to require that any
> >stylesheet that references itself be reloadable and that it actually
> would
> >reload it and reparse it.
>
> You are right about this. For document function, the processor will reload
> the document using the system id as a URI

You might call it a bug. See XSLT 1.0 sec. 12.1, starting with "Two documents
are treated as the same document if they are identified by the same URI" and
also see RFC 3986 sec. 4.4: "When a same-document reference is dereferenced
for a retrieval action, the target of that reference is defined to be within
the same entity (representation, document, or message) as the reference;
therefore, a dereference should not result in a new retrieval action." (Or see
its predecessor, RFC 2396 sec. 4.2, which says essentially the same thing.)

My conclusion after dealing with this 4 years ago in another processor is that
in order to satisfy the document() + generate-id() requirements in XSLT 1.0
sec. 12.1, the processor must cache all documents it reads AND must reliably
detect all same-document references including but not limited to document('')
so that it can generate the same IDs for them, if not actually use the same
node objects each time.

I made a cursory test at http://skew.org/xml/stylesheets/doc-id/ and found
widely varying results in different processors at the time. It may seem
academic, but I can envision a case where generate-id() inconsistency with
same-document references: you might want to use the Muenchian method on data
nodes embedded in the stylesheet.

Anyway, you could write your own JAXP URIResolver to do same-document ref
detection and document caching, but it's still up to Xalan's generate-id()
implementation to also do its own same-document detection because it has to
take the Source that the URIResolver gives it and treat it as the same
document that it has already been using...perhaps not an easy thing to do.

Also note that it's also possible that the stylesheet docs haven't been read
yet in the current transformation session, such as when the transformer was
prepared with an already-created Templates object, the point of which is to
encapsulate the stylesheet tree -- a single tree, sans whitespace-only text
nodes and comments, and possibly further optimized -- not the original
docs/entities from which it was derived. So in that situation there's no way
around reloading stylesheet docs to satisfy document('').

Mike