0

我需要从包含属性详细信息的网站中删除信息。

<div class="inner">
<div class="col">
  <h2><a href="house-in-digana-for-sale-kandy-32">House in Digana </a></h2>
  <div class="meta">
      <div class="date"></div>
      <span class="category">Houses</span>,
    <span class="location">Kandy</span>
  </div>
</div>
  <div class="attr polar">
    <span class="data">Rs. 3,600,000</span>
  </div>

“Kandy”和“Rs. 3,600,000”的 xpath 表示法是什么?

4

1 回答 1

3

text()由于 XML 文档中的细微差别,直接使用处理文本节点是不明智的。

相反,寻址一个元素节点直接返回所有后代文本节点的串联作为元素值,这是人们通常想要的(并且认为他们在寻址文本节点时会得到)。

我在课堂上使用的典型示例是 OCR 化内容为 XML 的示例:

<cost>39<!--that 9 may be an 8-->.22</cost>

使用 XPath 地址的元素的值cost是“39.22”,但在 XSLT 1.0 中,XPath 地址的值cost/text()是“39”,这是不完整的。在 XSLT 2.0(这是问题的标记方式)中,您会得到两个文本节点“39”和“.22”,如果将它们连接起来,它看起来是正确的。但是,如果将它们传递给需要单例参数的函数,则会出现运行时错误。当您寻址一个元素时,返回的文本将连接成一个字符串,这适用于单例参数。

我告诉学生们,在我所有的专业工作中,只有非常(非常!)几次我必须text()在我的样式表中使用。

//span[@class='location' or @class='data']如果这两个字段是整个文档中唯一的此类元素,那么将找到这两个字段。您可能需要从文档树内的某个位置使用“.//span”。

于 2013-06-21T21:50:13.040 回答