findXInclude | R Documentation |
This function is used to traverse the ancestors of an internal XML node to find the associated XInclude node that identifies it as being an XInclude'd node. Each top-level node that results from an include href=... in the libxml2 parser is sandwiched between nodes of class XMLXIncludeStartNode and XMLXIncludeStartNode. These are the sibling nodes.
Another approach to finding the origin of the XInclude for a given
node is to search for an attribute xml:base. This only works if the
document being XInclude'd is in a different directory than the base document.
If this is the case, we can use an XPath query to find the node
containing the attribute via "./ancestor::*[@xml:base]"
.
findXInclude(x, asNode = FALSE, recursive = FALSE)
x |
the node whose XInclude "ancestor" is to be found |
asNode |
a logical value indicating whether to return the node itself or the attributes of the node which are typically the immediately interesting aspect of the node. |
recursive |
a logical value that controls whether the full path of the nested includes is returned or just the path in the immediate XInclude element. |
Either NULL
if there was no node of class XMLXIncludeStartNode
found.
Otherwise, if asNode
is TRUE
, that XMLXIncludeStartNode
node is returned, or alternatively its attribute character vector.
Duncan Temple Lang
www.libxml.org
xmlParse
and the xinclude
parameter.
f = system.file("exampleData", "functionTemplate.xml", package = "XML")
cat(readLines(f), "\n")
doc = xmlParse(f)
# Get all the para nodes
# We just want to look at the 2nd and 3rd which are repeats of the
# first one.
a = getNodeSet(doc, "//author")
findXInclude(a[[1]])
i = findXInclude(a[[1]], TRUE)
top = getSibling(i)
# Determine the top-level included nodes
tmp = getSibling(i)
nodes = list()
while(!inherits(tmp, "XMLXIncludeEndNode")) {
nodes = c(nodes, tmp)
tmp = getSibling(tmp)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.