В дополнение к 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,'['),']'),'-'))
Это не хорошая практика, чтобы связать с большим источником в другом месте. Вы должны создать образец ввода с уменьшением –
Я обрезал образец XML-файла, который обрабатываю. – robartsd
Прежде чем начать работу с XSLT, я попытался получить результаты YQL с помощью таблицы XML через оставшийся URL-адрес, который не работал, но XSLT не имел проблем с использованием результатов YQL в качестве входных данных. – robartsd