应用XPath函数'substring-after'

时间:2012-07-29 23:41:10

标签: xpath

来自给定的html:

 <span class="flag_16 left_16 armenia_16_left"> First League</span>

我如何才能获得(亚美尼亚)字符串或至少(armenia_16_left)。

提前感谢。

1 个答案:

答案 0 :(得分:1)

使用此XPath 1.0表达式

substring-before(substring-after(substring-after(/span /@class, ' '), ' '), '_')

在XPath 2.0中,可以使用

tokenize(tokenize(/span /@class, ' ')[last()], '_')[1]

基于XSLT的验证

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:template match="/">
  "<xsl:value-of select=
   "substring-before(substring-after(substring-after(/span /@class, ' '), ' '), '_')
   "/>"
 </xsl:template>
</xsl:stylesheet>

在提供的XML文档上应用此转换时:

<span class="flag_16 left_16 armenia_16_left"> First League</span>

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

"armenia"

将此XSLT 2.0转换应用于同一XML文档(上图)时:

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:template match="/">
  "<xsl:sequence select=
   "tokenize(tokenize(/span /@class, ' ')[last()], '_')[1]"/>"
 </xsl:template>
</xsl:stylesheet>

再次生成相同的正确结果

"armenia"
相关问题