From 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 7 Apr 2024 13:41:34 -0500 Subject: new repository --- devdocs/elisp/document-object-model.html | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 devdocs/elisp/document-object-model.html (limited to 'devdocs/elisp/document-object-model.html') diff --git a/devdocs/elisp/document-object-model.html b/devdocs/elisp/document-object-model.html new file mode 100644 index 00000000..c01529dd --- /dev/null +++ b/devdocs/elisp/document-object-model.html @@ -0,0 +1,39 @@ +

Document Object Model

The DOM returned by libxml-parse-html-region (and the other XML parsing functions) is a tree structure where each node has a node name (called a tag), and optional key/value attribute list, and then a list of child nodes. The child nodes are either strings or DOM objects.

(body ((width . "101"))
+ (div ((class . "thing"))
+  "Foo"
+  (div nil
+   "Yes")))
+
+
Function: dom-node tag &optional attributes &rest children +

This function creates a DOM node of type tag. If given, attributes should be a key/value pair list. If given, children should be DOM nodes.

+

The following functions can be used to work with this structure. Each function takes a DOM node, or a list of nodes. In the latter case, only the first node in the list is used.

Simple accessors:

dom-tag node
+

Return the tag (also called “node name”) of the node.

dom-attr node attribute
+

Return the value of attribute in the node. A common usage would be:

(dom-attr img 'href)
+=> "https://fsf.org/logo.png"
+
+
dom-children node
+

Return all the children of the node.

dom-non-text-children node
+

Return all the non-string children of the node.

dom-attributes node
+

Return the key/value pair list of attributes of the node.

dom-text node
+

Return all the textual elements of the node as a concatenated string.

dom-texts node
+

Return all the textual elements of the node, as well as the textual elements of all the children of the node, recursively, as a concatenated string. This function also takes an optional separator to be inserted between the textual elements.

dom-parent dom node
+

Return the parent of node in dom.

dom-remove dom node

Remove node from dom.

The following are functions for altering the DOM.

dom-set-attribute node attribute value
+

Set the attribute of the node to value.

dom-remove-attribute node attribute
+

Remove attribute from node.

dom-append-child node child
+

Append child as the last child of node.

dom-add-child-before node child before
+

Add child to node’s child list before the before node. If before is nil, make child the first child.

dom-set-attributes node attributes

Replace all the attributes of the node with a new key/value list.

The following are functions for searching for elements in the DOM. They all return lists of matching nodes.

dom-by-tag dom tag
+

Return all nodes in dom that are of type tag. A typical use would be:

(dom-by-tag dom 'td)
+=> '((td ...) (td ...) (td ...))
+
+
dom-by-class dom match
+

Return all nodes in dom that have class names that match match, which is a regular expression.

dom-by-style dom style
+

Return all nodes in dom that have styles that match match, which is a regular expression.

dom-by-id dom style
+

Return all nodes in dom that have IDs that match match, which is a regular expression.

dom-search dom predicate
+

Return all nodes in dom where predicate returns a non-nil value. predicate is called with the node to be tested as its parameter.

dom-strings dom
+

Return all strings in dom.

Utility functions:

dom-pp dom &optional remove-empty
+

Pretty-print dom at point. If remove-empty, don’t print textual nodes that just contain white-space.

dom-print dom &optional pretty xml

Print dom at point. If xml is non-nil, print as XML; otherwise, print as HTML. If pretty is non-nil, indent the HTML/XML logically.

+

+ Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
+ https://www.gnu.org/software/emacs/manual/html_node/elisp/Document-Object-Model.html +

+
-- cgit v1.2.3