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.
ALKMaps. | Read 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. |
readers | Contains public functions, grouped by namespace prefix, that will be applied when a namespaced node is found matching the function name. |
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. |
Constructor | |
ALKMaps. | Construct an XML parser. |
Functions | |
destroy | Clean up. |
setNamespace | Set a namespace alias and URI for the format. |
write | Serialize a DOM node into a XML string. |
createElementNS | Create a new element with namespace. |
createTextNode | Create a text node. |
getElementsByTagNameNS | Get a list of elements on a node given the namespace URI and local name. |
getAttributeNodeNS | Get an attribute node given the namespace URI and local name. |
getAttributeNS | Get an attribute value given the namespace URI and local name. |
getChildValue | Get the textual value of the node if it exists, or return an optional default string. |
isSimpleContent | Test if the given node has only simple content (i.e. |
contentType | Determine the content type for a given node. |
hasAttributeNS | Determine whether a node has a particular attribute matching the given name and namespace. |
setAttributeNS | Adds a new attribute or changes the value of an attribute with the given namespace and name. |
createElementNSPlus | Shorthand for creating namespaced elements with optional attributes and child text nodes. |
setAttributes | Set multiple attributes given key value pairs from an object. |
readNode | Shorthand for applying one of the named readers given the node namespace and local name. |
readChildNodes | Shorthand for applying the named readers to all children of a node. |
writeNode | Shorthand for applying one of the named writers and appending the results to a node. |
getChildEl | Get the first child element. |
getNextEl | Get the next sibling element. |
getThisOrNextEl | Return this node or the next element node. |
lookupNamespaceURI | Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not). |
getXMLDoc | Get an XML document for nodes that are not supported in HTML (e.g. |
ALKMaps. | Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not). |
Properties | |
ALKMaps. | {XMLDocument} XML document to reuse for creating non-HTML compliant nodes, like document.createCDATASection. |
{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.
{Object} Mapping of namespace URI to namespace alias. This object is read-only. Use setNamespace to add or set a namespace alias.
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. 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.
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.
uri | {String} Namespace URI for the element. |
name | {String} The qualified name of the element (prefix:localname). |
{Element} A DOM element with namespace.
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.
text | {String} The text of the node. |
{DOMElement} A DOM text node.
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.
node | {Element} Node on which to search for other nodes. |
uri | {String} Namespace URI. |
name | {String} Local name of the tag (without the prefix). |
{NodeList} A node list or array of elements.
getAttributeNodeNS: function( node, uri, name )
Get an attribute node given the namespace URI and local name.
node | {Element} Node on which to search for attribute nodes. |
uri | {String} Namespace URI. |
name | {String} Local name of the attribute (without the prefix). |
{DOMElement} An attribute node or null if none found.
getAttributeNS: function( node, uri, name )
Get an attribute value given the namespace URI and local name.
node | {Element} Node on which to search for an attribute. |
uri | {String} Namespace URI. |
name | {String} Local name of the attribute (without the prefix). |
{String} An attribute value or and empty string if none found.
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.
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. |
{String} The value of the first child of the given node.
hasAttributeNS: function( node, uri, name )
Determine whether a node has a particular attribute matching the given name and namespace.
node | {Element} Node on which to search for an attribute. |
uri | {String} Namespace URI. |
name | {String} Local name of the attribute (without the prefix). |
{Boolean} The node has an attribute matching the 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.
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: function( name, options )
Shorthand for creating namespaced elements with optional attributes and child text nodes.
name | {String} The qualified node name. |
options | {Object} Optional object for node configuration. |
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. |
{Element} An element node.
setAttributes: function( node, obj )
Set multiple attributes given key value pairs from an object.
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: 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.
node | {DOMElement} The node to be read (required). |
obj | {Object} The object to be modified (optional). |
{Object} The input object, modified (or a new one if none was provided).
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.
node | {DOMElement} The node to be read (required). |
obj | {Object} The object to be modified (optional). |
{Object} The input object, modified.
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.
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. |
{DOMElement} The child node.
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.
node | {DOMElement} The parent node. |
name | {String} Optional node name (local) to search for. |
uri | {String} Optional namespace URI to search for. |
{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: 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.
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. |
{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: 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.
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. |
{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: 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
For browsers that don’t support the attribute.ownerElement property, this method cannot be called on attribute nodes.
node | {DOMElement} The node from which to start looking. |
prefix | {String} The prefix to lookup or null to lookup the default namespace. |
{String} The namespace URI for the given prefix. Returns null if the prefix cannot be found or the node is the wrong type.
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).
{XMLDocument}
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
For browsers that don’t support the attribute.ownerElement property, this method cannot be called on attribute nodes.
node | {DOMElement} The node from which to start looking. |
prefix | {String} The prefix to lookup or null to lookup the default namespace. |
{String} The namespace URI for the given prefix. Returns null if the prefix cannot be found or the node is the wrong type.
Clean up.
destroy: function()
Set a namespace alias and URI for the format.
setNamespace: function( alias, uri )
Serialize a DOM node into a XML string.
write: function( node )
Create a new element with namespace.
createElementNS: function( uri, name )
Create a text node.
createTextNode: function( text )
Get a list of elements on a node given the namespace URI and local name.
getElementsByTagNameNS: function( node, uri, name )
Get an attribute node given the namespace URI and local name.
getAttributeNodeNS: function( node, uri, name )
Get an attribute value given the namespace URI and local name.
getAttributeNS: function( node, uri, name )
Get the textual value of the node if it exists, or return an optional default string.
getChildValue: function( node, def )
Test if the given node has only simple content (i.e.
isSimpleContent: function( node )
Determine the content type for a given node.
contentType: function( node )
Determine whether a node has a particular attribute matching the given name and namespace.
hasAttributeNS: function( node, uri, name )
Adds a new attribute or changes the value of an attribute with the given namespace and name.
setAttributeNS: function( node, uri, name, value )
Shorthand for creating namespaced elements with optional attributes and child text nodes.
createElementNSPlus: function( name, options )
Set multiple attributes given key value pairs from an object.
setAttributes: function( node, obj )
Shorthand for applying one of the named readers given the node namespace and local name.
readNode: function( node, obj )
Shorthand for applying the named readers to all children of a node.
readChildNodes: function( node, obj )
Shorthand for applying one of the named writers and appending the results to a node.
writeNode: function( name, obj, parent )
Get the first child element.
getChildEl: function( node, name, uri )
Get the next sibling element.
getNextEl: function( node, name, uri )
Return this node or the next element node.
getThisOrNextEl: function( node, name, uri )
Takes a prefix and returns the namespace URI associated with it on the given node if found (and null if not).
lookupNamespaceURI: function( node, prefix )
Get an XML document for nodes that are not supported in HTML (e.g.
getXMLDoc: function()