我是HTML和Xpath的新手,需要一些帮助。
我正在尝试在HTML中使用小于函数,但它不断出现错误。
value.singleNodeValue.setAttribute("select", "match[round &lT; '"+matchround+"']");
其中round
是属性名称,matchround
是我想要比较的用户输入。
有人可以突出显示我做错了什么,因为大于声明的效果非常好。
答案 0 :(得分:1)
XML中的常规和参数实体区分大小写。
&lT;
(当前显示在您问题代码中的资本T
)与<
不同。
您的示例打算如何使用XPath也不是很清楚。您似乎只是尝试使用一个与XPath select
函数几乎没有相似之处的字符串来设置名为match()
的属性。另请注意,match()
仅在XPath 2.0中可用。
您提出的问题的答案是,您必须在XML中使用<
(区分大小写)而不是文字<
,以便解析器不会将<
误认为是一个元素。
您真实问题的答案取决于您的clarification of what your true end goal is。
答案 1 :(得分:0)
您想要进行什么样的比较,matchround
具有什么样的价值?是字符串还是数字? XPath 1.0不支持小于或大于字符串值的比较,仅支持数字比较。你说round
是属性名称,因为在XPath中你需要@round
。因此,如果matchround
是一个数字(例如50),那么执行setAttribute("select", "match[@round < " + matchround + "]")
会创建一个以XPath表达式match[@round < 50]
作为其值的属性。只有在DOM树被序列化时才会发生任何转义,DOM中的属性值将包含带有<
字符的纯XPath表达式,而不包含实体引用。