2

从给定的 html :

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

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

提前致谢。

4

1 回答 1

2

使用这个 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"
于 2012-07-30T00:11:10.483 回答