The system id is not used when a byte stream or a string has been provided to the DOMLSInput object (see Wrapper4LSInput::makeStream to verify how the stream is built). However, the system id is used during parsing as a base path to resolve relative paths to DTDs or XMLSchema and to report the location of errors, so one should be always provided.

Alberto

Ben Griffin wrote:
It seems clear that I'm a little confused about the DOMLSInput class.

The docs http://xerces.apache.org/xerces-c/apiDocs-3/classDOMLSInput.htm

tell us: "This interface allows an application to encapsulate information about an input source in a single object, which may include a public identifier, a system identifier, a byte stream (possibly with a specified encoding), and/or a character stream."

This implies (to me) that the SystemId may be NULL, which makes sense to me, especially when loading up a document which is yet to be parsed.

But then the DOMLSInput.hpp file says

* <p>The system id is always required. The public id may be used to map * to another system id, but the system id must always be present as a fall
     * back.</p>
     *

The master document at http://www.w3.org/TR/DOM-Level-3-LS/load-save.html
says:

The system identifier, a URI reference [IETF RFC 2396], for this input source. The system identifier is optional if there is a byte stream, a character stream, or string data.

So - there seems to be a difference of opinion. Anyone care to explain what is going on?


Reply via email to