В качестве дополнения к ответу Per T измените это:
<xsl:variable name="r">
<xsl:value-of select="replace(tr/td/p/a/following-sibling::text(),
'\s*-\s*(\d+)\.(\d+)\.(\d+)\s*',
'$1,$2,$3')" />
</xsl:variable>
С этим:
<xsl:variable name="r"
select="translate(tr/td/p/a/following-sibling::text(),'. -',',')">
Эти:
tokenize($r,',')[1]
tokenize($r,',')[2]
tokenize($r,',')[3]
С этим:
substring-before($r,',')
substring-before(substring-after($r,','),',')
substring-after(substring-after($r,','),',')
Примечание : Это на тот случай, если вы заранее не знаете количество цифр, в противном случае вы можете сделать:
substring($r,1,2)
substring($r,4,2)
substring($r,7)
Кроме того, это
replace(tr/td/p[@class='t11bold']/a,'\s+',' ')
Это должно быть просто так:
normalize-space(tr/td/p[@class='t11bold']/a)
И, наконец, это:
replace($d,'^[^\[]*\[\s*(\d+:\d{2})?\s*-?\s*([^\]]*)\]\s*$','$2')
Может быть:
normalize-space(substring-after(substring-before(substring-after($d,'['),']'),'-'))