NAME
XML::XPath::Helper::String - Helper functions for XPath expression.
VERSION
Version 1.05
SYNOPSIS
use XML::LibXML;
use XML::XPath::Helper::String qw(quoted_string one_of_quoted);
my @nodes = $myXML->findnodes('subnode=' .
quoted_string("value with '"));
my @other_nodes =
$myXML->findnodes('foo_node[' . one_of_quoted("bar_node",
"x'''y",
"z")
']');
DESCRIPTION
This modules provides functions that helps building XPath expressions. The functions are exported on demand, you can use the :all
tag to export all functions.
FUNCTIONS
quoted_string(ARG)
-
This function makes it easier to create XPath expressions that search for values which contains single quotes. The problem with XPath is that it does not support an escape character, so you have to use a
concat(...)
in such cases. This function creates aconcat(...)
expression if needed.ARG
must be a string or a reference to an array of strings. If it is a string, the the function returns a string. If it is an array reference, then the function returns an array reference.For each string in
ARG
the function does the following: if the string does not contain any single quote, then the result is the string enclosed in single quotes. So thisprint(quoted_string("hello"), "\n");
prints:
'hello'
But this
print(quoted_string("'this' that \"x\" '''"), "\n");
prints:
concat("'",'this',"'",' that "x" ',"'''")
one_of_quoted(VALUES, NAME)
one_of_quoted(VALUES)
-
This function creates an XPath expressions checking if
NAME
contains one of the values inVALUES
. It callsquoted_string
to handle single quotes correctly. Example:This
print(one_of_quoted(["'a'", "b'''cd", "e"], "foo"), "\n");
prints
foo=concat("'",'a',"'") or foo=concat('b',"'''",'cd') or foo='e'
If
NAME
is not specified, then the function returns a closure that takes one argument and produces the expression when called. Example:This
my $closure = one_of_quoted(["'a'", "b'''cd", "e"]); print($closure->("foo"), "\n", $closure->("bar"), "\n");
prints
foo=concat("'",'a',"'") or foo=concat('b',"'''",'cd') or foo='e' bar=concat("'",'a',"'") or bar=concat('b',"'''",'cd') or bar='e'
not_one_of_quoted(VALUES, NAME)
not_one_of_quoted(VALUES)
-
Like
one_of_quoted
but creates an XPath expressions checking ifNAME
contains none of the values inVALUES
. Example:This:
print(not_one_of_quoted("foo", "'a'", "b'''cd", "e"), "\n");
prints:
foo!=concat("'",'a',"'") and foo!=concat('b',"'''",'cd') and foo!='e'
SEE ALSO
XML::LibXML, XML::XPath::Helper::Const
AUTHOR
Abdul al Hazred, <451 at gmx.eu>
BUGS
Please report any bugs or feature requests to bug-xml-xpath-helper-string at rt.cpan.org
, or through the web interface at https://rt.cpan.org/NoAuth/ReportBug.html?Queue=XML-XPath-Helper-String. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc XML::XPath::Helper::String
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
https://rt.cpan.org/NoAuth/Bugs.html?Dist=XML-XPath-Helper-String
Search CPAN
GitHub Repository
https://github.com/AAHAZRED/perl-XML-XPath-Helper-String.git
LICENSE AND COPYRIGHT
This software is copyright (c) 2022 by Abdul al Hazred.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.