xslt xpath 在 xpath 查询中使用元素值 [英] xslt xpath using element values in xpath query

查看:23
本文介绍了xslt xpath 在 xpath 查询中使用元素值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在 xpath 中使用元素值?我有以下 xml:

<table class="table search-results-property-table">....<tr><td><span class="versal">具有分类级别</span></td><td><ul><li><a class="versal" href="../../../agrovoc/en/page/c_11125">属</a></td></tr><tr><td><span class="versal">用作</span></td><td><ul><li><a class="versal" href="../../../agrovoc/en/page/c_1591">圣诞树</a><li><a class="versal" href="../../../agrovoc/en/page/c_7776">木材树</a></td></tr>....<表格></html>[第二个数据集...]...<根>

我想让元素值 HAS TAXONOMIC LEVEL 和 IS USED AS 在 xpath 中使用.接下来是输出它们的值(例如 HAS TAXONOMIC LEVEL),然后获取兄弟 td 的后代值:在/ul/li/a -> genus 下 HAS TAXONOMIC LEVEL 和圣诞树和木材树下 IS USED AS.所以我得到以下内容:

从这里开始= LDR 00000nam 2200000Ia 4500=305 \\$a具有分类学水平$b属=305 \\$aIS 用作 $bchrismas 树=305 \\$aIS 用作 $btimber 树从这里开始= LDR 00000nam 2200000Ia 4500(第二个数据集等等..)

请注意,我在这个文件中有多个 xml 格式的文档,如下所示:

[数据集1]....</html>[数据集2]....</html>.....</root>

谢谢和欢呼!

解决方案

尝试类似:

<xsl:for-each select="html/table/tr[td/span='HAS TAXONOMIC LEVEL' or td/span='IS used as']"><xsl:variable name="span" select="td/span"/><xsl:for-each select="td/ul/li/a"><xsl:text>$new-line </xsl:text><xsl:value-of select="$span"/><xsl:text>$separator </xsl:text><xsl:value-of select="."/><xsl:text>&#10;</xsl:text></xsl:for-each></xsl:for-each></xsl:模板>

<块引用>

然后在/ul/li/a 中获取它们下面的值

你误会了:这些值并不低于"它们;它们是兄弟 td 的后代.

Is it possible to use the element values in xpath? I have the following xml:

<root>
 <html>
  <table class=" table search-results-property-table">  
                 ....
   <tr>
    <td>
     <span class="versal">HAS TAXONOMIC LEVEL</span>
    </td>
    <td>
     <ul>
      <li>
       <a class="versal" href="../../../agrovoc/en/page/c_11125">genus</a>
      </li>
     </ul>
    </td>
   </tr>
   <tr>
    <td>
     <span class="versal">IS USED AS</span>
    </td>
    <td>
     <ul>
      <li>
       <a class="versal" href="../../../agrovoc/en/page/c_1591">christmas trees</a>
      </li>
      <li>
       <a class="versal" href="../../../agrovoc/en/page/c_7776">timber trees</a>
      </li>
     </ul>
    </td>
   </tr>
    ....
  <table>
 </html>
 <html>
   [second data set...]
    ...
<root>

I want to have the element values HAS TAXONOMIC LEVEL and IS USED AS be used in xpath. Next is to output their values (e.g. HAS TAXONOMIC LEVEL) and then get the values of descendants of sibling td: in /ul/li/a -> genus under HAS TAXONOMIC LEVEL and christmas trees and timber trees under IS USED AS. So I get the following:

START HERE
=LDR  00000nam  2200000Ia 4500
=305  \\$aHAS TAXONOMIC LEVEL$bgenus
=305  \\$aIS USED AS$bchrismas trees
=305  \\$aIS USED AS$btimber trees

START HERE
=LDR  00000nam  2200000Ia 4500
  (second data set and so on..)

Please take note that I have more than one document in this file with xml format like below:

<root>
 <html>
   [DATA SET 1]
         ....
 </html>
      <html>
   [DATA SET 2]
         ....
 </html>
       .....
</root>

Thanks and cheers!

解决方案

Try something like:

<xsl:template match="/root">
    <xsl:for-each select="html/table/tr[td/span='HAS TAXONOMIC LEVEL' or td/span='IS USED AS']">
        <xsl:variable name="span" select="td/span" />
        <xsl:for-each select="td/ul/li/a">
            <xsl:text>$new-line </xsl:text>
            <xsl:value-of select="$span"/>
            <xsl:text> $separator </xsl:text>
            <xsl:value-of select="."/>
            <xsl:text>&#10;</xsl:text>
        </xsl:for-each>
    </xsl:for-each> 
</xsl:template>

and then get the values below them in /ul/li/a

You are mistaken about this: the values are not "below" them; they are descendants of a sibling td.

这篇关于xslt xpath 在 xpath 查询中使用元素值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆