mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-13 09:32:47 +00:00
* text.texi (Document Object Model): New node to document dom.el.
This commit is contained in:
parent
f054f0f265
commit
97d6e7e711
@ -1,3 +1,7 @@
|
||||
2014-11-26 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* text.texi (Document Object Model): New node to document dom.el.
|
||||
|
||||
2014-11-24 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* processes.texi (Network Security): Made into its own section and
|
||||
|
@ -4349,7 +4349,8 @@ document:
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
A call to @code{libxml-parse-html-region} returns this:
|
||||
A call to @code{libxml-parse-html-region} returns this @acronym{DOM}
|
||||
(document object model):
|
||||
|
||||
@example
|
||||
(html ()
|
||||
@ -4377,6 +4378,123 @@ that it parses the text as XML rather than HTML (so it is stricter
|
||||
about syntax).
|
||||
@end defun
|
||||
|
||||
@menu
|
||||
* Document Object Model:: Access, manipulate and search the @acronym{DOM}.
|
||||
@end menu
|
||||
|
||||
@node Document Object Model
|
||||
@subsection Document Object Model
|
||||
@cindex HTML DOM
|
||||
@cindex XML DOM
|
||||
@cindex DOM
|
||||
@cindex Document Object Model
|
||||
|
||||
The @acronym{DOM} returned by @code{libxml-parse-html-region} (and the
|
||||
other @acronym{XML} parsing functions) is a tree structure where each
|
||||
node has a node name (called a @dfn{tag}), and optional key/value
|
||||
@dfn{attribute} list, and then a list of @dfn{child nodes}. The child
|
||||
nodes are either strings or @acronym{DOM} objects.
|
||||
|
||||
@example
|
||||
(body
|
||||
((width . "101"))
|
||||
(div
|
||||
((class . "thing"))
|
||||
"Foo"
|
||||
(div
|
||||
nil
|
||||
"Yes")))
|
||||
@end example
|
||||
|
||||
@defun dom-node tag &optional attributes &rest children
|
||||
This function creates a @acronym{DOM} node of type @var{tag}. If
|
||||
given, @var{attributes} should be a key/value pair list.
|
||||
If given, @var{children} should be @acronym{DOM} nodes.
|
||||
@end defun
|
||||
|
||||
The following functions can be used to work with this structure. Each
|
||||
function takes a @acronym{DOM} node, or a list of nodes. In the
|
||||
latter case, only the first node in the list is used.
|
||||
|
||||
Simple accessors:
|
||||
|
||||
@table @code
|
||||
@item dom-tag @var{node}
|
||||
Return the @dfn{tag} (also called ``node name'') of the node.
|
||||
|
||||
@item dom-attr @var{node} @var{attributes}
|
||||
Return the value of @var{attributes} in the node. A common usage
|
||||
would be:
|
||||
|
||||
@lisp
|
||||
(dom-attr img 'href)
|
||||
=> "http://fsf.org/logo.png"
|
||||
@end lisp
|
||||
|
||||
@item dom-children @var{node}
|
||||
Return all the children of the node.
|
||||
|
||||
@item dom-attributes @var{node}
|
||||
Return the key/value pair list of attributes of the node.
|
||||
|
||||
@item dom-text @var{node}
|
||||
Return all the textual elements of the node as a concatenated string.
|
||||
|
||||
@item dom-texts @var{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.
|
||||
|
||||
@item dom-parent @var{dom} @var{node}
|
||||
Return the parent of @var{node} in @var{dom}.
|
||||
@end table
|
||||
|
||||
The following are functions for altering the @acronym{DOM}.
|
||||
|
||||
@table @code
|
||||
@item dom-set-attribute @var{node} @var{attribute} @var{value}
|
||||
Set the @var{attribute} of the node to @var{value}.
|
||||
|
||||
@item dom-append-child @var{node} @var{child}
|
||||
Append @var{child} as the last child of @var{node}.
|
||||
|
||||
@item dom-add-child-before @var{node} @var{child} @var{before}
|
||||
Add @var{child} to @var{node}'s child list before the @var{before}
|
||||
node. If @var{before} is nil, make @var{child} the first child.
|
||||
|
||||
@item dom-set-attributes @var{node} @var{attributes}
|
||||
Replace all the attributes of the node with a new key/value list.
|
||||
@end table
|
||||
|
||||
The following are functions for searching for elements in the
|
||||
@acronym{DOM}. They all return lists of matching nodes.
|
||||
|
||||
@table @code
|
||||
@item dom-by-tag @var{dom} @var{tag}
|
||||
Return all nodes in @var{dom} that are of type @var{tag}. A typical
|
||||
use would be:
|
||||
|
||||
@lisp
|
||||
(dom-by-tag dom 'td)
|
||||
=> '((td ...) (td ...) (td ...))
|
||||
@end lisp
|
||||
|
||||
@item dom-by-class @var{dom} @var{match}
|
||||
Return all nodes in @var{dom} that have class names that match
|
||||
@var{match}, which is a regular expression.
|
||||
|
||||
@item dom-by-style @var{dom} @var{style}
|
||||
Return all nodes in @var{dom} that have styles that match @var{match},
|
||||
which is a regular expression.
|
||||
|
||||
@item dom-by-id @var{dom} @var{style}
|
||||
Return all nodes in @var{dom} that have IDs that match @var{match},
|
||||
which is a regular expression.
|
||||
|
||||
@end table
|
||||
|
||||
|
||||
@node Atomic Changes
|
||||
@section Atomic Change Groups
|
||||
@cindex atomic changes
|
||||
|
Loading…
Reference in New Issue
Block a user