This section defines a set of interfaces for loading and saving
document objects as defined in [DOM Level 2 Core] or
newer. The functionality specified in this section (the Load
and Save functionality) is sufficient to allow software
developers and web script authors to load and save XML content
inside conforming products. The DOM Load and Save API also allows filtering of XML content
using only DOM API calls; access and manipulation of the
Document is defined in [DOM Level 2 Core] or
newer.
The proposal for loading is influenced by the Java APIs for XML Processing [JAXP] and by SAX2 [SAX].
The list of interfaces involved with the Loading and Saving XML documents is:
DOMImplementationLS -- A new
DOMImplementation interface that provides the
factory methods for creating the objects required for loading
and saving.
DOMParser -- A parser interface.
DOMInput -- Encapsulate information about the XML
document to be loaded.
DOMResourceResolver -- During loading, provides a
way for applications to redirect references to external
entities.
DOMParserFilter -- Provide the ability to examine
and optionally remove Element nodes as they are being
processed during the parsing of a document.
DOMSerializer -- An interface for writing out or
serializing DOM documents.
DOMOutput -- Encapsulate information about the
XML document to be serialized.
DOMSerializerFilter -- Provide the ability to
examine and optionally remove nodes as they are being
processed during the serialization of a document.
DocumentLS -- Provides a client or browser style
interface for loading and saving.
ElementLS -- Provides a user convenient mechanism
by which the children of an element can be serialized to a
string, or replaced by the result of parsing a provided
string.
To ensure interoperability, this specification specifies the following basic types used in various DOM modules. Even though the DOM uses the basic types in the interfaces, bindings may use different types and normative bindings are only given for Java and ECMAScript in this specification.
DOMInputStream typeThis type is used to represent a sequence of input bytes.
A DOMInputStream represents a reference to a
byte stream source of an XML input.
typedef Object DOMInputStream;
Note:
For Java, DOMInputStream is bound to the
java.io.InputStream type. For ECMAScript,
DOMInputStream is bound to Object.
DOMOutputStream typeThis type is used to represent a sequence of output bytes.
A DOMOutputStream represents a byte
stream destination for the XML output.
typedef Object DOMOutputStream;
Note:
For Java, DOMOutputStream is bound to the
java.io.OutputStream type. For ECMAScript,
DOMOutputStream is bound to Object.
DOMReader typeThis type is used to represent a sequence of input characters in 16-bit units. The encoding used for the characters is UTF-16, as defined in [Unicode] and Amendment 1 of [ISO/IEC 10646]).
A DOMReader represents a character
stream for the XML input.
typedef Object DOMReader;
Note:
For Java, DOMReader is bound to the
java.io.Reader type. For ECMAScript,
DOMReader is NOT bound, and
therefore as no recommended meaning in ECMAScript.
DOMWriter typeThis type is used to represent a sequence of output characters in 16-bit units. The encoding used for the characters is UTF-16, as defined in [Unicode] and Amendment 1 of [ISO/IEC 10646]).
A DOMWriter represents a character
stream for the XML input.
typedef Object DOMWriter;
Note:
For Java, DOMWriter is bound to the
java.io.Writer type. For ECMAScript,
DOMWriter is NOT bound, and
therefore as no recommended meaning in ECMAScript.
The interface within this section is considered fundamental, and must be fully implemented by all conforming implementations of the DOM Load and Save module.
A DOM application may use the hasFeature(feature,
version) method of the DOMImplementation
interface with parameter values "LS" (or
"LS-Async") and "3.0" (respectively)
to determine whether or not these interfaces are supported by
the implementation. In order to fully support them, an
implementation must also support the "Core" feature defined in
[DOM Level 2 Core].
A DOM application may use the hasFeature(feature,
version) method of the DOMImplementation
interface with parameter values "LS-Async" and
"3.0" (respectively) to determine whether or not
the asynchronous mode is supported by the implementation. In
order to fully support the asynchronous mode, an
implementation must also support the "LS" feature
defined in this section.
For additional information about conformance, please see the DOM Level 3 Core specification [DOM Level 3 Core].
DOMImplementationLS contains the factory methods for
creating Load and Save objects.
The expectation is that an instance of the
DOMImplementationLS interface can be obtained by
using binding-specific casting methods on an instance of the
DOMImplementation interface or, if the
Document supports the feature "Core"
version "3.0" defined in [DOM Level 3 Core], by using the method
DOMImplementation.getFeature with parameter values
"LS" (or "LS-Async") and
"3.0" (respectively).
interface DOMImplementationLS { // DOMImplementationLSMode const unsigned short MODE_SYNCHRONOUS = 1; const unsigned short MODE_ASYNCHRONOUS = 2; DOMParser createDOMParser(in unsigned short mode, in DOMString schemaType) raises(DOMException); DOMSerializer createDOMSerializer(); DOMInput createDOMInput(); };
Integer parser mode constants.
MODE_ASYNCHRONOUSDOMParser.MODE_SYNCHRONOUSDOMParser.createDOMInput|
The newly created input object. |
createDOMParserDOMParser. The newly constructed
parser may then be configured by means of its
DOMConfiguration object, and used to parse documents by
means of its parse method. mode of type
unsigned shortmode argument is either
MODE_SYNCHRONOUS or MODE_ASYNCHRONOUS,
if mode is MODE_SYNCHRONOUS then the
DOMParser that is created will operate in
synchronous mode, if it's MODE_ASYNCHRONOUS then
the DOMParser that is created will operate in
asynchronous mode. schemaType of type
DOMStringDocument using the newly created
DOMParser. Note that no lexical checking is
done on the absolute URI. In order to create a
DOMParser for any kind of schema types
(i.e. the DOMParser will be free to use any schema found),
use the value null.
Note:
For W3C XML Schema [XML Schema Part 1], applications must use the value
"http://www.w3.org/2001/XMLSchema". For XML
DTD [XML 1.0], applications
must use the value
"http://www.w3.org/TR/REC-xml". Other Schema
languages are outside the scope of the W3C and therefore
should recommend an absolute URI in order to use this
method.
|
The newly created Note:
By default, the newly created |
|
NOT_SUPPORTED_ERR: Raised if the requested mode or schema type is not supported. |
createDOMSerializerDOMSerializer object.
|
The newly created Note:
By default, the newly created |
An interface to an object that is able to build, or augment, a DOM tree from various input sources.
DOMParser provides an API for parsing XML and
building the corresponding DOM document structure. A
DOMParser instance can be obtained by invoking the
DOMImplementationLS.createDOMParser() method.
As specified in [DOM Level 3 Core], when a document is first made available via the DOMParser:
Text node for each block of
text. The Text nodes are in "normal" form: only
structure (e.g. elements, comments, processing instructions,
CDATA sections, and entity references) separates
Text nodes, i.e., there are neither adjacent
nor empty Text nodes.
value and
nodeValue attributes of an Attr node
initially return the XML 1.0 normalized
value. However, if the parameters "validate-if-schema"
and "datatype-normalization"
are set to true, depending on the attribute
normalization used, the attribute values may differ from the
ones obtained by the XML 1.0 attribute normalization. If the parameters
data-type-normalization is set to
false, the XML 1.0 attribute normalization is
guaranteed to occur, and if the attributes list does not
contain namespace declarations, the attributes
attribute on Element node represents the property
[attributes] defined in [XML Information set].
Asynchronous DOMParser objects are expected to also
implement the events::EventTarget interface so that
event listeners can be registered on asynchronous
DOMParser objects.
Events supported by asynchronous DOMParser objects are:
DOMParser finishes to load the
document. See also the definition of the
LSLoadEvent interface.
DOMParser signals a progress as a document
is parsed. See also the definition of
the LSProgressEvent interface.
Note:
All events defined in this specification use the namespace URI
"http://www.w3.org/2002/DOMLS".
While parsing an input source, errors are reported to the
application through the error handler
(DOMParser.config's "error-handler"
parameter). This specification does in no way try to define all
possible errors that can occur while parsing XML, or any other
markup, but some common error cases are defined. The types
(DOMError.type) of errors and warnings defined by
this specification are:
"unsupported-media-type" [fatal]true and an unsupported media type
is encountered.
"unsupported-encoding" [fatal]"doctype-not-allowed" [fatal]true and a doctype is encountered.
"unknown-character-denormalization" [fatal]false and a character is
encountered for which the processor cannot determine the
normalization properties.
"unbound-namespace-in-entity" [warning]true and an unbound namespace
prefix is encounterd in an entity declaration.
"pi-base-uri-not-preserved" [warning]false and the following XML file is
parsed:
<!DOCTYPE root [ <!ENTITY e SYSTEM 'subdir/myentity.ent' ]> <root> &e; </root>
subdir/myentity.ent looks like this:
<one> <two/> </one> <?pi 3.14159?> <more/>
In addition to raising the defined errors and warnings, implementations are expected to raise implementation specific errors and warnings for any other error and warning cases such as IO errors (file not found, permission denied,...), XML well-formedness errors, and so on.
interface DOMParser { readonly attribute DOMConfiguration config; attribute DOMParserFilter filter; readonly attribute boolean async; readonly attribute boolean busy; Document parse(in DOMInput is) raises(DOMException); Document parseURI(in DOMString uri) raises(DOMException); // ACTION_TYPES const unsigned short ACTION_APPEND_AS_CHILDREN = 1; const unsigned short ACTION_REPLACE_CHILDREN = 2; const unsigned short ACTION_INSERT_BEFORE = 3; const unsigned short ACTION_INSERT_AFTER = 4; const unsigned short ACTION_REPLACE = 5; Node parseWithContext(in DOMInput input, in Node context, in unsigned short action) raises(DOMException); void abort(); };
A set of possible actions for the parseWithContext
method.
ACTION_APPEND_AS_CHILDRENElement or a
DocumentFragment.
ACTION_INSERT_AFTERElement or a DocumentFragment.
ACTION_INSERT_BEFOREElement or a DocumentFragment.
ACTION_REPLACEElement or a DocumentFragment.
ACTION_REPLACE_CHILDRENElement, a
Document, or a DocumentFragment.
async of type boolean, readonlytrue if the DOMParser is asynchronous,
false if it is synchronous.
busy of type boolean, readonlytrue if the DOMParser is currently
busy loading a document, otherwise false.
config of type DOMConfiguration, readonlyDOMConfiguration object used when parsing an
input source. This DOMConfiguration is specific to
the parse operation and no parameter values from this
DOMConfiguration object are passed automatically to
the DOMConfiguration object on the
Document that is created, or used, by the parse
operation. The DOM application is responsible for passing any
needed parameter values from this DOMConfiguration
object to the DOMConfiguration object referenced by
the Document object.
DOMConfiguration objects for
DOMParser adds or modifies the following
parameters:
"charset-overrides-xml-encoding"trueDOMInput overrides any encoding from
the protocol.
false"disallow-doctype"truefalse"ignore-unknown-character-denormalizations"truefalse"infoset"DOMConfiguration for
a description of this parameter. Unlike in [DOM Level 3 Core], this parameter will default to
true for DOMParser.
"namespaces"truefalse"supported-media-types-only"truefalsefalse.
filter of type DOMParserFilterDOMConfiguration parameters have been applied. For
example, if "validate"
is set to true, the validation is done before
invoking the filter.
abortDOMParser. If the
DOMParser is currently not busy, a call to this
method does nothing.
parseDOMInput.
|
If the |
|
INVALID_STATE_ERR: Raised if the |
parseURIuri of type
DOMString
|
If the |
|
INVALID_STATE_ERR: Raised if the |
parseWithContextDOMInput and insert the content into an existing
document at the position specified with the
context and action arguments. When
parsing the input stream, the context node is used for
resolving unbound namespace prefixes. The context node's
ownerDocument node (or the node itself if the
node of type DOCUMENT_NODE) is used to resolve
default attributes and entity references.
Document node and the
action is ACTION_REPLACE_CHILDREN, then the
document that is passed as the context node will be changed
such that it's xmlEncoding,
documentURI, xmlVersion,
actualEncoding, xmlStandalone, and all
other such attributes are set to what they would be set to if
the input source was parsed using
DOMParser.parse().
DOMParser is asynchronous then the
insertion of the resulting DOM structure is atomic, e.g. the
whole structure is inserted only once the whole input stream
is completely parsed without errors.
ErrorHandler instance associated with the
"error-handler"
parameter of the DOMConfiguration.
parseWithContext, the values of the
following configuration parameters will be ignored and their
default values will always be used instead: "validate",
"validate-if-schema",
and "whitespace-in-element-content".
input of type
DOMInputDOMInput from which the source document
is to be read. The source document must be an XML
fragment, i.e. anything except a complete XML document
(except in the case where the context node of type
DOCUMENT_NODE, and the action is
ACTION_REPLACE_CHILDREN), a DOCTYPE (internal
subset), entity declaration(s), notation declaration(s),
or XML or text declaration(s).
context of type
NodeDocument
node, a DocumentFragment node, or a node of a
type that is allowed as a child of an Element
node, e.g. it cannot be an Attribute node.
action of type
unsigned shortACTION_TYPES above.
|
Return the node that is the result of the parse operation. If the result is more than one top-level node, the first one is returned. |
|
NOT_SUPPORTED_ERR: Raised if the NO_MODIFICATION_ALLOWED_ERR: Raised if the context node is a read only node.
INVALID_STATE_ERR: Raised if the |
This interface represents an input source for data.
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), a base URI, and/or a character stream.
The exact definitions of a byte stream and a character stream are binding dependent.
The application is expected to provide objects that implement
this interface whenever such objects are needed. The application
can either provide its own objects that implement this
interface, or it can use the generic factory method
DOMImplementationLS.createDOMInput() to create
objects that implement this interface.
The DOMParser will use the
DOMInput object to determine how to read
data. The DOMParser will look at the different
inputs specified in the DOMInput in the
following order to know which one to read from, the first one
through which data is available will be used:
DOMInput.characterStream
DOMInput.byteStream
DOMInput.stringData
DOMInput.systemId
DOMInput.publicId
DOMInput objects belong to the application. The DOM
implementation will never modify them (though it may make copies
and modify the copies, if necessary).
interface DOMInput { // Depending on the language binding in use, // this attribute may not be available. attribute DOMReader characterStream; attribute DOMInputStream byteStream; attribute DOMString stringData; attribute DOMString systemId; attribute DOMString encoding; attribute DOMString publicId; attribute DOMString baseURI; attribute boolean certified; };
baseURI of type DOMStringsystemId
to an absolute URI.
byteStream of type DOMInputStreamcertified of type booleancharacterStream of type DOMReaderencoding of type DOMStringpublicId of type DOMStringstringData of type DOMStringsystemId of type DOMStringDOMParser will
only attempt to fetch the resource identified by the URI
reference only if there is no other input available in the
input source).
encoding attribute.
baseURI as
the base, if that fails, the behavior is implementation
dependent.
DOMResourceResolver provides a way for applications
to redirect references to external resources.
Applications needing to implement custom handling for external
resources can implement this interface and register their
implementation by setting the resourceResolver
attribute of the DOMParser.
The DOMParser will then allow the application to
intercept any external entities (including the external DTD
subset and external parameter entities) before including them.
Many DOM applications will not need to implement this interface, but it will be especially useful for applications that build XML documents from databases or other specialized input sources, or for applications that use URN's.
Note:
DOMResourceResolver is based on the SAX2 [SAX] EntityResolver interface.
interface DOMResourceResolver { DOMInput resolveResource(in DOMString publicId, in DOMString systemId, in DOMString baseURI); };
resolveResourceDOMParser will call this method before
opening any external resource except the top-level document
entity (including the external DTD subset, external entities
referenced within the DTD, and external entities referenced
within the document element); the application may request that
the DOMParser resolve the resource itself, that
it use an alternative URI, or that it use an entirely
different input source.
DOMParser
must resolve it fully before calling this method.
publicId of type
DOMStringnull if no public identifier
was supplied or if the resource is not an entity.
systemId of type
DOMStringbaseURI of type
DOMStringnull if there is no base URI.
DOMParserFilters provide applications the ability to
examine nodes as they are being constructed while parsing.
As each node is examined, it may be modified or removed,
or the entire parse may be terminated early.
At the time any of the filter methods are called by the parser,
the owner Document and DOMImplementation objects exist and are
accessible. The document element is never passed to the
DOMParserFilter methods, i.e. it is not possible to
filter out the document element. The Document,
DocumentType, Notation, and
Entity nodes are not passed to the
acceptNode method on the filter.
All validity checking while reading a document occurs on the source document as it appears on the input stream, not on the DOM document as it is built in memory. With filters, the document in memory may be a subset of the document on the stream, and its validity may have been affected by the filtering.
All default content, including default attributes, must be passed to the filter methods.
The DOMParser ignores any exception raised in the
filter.
interface DOMParserFilter { // Constants returned by startElement and acceptNode const short FILTER_ACCEPT = 1; const short FILTER_REJECT = 2; const short FILTER_SKIP = 3; const short FILTER_INTERRUPT = 4; unsigned short startElement(in Element element); unsigned short acceptNode(in Node node); readonly attribute unsigned long whatToShow; };
Constants returned by startElement and
acceptNode.
FILTER_ACCEPTFILTER_INTERRUPTFILTER_REJECTFILTER_SKIPwhatToShow of type unsigned long, readonlyDOMParser what types of nodes to show
to the filter. See NodeFilter for definition of
the constants. The constants SHOW_ATTRIBUTE,
SHOW_DOCUMENT, SHOW_DOCUMENT_TYPE,
SHOW_NOTATION, SHOW_ENTITY, and
SHOW_DOCUMENT_FRAGMENT are meaningless here,
those nodes will never be passed to a
DOMParserFilter.
acceptNodenode of type
Node
|
|
startElementElement start tag has been scanned, but before
the remainder of the Element is processed. The
intent is to allow the element, including any children, to be
efficiently skipped. Note that only element nodes are passed
to the startElement function.
startElement for
filtering will include all of the Element's attributes,
but none of the children nodes. The Element may not yet be
in place in the document being constructed (it may not have
a parent node.) startElement filter function may access or change the
attributes for the Element. Changing Namespace declarations will
have no effect on namespace resolution by the parser.element of type
Element
|
Returning any other values will result in unspecified behavior. |
This interface represents a progress event object that
notifies the application about progress as a document is
parsed. It extends the Event interface
defined in [DOM Level 3 Events].
interface LSProgressEvent : events::Event { readonly attribute DOMInput input; readonly attribute unsigned long position; readonly attribute unsigned long totalSize; };
input of type DOMInput, readonlyposition of type unsigned long, readonlytotalSize of type unsigned long, readonlyThis interface represents a load event object that signals the completion of a document load.
interface LSLoadEvent : events::Event { readonly attribute Document newDocument; readonly attribute DOMInput input; };
input of type DOMInput, readonlynewDocument of type Document, readonly
DOMSerializer provides an API for serializing
(writing) a DOM document out into XML. The XML data is written to
a string or an output stream.
During serialization of XML data, namespace fixup is done as
defined in [DOM Level 3 Core], Appendix B. [DOM Level 2 Core] allows empty strings as a real namespace
URI. If the namespaceURI of a Node is
empty string, the serialization will treat them as
null, ignoring the prefix if any.
DOMSerializer accepts any node type for serialization.
For nodes of type Document or Entity,
well-formed XML will be created when possible (well-formedness
is guaranteed if the document or entity comes from a parse
operation and is unchanged since it was created). The serialized
output for these node types is either as a XML document or an
External XML Entity, respectively, and is acceptable input for
an XML parser. For all other types of nodes the serialized form
is not specified, but should be something useful to a human for
debugging or diagnostic purposes.
Within a Document, DocumentFragment, or
Entity being serialized, Nodes are
processed as follows
Document nodes are written, including the XML
declaration (unless the parameter "xml-declaration"
is set to false) and a DTD subset, if one exists
in the DOM. Writing a Document node serializes
the entire document.
Entity nodes, when written directly by
DOMSerializer.write, outputs the entity expansion
but no namespace fixup is done. The resulting output will be
valid as an external entity.
EntityReference nodes are serialized as an entity
reference of the form "&entityName;" in the
output. Child nodes (the expansion) of the entity reference
are ignored.
true, CDATA sections
are split, and the unrepresentable characters are serialized
as numeric character references in ordinary content. The
exact position and number of splits is not specified.
false,
unrepresentable characters in a CDATA section are reported
as "invalid-data-in-cdata-section" errors. The
error is not recoverable - there is no mechanism for
supplying alternative characters and continuing with the
serialization.
DocumentFragment nodes are serialized by
serializing the children of the document fragment in the order
they appear in the document fragment.
Note:
The serialization of a Node does not always
generate a well-formed
XML document, i.e. a DOMParser might throw fatal
errors when parsing the resulting serialization.
Within the character data of a document (outside of markup), any characters that cannot be represented directly are replaced with character references. Occurrences of '<' and '&' are replaced by the predefined entities < and &. The other predefined entities (>, ', and ") might not be used, except where needed (e.g. using > in cases such as ']]>'). Any characters that cannot be represented directly in the output character encoding are serialized as numeric character references.
To allow attribute values to contain both single and double quotes, the apostrophe or single-quote character (') may be represented as "'", and the double-quote character (") as """. New line characters and other characters that cannot be represented directly in attribute values in the output character encoding are serialized as a numeric character reference.
Within markup, but outside of attributes, any occurrence of a
character that cannot be represented in the output character
encoding is reported as an error. An example would be serializing
the element <LaCañada/> with encoding="us-ascii".
When requested by setting the parameter "normalize-characters"
on DOMSerializer to true, character normalization
is performed according to the rules defined in [CharModel] on all data to be serialized, both markup and
character data. The character normalization process affects only
the data as it is being written; it does not alter the DOM's
view of the document after serialization has completed.
When outputting unicode data, whether or not a byte order mark is serialized, or if the output is big-endian or little-endian, is implementation dependent.
Namespaces are fixed up during serialization, the serialization process will verify that namespace declarations, namespace prefixes and the namespace URI's associated with elements and attributes are consistent. If inconsistencies are found, the serialized form of the document will be altered to remove them. The method used for doing the namespace fixup while serializing a document is the algorithm defined in Appendix B.1, "Namespace normalization", of [DOM Level 3 Core].
Any changes made affect only the namespace prefixes and declarations appearing in the serialized data. The DOM's view of the document is not altered by the serialization operation, and does not reflect any changes made to namespace declarations or prefixes in the serialized output.
While serializing a document, the parameter "discard-default-content" controls whether or not non-specified data is serialized.
While serializing, errors are reported to the application
through the error handler (DOMSerializer.config's
"error-handler"
parameter). This specification does in no way try to define all
possible errors that can occur while serializing a DOM node, but
some common error cases are defined. The types
(DOMError.type) of errors and warnings defined by
this specification are:
"invalid-data-in-cdata-section" [fatal]false and invalid data is
encountered in a CDATA section.
"unsupported-encoding" [fatal]"unbound-namespace-in-entity" [warning]true and an unbound namespace
prefix is encounterd in a referenced entity.
"no-output-specified" [fatal]DOMOutput if no
output is specified in the DOMOutput.
In addition to raising the defined errors and warnings, implementations are expected to raise implementation specific errors and warnings for any other error and warning cases such as IO errors (file not found, permission denied,...) and so on.
interface DOMSerializer { readonly attribute DOMConfiguration config; attribute DOMString newLine; attribute DOMSerializerFilter filter; boolean write(in Node node, in DOMOutput destination); boolean writeURI(in Node node, in DOMString URI); DOMString writeToString(in Node node) raises(DOMException); };
config of type DOMConfiguration, readonlyDOMConfiguration object used by the
DOMSerializer when serializing a DOM node.
DOMConfiguration objects for
DOMSerializer adds, or modifies, the following
parameters:
"canonical-form"truetrue will set the parameter "format-pretty-print"
to false.
false"discard-default-content"trueAttr.specified attribute to
decide what attributes should be discarded. Note
that some implementations might use whatever
information available to the implementation
(i.e. XML schema, DTD, the
Attr.specified attribute, and so on) to
determine what attributes and content to discard if
this parameter is set to true.
false"format-pretty-print"truetrue will set the
parameter "canonical-form"
to false.
false"ignore-unknown-character-denormalizations"
true"unknown-character-denormalization"
warning (instead of raising an error, if this
parameter is not set) and ignore any possible
denormalizations caused by these characters.
false"normalize-characters"DOMConfiguration in [DOM Level 3 Core]. Unlike in the Core, the default value for
this parameter is true. While DOM
implementations are not required to support fully
normalizing the characters in the document according to
the rules defined in [CharModel] supplemented
by the definitions of relevant constructs from Section
2.13 of [XML 1.1], this parameter must
be activated by default if supported.
"xml-declaration"trueDocument, Element,
or Entity node is serialized, the XML
declaration, or text declaration, should be
included. The version
(Document.xmlVersion if the document
is a Level 3 document, and the version is
non-null, otherwise use the value "1.0"), and
possibly an encoding
(DOMSerializer.encoding, or
Document.actualEncoding or
Document.xmlEncoding if the document
is a Level 3 document) is specified in the
serialized XML declaration.
false"xml-declaration-needed" warning if
this will cause problems (i.e. the serialized data
is of an XML version other than [XML 1.0],
or an encoding would be needed to be able to
re-parse the serialized data).
false.
filter of type DOMSerializerFilterDOMConfiguration parameters have been
applied. For example, CDATA sections are passed to the filter
even if "cdata-sections"
is set to false.
newLine of type DOMStringnullnull.writeDOMSerializer interface. The
output is written to the supplied DOMOutput.
DOMOutput, the encoding is found
by looking at the encoding information that is reachable through
the DOMOutput and the item to be written (or its
owner document) in this order:
DOMOutput.encoding,
Document.actualEncoding,
Document.xmlEncoding.
DOMOutput, a
"no-output-specified" error is raised.
node of type
Nodedestination of type
DOMOutput
|
Returns |
writeToStringDOMSerializer interface. The
output is written to a DOMString that is returned
to the caller (this method completely ignores all the encoding
information available).
node of type
Node
|
Returns the serialized data, or |
|
DOMSTRING_SIZE_ERR: Raised if the resulting string is too long to
fit in a |
writeURIDOMSerializer interface. The
output is written to the supplied URI.
Document.actualEncoding,
Document.xmlEncoding.
node of type
NodeURI of type
DOMString
|
Returns |
This interface represents an output destination for data.
This interface allows an application to encapsulate information about an output destination in a single object, which may include a URI, a byte stream (possibly with a specified encoding), a base URI, and/or a character stream.
The exact definitions of a byte stream and a character stream are binding dependent.
The application is expected to provide objects that implement
this interface whenever such objects are needed. The application
can either provide its own objects that implement this
interface, or it can use the generic factory method
DOMImplementationLS.createDOMOutput() to create
objects that implement this interface.
The DOMSerializer will use the
DOMOutput object to determine where to serialize
the output to. The DOMSerializer will look at the
different outputs specified in the DOMOutput in the
following order to know which one to output to, the first one
that data can be output to will be used:
DOMOutput objects belong to the application. The
DOM implementation will never modify them (though it may make
copies and modify the copies, if necessary).
interface DOMOutput { // Depending on the language binding in use, // this attribute may not be available. attribute DOMWriter characterStream; attribute DOMOutputStream byteStream; attribute DOMString systemId; attribute DOMString encoding; };
byteStream of type DOMOutputStreamcharacterStream of type DOMWriterencoding of type DOMStringsystemId of type DOMStringencoding attribute.
DOMSerializerFilters provide applications the
ability to examine nodes as they are being serialized and decide
what nodes should be serialized or not. The
DOMSerializerFilter interface is based on the
NodeFilter interface defined in [DOM Level 2 Traversal and Range].
The Document, DocumentType,
DocumentFragment, Attr,
Notation, and Entity nodes are not
passed to the filter.
The result of any attempt to modify a node passed to a
DOMSerializerFilter is implementation dependent.
interface DOMSerializerFilter : traversal::NodeFilter { readonly attribute unsigned long whatToShow; };
whatToShow of type unsigned long, readonlyDOMSerializer what types of nodes to show to
the filter. See NodeFilter for definition of the
constants. The constants SHOW_ATTRIBUTE,
SHOW_DOCUMENT, SHOW_DOCUMENT_TYPE,
SHOW_NOTATION, SHOW_ATTRIBUTE, and
SHOW_DOCUMENT_FRAGMENT are meaningless here, those
nodes will never be passed to a
DOMSerializerFilter.
The interfaces defined in this section provide no direct functionality that cannot be achieved with the load and save interfaces defined in the earlier sections of this specification. These interfaces are defined for developer convenience only, and supporting them is optional.
These interfaces are not nearly as flexible as the ones defined earlier in this specification, for example, no configuration parameters are settable when calling these methods, and the values of all configuration parameters are predefined.
The DocumentLS interface provides a mechanism by
which the content of a document can be serialized, or replaced
with the DOM tree produced when loading a URI, or parsing a
string.
If the DocumentLS interface is supported, the
expectation is that an instance of the DocumentLS
interface can be obtained by using binding-specific casting
methods on an instance of the Document interface,
or by using the method Node.getFeature with
parameter values "DocumentLS" and "3.0"
(respectively) on an Document, if the
Document supports the feature "Core"
version "3.0" defined in [DOM Level 3 Core]
This interface is optional. If supported, implementations must
support version "3.0" of the feature
"DocumentLS".
interface DocumentLS { attribute boolean async; // raises(DOMException) on setting void abort(); boolean load(in DOMString uri); boolean loadXML(in DOMString source); DOMString saveXML(in Node node) raises(DOMException); };
async of type booleanDocumentLS.load()
should be synchronous or asynchronous. When the async
attribute is set to true the load method returns
control to the caller before the document has completed
loading. The default value of this attribute is
true.
|
NOT_SUPPORTED_ERR: Raised if the implementation doesn't support the mode the attribute is being set to. |
abortload being invoked the loading and parsing
is immediately aborted. The possibly partial result of parsing
the document is discarded and the document is cleared.
loadEvent.targetNode will be the document, not an
element) will be dispatched on the document. If an error
occurs, an implementation dependent "error" event will be
dispatched on the document. If this method is called on a
document that is currently loading, the current load is
interrupted and the new URI load is initiated.
DOMParser interface are assumed to have their
default values with the exception that the parameters
"entities", "normalize-characters",
"check-character-normalization" are set to
"false".
DOMParser.parseWithContext with an
input stream referencing the URI that was passed to this call,
the document as the context node, and the action
ACTION_REPLACE_CHILDREN.
uri of type
DOMString
|
If async is set to |
loadXMLDOMParser interface are
assumed to have their default values when invoking this
method.
DOMParser.parseWithContext with an
input stream containing the string passed to this call, the
document as the context node, and the action
ACTION_REPLACE_CHILDREN.
source of type
DOMString
|
|
saveXMLDOMSerializer interface are
assumed to have their default values when invoking this
method.
DOMSerializer.writeToString with the
document as the node to write.
node of type
Nodenull the
whole document is serialized, if it's non-null the given
node is serialized.
|
The serialized document or |
|
WRONG_DOCUMENT_ERR: Raised if the node passed in as the node parameter is from an other document. |
The ElementLS interface provides a convenient
mechanism by which the children of an element can be serialized
to a string, or replaced by the result of parsing a provided
string.
If the ElementLS interface is supported, the
expectation is that an instance of the ElementLS
interface can be obtained by using binding-specific casting
methods on an instance of the Element interface, or
by using the method Node.getFeature with
parameter values "ElementLS" and "3.0"
(respectively) on an Element, if the
Element supports the feature "Core"
version "3.0" defined in [DOM Level 3 Core].
This interface is optional. If supported, implementations must
support version "3.0" of the feature
"ElementLS".
interface ElementLS { attribute DOMString markupContent; };
markupContent of type DOMStringDOMSerializer.writeToString() on all children in
document order and appending the result of the individual
results to a single string that is then returned as the value
of this attribute.
DOMParser.parseWithContext() passing in the
provided string (through the input source argument), the
Element, and the action
ACTION_REPLACE_CHILDREN. If an error occurs
while parsing the provided string, the Element's
owner document's error handler will be called, and the
Element is left with no children.
DOMConfiguration object
have their default values.