xslt xpath 在 xpath 查询中使用元素值
xslt xpath using element values in xpath query
是否可以使用 xpath 中的元素值?我有以下 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>
我想让元素值具有分类级别并在 xpath 中使用。接下来是输出它们的值(例如 HAS TAXONOMIC LEVEL),然后获取兄弟 td 的后代的值:in /ul/li/a -> HAS TAXONOMIC LEVEL 下的属和 IS USED AS 下的圣诞树和木材树。所以我得到以下信息:
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..)
请注意,我在这个文件中有多个 xml 格式的文档,如下所示:
<root>
<html>
[DATA SET 1]
....
</html>
<html>
[DATA SET 2]
....
</html>
.....
</root>
谢谢,干杯!
试试这样的:
<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> </xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
and then get the values below them in /ul/li/a
你错了:这些值不是 "below" 它们;他们是兄弟姐妹 td
.
的后代
是否可以使用 xpath 中的元素值?我有以下 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>
我想让元素值具有分类级别并在 xpath 中使用。接下来是输出它们的值(例如 HAS TAXONOMIC LEVEL),然后获取兄弟 td 的后代的值:in /ul/li/a -> HAS TAXONOMIC LEVEL 下的属和 IS USED AS 下的圣诞树和木材树。所以我得到以下信息:
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..)
请注意,我在这个文件中有多个 xml 格式的文档,如下所示:
<root>
<html>
[DATA SET 1]
....
</html>
<html>
[DATA SET 2]
....
</html>
.....
</root>
谢谢,干杯!
试试这样的:
<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> </xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
and then get the values below them in /ul/li/a
你错了:这些值不是 "below" 它们;他们是兄弟姐妹 td
.