• λ我爱Aspx >> Asp.Net >> XPath查询XML文档的注意事项
  • XPath查询XML文档的注意事项

  • :aspxer  Դ:internet  :2007-5-15 20:46:33  ؼ:xml
  • 1 2 3 下一页

    老鼠与人最好的排列计划

    本文的灵感来自一个诸事不顺的周末。我的那一位决定和同事去拉斯维加斯进行一次庆祝旅行,恰好我计划去宜家家居挑一个书柜,这样我在搬到雷得蒙几个月之后终于可以将我的书松绑了。在宜家家居逛了两个小时之后,我发现一个陈列的书柜与我房间的色调很相配,只是一些必要的配件缺货。最终我订购了这种书柜,空着手先回家了。然而,我已经把书都解开了,它们散落在房间的各个角落。这成为整理我日益增长的书库的最好机会,当然我选择使用 XML 实现此任务。(本文包含一些指向英文站点的链接。)

    不仅是表面那么简单

    我正在建造的 XML 分类的主要目的是建立一个结构来集中存储我所拥有的书的信息,它应该足够灵活,可以进行查询和各种演示,同时也便于携带。下面是该文档的初稿的摘录:

    Books.xml

    <?xml version="1.0" encoding="UTF-8" ?>

    <bk:books xmlns:bk="urn:xmlns:25hoursaday-com:my-bookshelf" on-loan="yes" >

    <bk:book publisher="IDG books" on-loan="Sanjay" >

    <bk:title>XML Bible</bk:title>

    <bk:author>Elliotte Rusty Harold</bk:author>

    </bk:book>

    <bk:book publisher="QUE">

    <bk:title>XML By Example</bk:title>

    <bk:author>Benoit Marchal</bk:author>

    </bk:book>

    </bk:books>

    我希望能够使用 on-loan 属性来跟踪我是否将书借了出去。根元素上的 on-loan 属性指定至少一本书被借了出去,然后将每个 book 元素上相同的属性指定借书人。现在看来,这可能不是最好的设计,因为它导致在根元素和子元素之间不必要的联系,但是请诸位谅解,这毕竟只是我的初稿。

    设计好简单的格式后,我决定在上面运行一些实际的查询来看看这种格式是否满足我的需要。我尝试在 System.Xml.XmlNode 类中使用 SelectSingleNode Method 的第一个查询如下:

    //*[position() = 1]/@on-loan

    我本来的意思是“选择文档中的所有节点,然后给我第一个节点的 on-loan 属性。”查询返回以下内容:

    on-loan="yes"

    因此,对问题“我是否有书借出?”的答案是 yes。然而,当我模拟如果一本书被借出之后我没有更新根元素上的 on-loan 值会出现什么情况时发生了一件有趣的事情。我从根元素中删除 on-loan 属性,再次运行查询。结果如下:

    on-loan="Sanjay"

    Ҷƪл˵?
  • һƪ构建基于Web/XML的信息集成研究
    һƪXPath在无线应用中的实现(上)