Subjects
Home
VOTE Move XML Commons to Xerces
Commented: (XERCESJ 589) Bug with pattern restriction on long strings
: Xerces J 2 8 1 Release on Wednesday, September 13th
: Xerces J 2 9 0 Release on Wednesday, November 22nd
Commented: (XERCESJ 1066) Restriction+choice+substitutionGroup error
Commented: (XERCESJ 1178) Error getting prefix for an attribute with no n
Updated: (XERCESJ 1244) XMLSchemaValidator does not contribute element 's
Some consideration about the xerces DOM implementation
Updated: (XERCESJ 1066) Restriction+choice+substitutionGroup error
Commented: (XERCESJ 1227) Poor performance / OutOfMemoryError for sequenc
retain exception stack traces
Updated: (XERCESJ 1193) NPE or hang when parsing using the "continue afte
Future of NekoHTML
Commented: (XERCESJ 1203) NPE in XMLDTDProcessor
DOM Level 3 APIs for Xalan J and a new Xalan release (2 7 1)
: xml commons external 1 3 04 Release on Wednesday, November 22nd
Commented: (XERCESJ 1247) Incorrect location information on SAX when usin
XInclude exceptions how to mirror Xerces J functionality into Xerces C++?
First proposal on SoC project "Add support for the StAX (JSR 173) cursor API
: xml commons resolver 1 2 Release on Wednesday, November 22nd
Typo in RangeToken java Please check
Validator features
java lang ClassCastException when adopting Node
using the org apache xerces impl xs identity package
Updated: (XERCESJ 1257) buffer overflow in UTF8Reader for characters out
Problem with ref attributes and schema validation
Updated: (XERCESJ 122) XMLSchemaValidator does not contribute element 's d
Performance problem under load Xerces with Weblogic 9 x
remove ignored memory allocation
Commented: (XERCESJ 1177) SAXXMLStreamReader doesn 't always report namesp
Commented: (XERCESJ 977) Null pointer exception during DOM parsing
Commented: (XERCESJ 1197) Code cleanup for org apache xml serialize
Commented: (XERCESJ 1201) Initial contribution for StAX Event API
Updated: (XERCESJ 1061) Regex "$ " and "^ " characters treated as special c
Commented: (XERCESJ 1199) SAXXMLStreamReader should attempt to register a
Commented: (XERCESJ 1061) Regex "$ " and "^ " characters treated as special
Updated: (XERCESJ 589) Bug with pattern restriction on long strings
StackOverflow
xerces Range unnecessarily not garbage collectable if not detached
Updated: (XERCESJ 1178) Error getting prefix for an attribute with no nam
Bug in xs:redefine
Commented: (XERCESJ 1204) Can not set XMLEntityResolver for LSParser
Updated: (XERCESJ 1253) Prototype for SoC2007 project "Add support for th
Updated: (XERCESJ 1259) Add SteamFilter Function to SoC2007 project "Add
Assigned: (XERCESJ 444) SAXException thrown by EntityResolver is reported
Google Summer of Code 2007
Xerces J and XInclude relative path issue
Assigned: (XERCESJ 206) Stack overflow when using a schema validation
Commented: (XERCESJ 1215) Restrictions involving two levels of substituti
Closed: (XERCESJ 1203) NPE in XMLDTDProcessor
non overriding equals methoda
Resolved: (XERCESJ 1079) invalid value returned for TOTALDIGITS facet in
Xerces AS3 port
Updated: (XERCESJ 325) Regular Expression; Pattern "| " clause order de
Updated: (XERCESJ 1196) Javadoc generation fails on Java SE 5 0
Closed: (XERCESJ 1202) DTD validation on XIncluded documents when the sch
Created: (XERCESJ 1124) Nonspecific schema error message
a bug in xerces
Updated: (XERCESJ 1201) Initial contribution for StAX Event API
Closed: (XERCESJ 1254) Empty uris in targetNamespace attribute not report
Links
Home
Oracle database error code
 
Search:  
Power your search with and, or, +, -, or "some phrase" operators.
for XIncludeHandler.handleIncludeElement included, was Re: xinclude

for XIncludeHandler.handleIncludeElement included, was Re: xinclude

2003-08-27       - By Peter McCracken





Hi Neil,

Thanks for the patch.  I've integrated it with my local copy -- I'll be
submitting a bunch of patches soon.  I'll be sure to include credit to you
for the change.  I've made a couple changes, foremost being that the
XMLResourceIdentifier is now used only if there is an fEntityResolver.  The
relevant section (sorry, not in patch form) look like:

if (fEntityResolver != null) {
   try {
       XMLResourceIdentifier resourceIdentifier =
           new XMLResourceIdentifierImpl(
               null,
               href,
               fDocLocation.getExpandedSystemId(),
               XMLEntityManager.expandSystemId(
                   href,
                   fDocLocation.getExpandedSystemId(),
                   false));

       includedSource =
           fEntityResolver.resolveEntity(resourceIdentifier);
   }
   catch (IOException e) {
       reportResourceError(
           "XMLResourceError",
           new Object[] { href, e.getMessage()});
       return false;
   }
}

Cheers,
Peter McCracken/Toronto/IBM



                                                                             
                                                             
                     "Neil Pitman"                                            
                                                             
                     <neil.pitman@(protected)        To:       <xerces-j-user@(protected)
.apache.org>                                                      
                     atico.ca>                cc:                            
                                                             
                                              Subject:  [PATCH] for
XIncludeHandler.handleIncludeElement included, was Re: xinclude funnies  
                     08/27/2003 01:15                                        
                                                             
                     PM                                                      
                                                             
                     Please respond to                                        
                                                             
                     xerces-j-user                                            
                                                             
                                                                             
                                                             
                                                                             
                                                             




Hi Bob,

Thanks for you counsel.  Indeed, it was my shortcuts are correct URI's that
lay at the root of my problem.  Everything fell in place with a "memory:"
in front of the URI's.

The org.apache.xerces.xinclude.XIncludeHandler.handleIncludeElement  is
still a problem though.  Here is the patch that I implemented to make it
work.  What is the protocol for submitting it for due consideration?  This
is definately not production quality (I don't know how to handle the
possible exception), but it illustrates the issue.



1009,1015c1009,1021
< XMLResourceIdentifier resourceIdentifier =
< new XMLResourceIdentifierImpl(
< null,
< href,
< fDocLocation.getBaseSystemId(),
< null);
<
---
> // XMLResourceIdentifier resourceIdentifier=
> XMLResourceIdentifier resourceIdentifier;
> try {
> resourceIdentifier =
> new XMLResourceIdentifierImpl(
> null,
> href,
> fDocLocation.getBaseSystemId(),
> XMLEntityManager.expandSystemId(href, fDocLocation.getBaseSystemId(),
false));
> } catch (MalformedURIException e1) {
> throw new XIncludeFatalError ("who knows",new Object[0]);
> }
> // null);
1044a1051
> fChildConfig.setEntityResolver(fEntityResolver);


_________________________________________
Neil Pitman
neil.pitman@(protected)
+1.514.863.5465
ICQ#: 21101052
_________________________________________
----- Original Message -----
From: Bob Foster
To: xerces-j-user@(protected) ; Neil Pitman
Sent: Saturday, August 23, 2003 3:10 PM
Subject: Re: xinclude funnies

Hi Neil,

I can't give you any answers about handleIncludeElement and the null ids,
though it sounds odd.

Your other troubles seem to be not using URIs properly. Unless Xerces is
misbehaving (and it's been broken before in this way, so it is a
possibility) it will construct an absolute URI from the base URI of the
document being parsed and the relative paths you are using in your
XInclude directory. (If you don't like what it does with relative paths,
use absolute paths. An absolute URI always has a scheme. But I'll go on
with the relative URI example.) If Xerces has a null base URI, it picks
some pseudo-random directory to be relative to - never one you might like
- so the moral of this story is make sure it knows the document location.

If you supply the EntityResolver, then you can make the base URI any
well-formed thing you want. In particular, you can invent your own scheme
for your EntityResolver to interpret. For example, if you give it
"memory:docname" as a base URI and a relative URI in the XInclude of
part1/subpart1/abc.xml, your resolver should get
"memory:part1/subpart1/abc.xml" as the URI to resolve, and so on.

Bob Foster
 ----- Original Message -----
 From: Neil Pitman
 To: xerces-j-user@(protected)
 Sent: Saturday, August 23, 2003 8:35 AM
 Subject: xinclude funnies

 I'll preface this with "I'm a bit new to digging around in Xerces and
 XInclude".  (Xerces always worked, but then I wasn't using new, beta
 features.)

 I'm trying to make Saxon 7.6.5 (XSLT) work with Xerces 2.5.0 (tarball not
 recent cvs) using XInclude and SAX with my own
 XMLEntityResolvers/EntityResolvers.  Saxon has it's own issues but that's
 for another mailinglist.  Once upon a time, I would preprocess my files
 with Elliot Rusty Harold's Xincluder from SourceForge into a separate
 XML.  Now I'd like to stream it in situ.  (that means that the input
 files are understandable by elharo's implementation so they are less
 suspect).  The trick is to change the OS based file references into
 arbitrary key references.

 Here is what I understand.  My questions follow.

 Soon after hitting the include element,
 org.apache.xerces.xinclude.XIncludeHandler.handleIncludeElement(
 XMLAttributes attributes) is called.  He creates a XMLResourceIdentifier
 with an explicit null public id and an explicit null expanded system id
 (the literal system id is retrieved from the href and represents a
 relative "file".  This is what I used to use with XIncluder).  When he
 determines that there is, indeed, a resolver, he calls
 EntityResolverWrapper holding my resolver.  First the wrapper checks that
 the public id and system id (the expanded one) are not null.  They are so
 he exits immediately.

 I "fixed" this using XMLEntityManager.expandSystemId() to produce the
 expanded system id in handleIncludeElement where the
 XMLResourceIdentifier is first created.

 Now with the EntityResolverWrapper getting a reasonable system id, my
 resolver gets a reasonable id and it attempts to load the first xinclude.
 The system id's are now a mixture of my keys and file bases.  My entity
 resolver is completely memory based so the file based URI's are
 confusing. For example:
 In the old system running from the file system there were three files
 file:///c:/work/proj/main.xml
 file:///c:/work/proj/part1/subpart1/abc.xml
 file:///c:/work/proj/part1/subpart1/helper.xml

 With the elharo xincluder, main.xml had <xi:include
 href="part1/subpart1/abc.xml"/> and abc.xml contained <xi:include
 href="methods.xml"/>.  My Resolver receives
 file:///c:/home/npitman/part1/subpart1/abc.xml. It gets the "
 file:///c:/home/npitman/" part from the running location of the
 application.  XMLEntityManager noticed that the base system id of
 "main.xml" was null so he assumed that he would need a real URI and that
 should be based on the current working directory.  In the memory-based
 situation, the hrefs are not so much URI's as keys.  I'm expecting just
 "part1/subpart1/abc.xml".

 This is what I find in the literal system id.  Unfortunately, this helps
 little because the first include xincludes a second.  This has an href of
 "helper.xml".  In my key system, I'd expect to see
 "part1/subpart1/helper.xml".

 Questions:

 1) What is going on in
 org.apache.xerces.xinclude.XIncludeHandler.handleIncludeElement?  Setting
 the id's to null can't be right.

 2) Is there a way to accept a blank base system id?

 I'd like href="part1/subpart1/abc.xml" within "main.xml" to try to
 resolve "part1/subpart1/abc.xml" and href="helper.xml" within
 "part1/subpart1/abc.xml" to try to resolve "part1/subpart1/help.xml".

 3) Alternately, is the there an extension mechanism, like the
 EntityResolver, to externalize expandSystemId()?

 I suppose that the fallback would be to set the base system id of
 main.xml to an abitrary scheme like "npitman://" and the look up
 "npitman://part1/subpart1/abc.xml" and
 "npitman://part1/subpart1/helper.xml"

 Thanks for your patience in reading.
 _________________________________________
 Neil Pitman
 neil.pitman@(protected)
 +1.514.863.5465
 ICQ#: 21101052
 _________________________________________



---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected)
For additional commands, e-mail: xerces-j-user-help@(protected)