Ограничения реализации YQL XSLT - PullRequest
0 голосов
/ 18 августа 2010

По какой-то причине таблица XSLT YQL не может разобрать мою таблицу стилей. Я успешно использовал таблицу стилей с сервисом W3C XSLT. Вот пример проблемы в Консоль YQL . Почему это не работает в YQL?

Кроме того, мне еще предстоит выяснить, как передать результаты запроса YQL в таблицу XSLT в виде XML-файла, подлежащего преобразованию, и указать URL-адрес таблицы стилей. Текущий обходной путь - использовать сервис W3C.

Ответы [ 2 ]

1 голос
/ 18 августа 2010

В качестве дополнения к ответу 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,'['),']'),'-'))
1 голос
/ 18 августа 2010

Ваша таблица стилей определена как 1.0, но вы используете replace() и tokenize(), что является частью стандарта 2.0.Однако это полностью действующая таблица стилей XSLT / XPath 2.0.

...