<article>
<artheader>
<title>XPathScript - A Viable Alternative to XSLT?</title>
...
The XPath expression to retrieve the text in the
<title> element is:
/article/artheader/title/text( )
Putting all this together to make this text into the HTML title, we
get the following XPathScript stylesheet:
<html>
<head>
<title><%= findvalue("/article/artheader/title") %></title>
</head>
<body>
This was a DocBook Article.
We're only extracting the title for now!
<p>
The title was: <%= findvalue("/article/artheader/title") %>
</body>
</html>
Again, we see the XPath syntax being used to find the nodes in the
document, along with the function findvalue( ).
Similarly, a list of nodes can be extracted (and thus looped over)
using the findnodes( ) function:
...
<%
for my $sect1 (findnodes("/article/sect1")) {
print $sect1->findvalue("title"), "<br>\n";
for my $sect2 ($sect1->findnodes("sect2")) {
print " + ", $sect2->findvalue("title"), "<br>\n";
for my $sect3 ($sect2->findnodes("sect3")) {
print " + + ", $sect3->findvalue("title"), "<br>\n";
}
}
}
%>
...
Here we see how we can apply the find* functions
to individual nodes as methods, which makes the node the context node
to search from. That is,
$node->findnodes("title") finds
<title> child nodes of
$node.