来自给定的html:
<span class="flag_16 left_16 armenia_16_left"> First League</span>
我如何才能获得(亚美尼亚)字符串或至少(armenia_16_left)。
提前感谢。
答案 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"