繁体   English   中英

Ruby Nokogiri-使用URL的XPATH

[英]Ruby Nokogiri - XPATH using URL

我有这张桌子:

 <tr>
      <td><b>Amount</b></td>
      <td><b>Due Date</b></td>
      <td"><b>Link</b></td>
  </tr>

<tr>
  <td>02/13/2012</td>
  <td>$81.66</td>
  <td><a onclick="javascript:window.open('/cso/displaypdfbill?selectedBillkey=449409587','_blank');" href="javascript: void(0);">View Bill</a></td>

</tr>
<tr>
  <td>01/13/2012</td>
  <td>$181.66</td>
  <td><a onclick="javascript:window.open('/cso/displaypdfbill?selectedBillkey=543409587','_blank');" href="javascript: void(0);">View Bill</a></td>

</tr>

我正在遍历该表并在每行中提取Bill键。 我删除了Billkey并将其存储到变量中。

BillKey = 449409587

我想要的是获取BillKey所在的<tr>

所以我应该有:

2/13/2012      81.86     View Bill

我在编写XPATH来获取<tr>时遇到麻烦。

用途

   string(table/tr
            [td/a/@onclick
                  [substring
                    (.,
                     string-length()
                   - 21
                    )
                  =
                   $vEnding
                  ]
            ]
         )

$ vEnding必须用字符串替换"=449409587','_blank');"

因此,此替换后的完整XPath表达式为:

   string(table/tr
            [td/a/@onclick
                  [substring
                    (.,
                     string-length()
                   - 21
                    )
                  =
                   "=449409587','_blank');"
                  ]
            ]
         )

基于XSLT的验证

此XSLT转换

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vEnding">=449409587','_blank');</xsl:variable>

 <xsl:template match="/">
  <xsl:copy-of select=
  "string(table/tr
            [td/a/@onclick
                  [substring
                    (.,
                     string-length()
                   - 21
                    )
                  =
                   $vEnding
                  ]
            ]
         )
  "/>
 </xsl:template>
</xsl:stylesheet>

当应用于以下XML文档 (提供的文档包装在单个top元素table )时:

<table>
    <tr>
        <td>
            <b>Amount</b>
        </td>
        <td>
            <b>Due Date</b>
        </td>
        <td>
            <b>Link</b>
        </td>
    </tr>
    <tr>
        <td>02/13/2012</td>
        <td>$81.66</td>
        <td>
            <a onclick=
            "javascript:window.open('/cso/displaypdfbill?selectedBillkey=449409587','_blank');" href="javascript: void(0);">View Bill</a>
        </td>
    </tr>
    <tr>
        <td>01/13/2012</td>
        <td>$181.66</td>
        <td>
            <a onclick=
            "javascript:window.open('/cso/displaypdfbill?selectedBillkey=543409587','_blank');" href="javascript: void(0);">View Bill</a>
        </td>
    </tr>
</table>

评估XPath表达式并将评估结果复制到输出

    02/13/2012
    $81.66

        View Bill

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM