由于某种原因,YQL的XSLT表不能解析我的样式表。我已经在W3C的XSLT服务中成功地使用了样式表。以下是YQL Console中该问题的一个示例。为什么这在YQL中不起作用?
另外,我还没有弄清楚如何将YQL查询的结果作为要转换的XML传递给XSLT表,同时还要指定样式表url。目前的解决方法是滥用W3C的服务。
发布于 2010-08-18 17:04:19
您的样式表被定义为1.0,但是您使用的是replace()和tokenize(),这是2.0标准的一部分。但是,它是一个完全有效的XSLT/XPath2.0样式表。
发布于 2010-08-18 21:23:14
作为对Per T answer的补充,请更改以下内容:
<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,'['),']'),'-'))https://stackoverflow.com/questions/3510006
复制相似问题