ALKMaps.Format.XML

Read and write XML.  For cross-browser XML generation, use methods on an instance of the XML format class instead of on <code>document<end>.  The DOM creation and traversing methods exposed here all mimic the W3C XML DOM methods.  Create a new parser with the ALKMaps.Format.XML constructor.

Inherits from

Summary
ALKMaps.Format.XMLRead and write XML.
Properties
namespaces{Object} Mapping of namespace aliases to namespace URIs.
namespaceAlias{Object} Mapping of namespace URI to namespace alias.
defaultPrefix{String} The default namespace alias for creating element nodes.
readersContains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
writersAs a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
xmldom{XMLDom} If this browser uses ActiveX, this will be set to a XMLDOM object.
Constructor
ALKMaps.Format.XMLConstruct an XML parser.
Functions
destroyClean up.
setNamespaceSet a namespace alias and URI for the format.
writeSerialize a DOM node into a XML string.
createElementNSCreate a new element with namespace.
createTextNodeCreate a text node.
getElementsByTagNameNSGet a list of elements on a node given the namespace URI and local name.
getAttributeNodeNSGet an attribute node given the namespace URI and local name.
getAttributeNSGet an attribute value given the namespace URI and local name.
getChildValueGet the textual value of the node if it exists, or return an optional default string.
isSimpleContentTest if the given node has only simple content (i.e.
contentTypeDetermine the content type for a given node.
hasAttributeNSDetermine whether a node has a particular attribute matching the given name and namespace.
setAttributeNSAdds a new attribute or changes the value of an attribute with the given namespace and name.
createElementNSPlusShorthand for creating namespaced elements with optional attributes and child text nodes.
setAttributesSet multiple attributes given key value pairs from an object.
readNodeShorthand for applying one of the named readers given the node namespace and local name.
readChildNodesShorthand for applying the named readers to all children of a node.
writeNodeShorthand for applying one of the named writers and appending the results to a node.
getChildElGet the first child element.
getNextElGet the next sibling element.
getThisOrNextElReturn this node or the next element node.
lookupNamespaceURITakes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
getXMLDocGet an XML document for nodes that are not supported in HTML (e.g.
ALKMaps.Format.XML.lookupNamespaceURITakes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
Properties
ALKMaps.Format.XML.document{XMLDocument} XML document to reuse for creating non-HTML compliant nodes, like document.createCDATASection.

Properties

namespaces

{Object} Mapping of namespace aliases to namespace URIs.  Properties of this object should not be set individually.  Read-only.  All XML subclasses should have their own namespaces object.  Use setNamespace to add or set a namespace alias after construction.

namespaceAlias

{Object} Mapping of namespace URI to namespace alias.  This object is read-only.  Use setNamespace to add or set a namespace alias.

defaultPrefix

{String} The default namespace alias for creating element nodes.

readers

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.  The function will be applied in the scope of this parser with two arguments: the node being read and a context object passed from the parent.

writers

As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.

xmldom

{XMLDom} If this browser uses ActiveX, this will be set to a XMLDOM object.  It is not intended to be a browser sniffing property.  Instead, the xmldom property is used instead of <code>document<end> where namespaced node creation methods are not supported.  In all other browsers, this remains null.

Constructor

ALKMaps.Format.XML

Construct an XML parser.  The parser is used to read and write XML.  Reading XML from a string returns a DOM element.  Writing XML from a DOM element returns a string.

Parameters

options{Object} Optional object whose properties will be set on the object.

Functions

destroy

destroy: function()

Clean up.

setNamespace

setNamespace: function(alias,
uri)

Set a namespace alias and URI for the format.

Parameters

alias{String} The namespace alias (prefix).
uri{String} The namespace URI.

write

write: function(node)

Serialize a DOM node into a XML string.

Parameters

node{DOMElement} A DOM node.

Returns

{String} The XML string representation of the input node.

createElementNS

createElementNS: function(uri,
name)

Create a new element with namespace.  This node can be appended to another node with the standard node.appendChild method.  For cross-browser support, this method must be used instead of document.createElementNS.

Parameters

uri{String} Namespace URI for the element.
name{String} The qualified name of the element (prefix:localname).

Returns

{Element} A DOM element with namespace.

createTextNode

createTextNode: function(text)

Create a text node.  This node can be appended to another node with the standard node.appendChild method.  For cross-browser support, this method must be used instead of document.createTextNode.

Parameters

text{String} The text of the node.

Returns

{DOMElement} A DOM text node.

getElementsByTagNameNS

getElementsByTagNameNS: function(node,
uri,
name)

Get a list of elements on a node given the namespace URI and local name.  To return all nodes in a given namespace, use ‘*’ for the name argument.  To return all nodes of a given (local) name, regardless of namespace, use ‘*’ for the uri argument.

Parameters

node{Element} Node on which to search for other nodes.
uri{String} Namespace URI.
name{String} Local name of the tag (without the prefix).

Returns

{NodeList} A node list or array of elements.

getAttributeNodeNS

getAttributeNodeNS: function(node,
uri,
name)

Get an attribute node given the namespace URI and local name.

Parameters

node{Element} Node on which to search for attribute nodes.
uri{String} Namespace URI.
name{String} Local name of the attribute (without the prefix).

Returns

{DOMElement} An attribute node or null if none found.

getAttributeNS

getAttributeNS: function(node,
uri,
name)

Get an attribute value given the namespace URI and local name.

Parameters

node{Element} Node on which to search for an attribute.
uri{String} Namespace URI.
name{String} Local name of the attribute (without the prefix).

Returns

{String} An attribute value or and empty string if none found.

getChildValue

getChildValue: function(node,
def)

Get the textual value of the node if it exists, or return an optional default string.  Returns an empty string if no first child exists and no default value is supplied.

Parameters

node{DOMElement} The element used to look for a first child value.
def{String} Optional string to return in the event that no first child value exists.

Returns

{String} The value of the first child of the given node.

isSimpleContent

isSimpleContent: function(node)

Test if the given node has only simple content (i.e. no child element nodes).

Parameters

node{DOMElement} An element node.

Returns

{Boolean} The node has no child element nodes (nodes of type 1).

contentType

contentType: function(node)

Determine the content type for a given node.

Parameters

node{DOMElement}

Returns

{Integer} One of ALKMaps.Format.XML.CONTENT_TYPE.{EMPTY,SIMPLE,COMPLEX,MIXED} if the node has no, simple, complex, or mixed content.

hasAttributeNS

hasAttributeNS: function(node,
uri,
name)

Determine whether a node has a particular attribute matching the given name and namespace.

Parameters

node{Element} Node on which to search for an attribute.
uri{String} Namespace URI.
name{String} Local name of the attribute (without the prefix).

Returns

{Boolean} The node has an attribute matching the name and namespace.

setAttributeNS

setAttributeNS: function(node,
uri,
name,
value)

Adds a new attribute or changes the value of an attribute with the given namespace and name.

Parameters

node{Element} Element node on which to set the attribute.
uri{String} Namespace URI for the attribute.
name{String} Qualified name (prefix:localname) for the attribute.
value{String} Attribute value.

createElementNSPlus

createElementNSPlus: function(name,
options)

Shorthand for creating namespaced elements with optional attributes and child text nodes.

Parameters

name{String} The qualified node name.
options{Object} Optional object for node configuration.

Valid options

uri{String} Optional namespace uri for the element - supply a prefix instead if the namespace uri is a property of the format’s namespace object.
attributes{Object} Optional attributes to be set using the setAttributes method.
value{String} Optional text to be appended as a text node.

Returns

{Element} An element node.

setAttributes

setAttributes: function(node,
obj)

Set multiple attributes given key value pairs from an object.

Parameters

node{Element} An element node.
obj{Object || Array} An object whose properties represent attribute names and values represent attribute values.  If an attribute name is a qualified name (“prefix:local”), the prefix will be looked up in the parsers {namespaces} object.  If the prefix is found, setAttributeNS will be used instead of setAttribute.

readNode

readNode: function(node,
obj)

Shorthand for applying one of the named readers given the node namespace and local name.  Readers take two args (node, obj) and generally extend or modify the second.

Parameters

node{DOMElement} The node to be read (required).
obj{Object} The object to be modified (optional).

Returns

{Object} The input object, modified (or a new one if none was provided).

readChildNodes

readChildNodes: function(node,
obj)

Shorthand for applying the named readers to all children of a node.  For each child of type 1 (element), <readSelf> is called.

Parameters

node{DOMElement} The node to be read (required).
obj{Object} The object to be modified (optional).

Returns

{Object} The input object, modified.

writeNode

writeNode: function(name,
obj,
parent)

Shorthand for applying one of the named writers and appending the results to a node.  If a qualified name is not provided for the second argument (and a local name is used instead), the namespace of the parent node will be assumed.

Parameters

name{String} The name of a node to generate.  If a qualified name (e.g.  “pre:Name”) is used, the namespace prefix is assumed to be in the writers group.  If a local name is used (e.g.  “Name”) then the namespace of the parent is assumed.  If a local name is used and no parent is supplied, then the default namespace is assumed.
obj{Object} Structure containing data for the writer.
parent{DOMElement} Result will be appended to this node.  If no parent is supplied, the node will not be appended to anything.

Returns

{DOMElement} The child node.

getChildEl

getChildEl: function(node,
name,
uri)

Get the first child element.  Optionally only return the first child if it matches the given name and namespace URI.

Parameters

node{DOMElement} The parent node.
name{String} Optional node name (local) to search for.
uri{String} Optional namespace URI to search for.

Returns

{DOMElement} The first child.  Returns null if no element is found, if something significant besides an element is found, or if the element found does not match the optional name and uri.

getNextEl

getNextEl: function(node,
name,
uri)

Get the next sibling element.  Optionally get the first sibling only if it matches the given local name and namespace URI.

Parameters

node{DOMElement} The node.
name{String} Optional local name of the sibling to search for.
uri{String} Optional namespace URI of the sibling to search for.

Returns

{DOMElement} The next sibling element.  Returns null if no element is found, something significant besides an element is found, or the found element does not match the optional name and uri.

getThisOrNextEl

getThisOrNextEl: function(node,
name,
uri)

Return this node or the next element node.  Optionally get the first sibling with the given local name or namespace URI.

Parameters

node{DOMElement} The node.
name{String} Optional local name of the sibling to search for.
uri{String} Optional namespace URI of the sibling to search for.

Returns

{DOMElement} The next sibling element.  Returns null if no element is found, something significant besides an element is found, or the found element does not match the query.

lookupNamespaceURI

lookupNamespaceURI: function(node,
prefix)

Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).  Supplying null for the prefix will return the default namespace.

For browsers that support it, this calls the native lookupNamesapceURI function.  In other browsers, this is an implementation of https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI.

For browsers that don’t support the attribute.ownerElement property, this method cannot be called on attribute nodes.

Parameters

node{DOMElement} The node from which to start looking.
prefix{String} The prefix to lookup or null to lookup the default namespace.

Returns

{String} The namespace URI for the given prefix.  Returns null if the prefix cannot be found or the node is the wrong type.

getXMLDoc

getXMLDoc: function()

Get an XML document for nodes that are not supported in HTML (e.g. createCDATASection).  On IE, this will either return an existing or create a new xmldom on the instance.  On other browsers, this will either return an existing or create a new shared document (see ALKMaps.Format.XML.document).

Returns

{XMLDocument}

ALKMaps.Format.XML.lookupNamespaceURI

Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).  Supplying null for the prefix will return the default namespace.

For browsers that support it, this calls the native lookupNamesapceURI function.  In other browsers, this is an implementation of https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI.

For browsers that don’t support the attribute.ownerElement property, this method cannot be called on attribute nodes.

Parameters

node{DOMElement} The node from which to start looking.
prefix{String} The prefix to lookup or null to lookup the default namespace.

Returns

{String} The namespace URI for the given prefix.  Returns null if the prefix cannot be found or the node is the wrong type.

Properties

ALKMaps.Format.XML.document

{XMLDocument} XML document to reuse for creating non-HTML compliant nodes, like document.createCDATASection.

Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name.
destroy: function()
Clean up.
setNamespace: function(alias,
uri)
Set a namespace alias and URI for the format.
write: function(node)
Serialize a DOM node into a XML string.
createElementNS: function(uri,
name)
Create a new element with namespace.
createTextNode: function(text)
Create a text node.
getElementsByTagNameNS: function(node,
uri,
name)
Get a list of elements on a node given the namespace URI and local name.
getAttributeNodeNS: function(node,
uri,
name)
Get an attribute node given the namespace URI and local name.
getAttributeNS: function(node,
uri,
name)
Get an attribute value given the namespace URI and local name.
getChildValue: function(node,
def)
Get the textual value of the node if it exists, or return an optional default string.
isSimpleContent: function(node)
Test if the given node has only simple content (i.e.
contentType: function(node)
Determine the content type for a given node.
hasAttributeNS: function(node,
uri,
name)
Determine whether a node has a particular attribute matching the given name and namespace.
setAttributeNS: function(node,
uri,
name,
value)
Adds a new attribute or changes the value of an attribute with the given namespace and name.
createElementNSPlus: function(name,
options)
Shorthand for creating namespaced elements with optional attributes and child text nodes.
setAttributes: function(node,
obj)
Set multiple attributes given key value pairs from an object.
readNode: function(node,
obj)
Shorthand for applying one of the named readers given the node namespace and local name.
readChildNodes: function(node,
obj)
Shorthand for applying the named readers to all children of a node.
writeNode: function(name,
obj,
parent)
Shorthand for applying one of the named writers and appending the results to a node.
getChildEl: function(node,
name,
uri)
Get the first child element.
getNextEl: function(node,
name,
uri)
Get the next sibling element.
getThisOrNextEl: function(node,
name,
uri)
Return this node or the next element node.
lookupNamespaceURI: function(node,
prefix)
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
getXMLDoc: function()
Get an XML document for nodes that are not supported in HTML (e.g.
Construct an XML parser.
Base class for format reading/writing a variety of formats.
As a compliment to the readers property, this structure contains public writing functions grouped by namespace alias and named like the node names they produce.
{XMLDom} If this browser uses ActiveX, this will be set to a XMLDOM object.
{XMLDocument} XML document to reuse for creating non-HTML compliant nodes, like document.createCDATASection.
Close