YQL XSLT 实施限制

发布于 2024-09-15 00:25:02 字数 461 浏览 7 评论 0原文

由于某种原因,YQL 的 XSLT 表无法解析我的样式表。我已成功地将样式表与 W3C 的 XSLT 服务结合使用。以下是 YQL控制台。为什么这在 YQL 中不起作用?

另外,我还没有弄清楚如何将 YQL 查询的结果作为要转换的 XML 传递到 XSLT 表,同时还指定样式表 url。当前的解决方法是滥用 W3C 的服务。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

べ映画 2024-09-22 00:25:02

您的样式表定义为 1.0,但您使用的是 replace()tokenize(),它们是 2.0 标准的一部分。然而,它是一个完全有效的 XSLT/XPath 2.0 样式表。

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.

北方。的韩爷 2024-09-22 00:25:02

作为对 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*

可能是:

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

可能是:

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*

Could be:

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

Could be:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文