XPath中如何比较不同类型的对象[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 superlmj 的 blog

目前xpath2.0还没有正式定稿,因此本文的讨论是基于xpath1.0.
xpath支持四种基本类型:
1. node-set
2. string
3. number
4. boolean
我们知道一个location step由axis,node test和predicate三部分组成,而用于查询xml文档的xpath又是由若干location step组成,比如/table/row[id='0000']。在predicate中几乎总是需要运用=,!=,<,<=,<=进行比较。而对于不同的对象如何进行比较,尤其是涉及到node-set的比较却是十分容易使人困惑。比如对下面文档进行root/numbers[integer/@value > 4]<root>查询。
<numbers>
<integer value="4" />
<integer value="2" />
<integer value="3" />
</numbers>
<numbers>
<integer value="2" />
<integer value="3" />
<integer value="6" />
</numbers>
</root>

下面我以伪代码的形式解释xpath中是如何比较不同对象的。其中compareobjects涉及到

boolean compareobjects(object operand1,object operand2,string operator)throws exception{

        //both objects to be compared are node-sets

        if(both operand1 and operand2 are node-sets){

            iterator i1 = operand1.iterator();

            iterator i2 = operand2.iterator();

            while((node1 =i1.next()!=null){

本文关键:XPath中如何比较不同类型的对象
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top