开发者

YQL XSLT implementation limitations

For some reason, YQL's XSLT table can开发者_运维问答't parse my stylesheet. I have used the stylesheet successfully with the W3C's XSLT service. Here's an example of the problem in YQL Console. Why does this not work in YQL?

Also, I have yet to figure out how to pass the results of a YQL query to the XSLT table as the XML to be transformed while also specifying a stylesheet url. Current workaround is to abuse the W3C's service.


Your stylesheet is defined as 1.0 but you're using replace() and tokenize() which is part of the 2.0 standard. However it is a fully valid XSLT/XPath 2.0 stylesheet.


As an addition to Per T answer, change this:

<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>

With this:

<xsl:variable name="r" 
        select="translate(tr/td/p/a/following-sibling::text(),'. -',',')">

These:

tokenize($r,',')[1]

tokenize($r,',')[2]

tokenize($r,',')[3]

With these:

substring-before($r,',')

substring-before(substring-after($r,','),',')

substring-after(substring-after($r,','),',')

Note: This is just in case you don't know the amount of digit in advance, otherwise you could do:

substring($r,1,2)

substring($r,4,2)

substring($r,7)

Also, this

replace(tr/td/p[@class='t11bold']/a,'\s+',' ')

It should be just this:

normalize-space(tr/td/p[@class='t11bold']/a)

And finaly this:

replace($d,'^[^\[]*\[\s*(\d+:\d{2})?\s*-?\s*([^\]]*)\]\s*$','$2')

Could be:

normalize-space(substring-after(substring-before(substring-after($d,'['),']'),'-'))
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜