From 7a3fdfea675975d1eab6035353fa5ea7490d1e17 Mon Sep 17 00:00:00 2001 From: Thomas Walpole Date: Thu, 20 Sep 2018 14:05:41 -0700 Subject: [PATCH] support querying HTML5 attributes --- lib/xpath/renderer.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/xpath/renderer.rb b/lib/xpath/renderer.rb index b8263da..dc10e35 100644 --- a/lib/xpath/renderer.rb +++ b/lib/xpath/renderer.rb @@ -59,7 +59,11 @@ def where(on, condition) end def attribute(current, name) - "#{current}/@#{name}" + if valid_xml_name?(name) + "#{current}/@#{name}" + else + "#{current}/attribute::*[local-name(.) = #{string_literal(name)}]" + end end def binary_operator(name, left, right) @@ -112,5 +116,9 @@ def with_element_conditions(expression, element_names) "#{expression}*" end end + + def valid_xml_name?(name) + name =~ /^[a-zA-Z_:][a-zA-Z0-9_:\.\-]*$/ + end end end