2

指定された html から:

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

(armenia) 文字列のみ、または少なくとも (armenia_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 に答える