2008-10-30 31 views
2

我在调用one of SharePoint's web service APIs,它返回一个CAML片段。我已经搜索了广泛的interweb,但我一直无法弄清楚如何使这个CAML片段呈现为“普通”HTML,我可以在Plumtree,WLP,Liferay或任何其他门户除SharePoint外。从Sharepoint的CAML到HTML

没有办法做到这一点,我想知道为什么微软首先编写了返回CAML的SharePoint Web服务调用。 Web服务用于互操作性,并且CAML似乎只在SharePoint内运行的WebPart内有效。 [注比尔和史蒂夫:这不是互操作性。]

如果我不能做到与回来的CAML什么,我只是要调用返回唯一的数据不同的Web服务,然后写我自己UI。我希望有一条更轻松的路。任何建议将不胜感激。

回答

5

CAML仍然是XML,如前所述,XSLT将能够将其呈现为HTML。 CAML的实际gnraly嵌套OR/AND结构是一个完整的问题。

这将需要展开CAML结构并以正常人理解的方式显示它。

不幸的是,XSLT语言不适合展开像这样的嵌套结构(它没有堆栈)。这是可能的,但已经完成了,我建议强烈使用另一种语言来解析和展开CAML。

我还没有看到CAML到SQL的转换代码。听起来像一个伟大的Codeplex项目。

所以总之......你有点塞满了CAML。虽然它是XML,但它的结构不适合在任何其他查询语言中使用。

4

您可以通过XSLT样式表发送CAML以生成HTML或XHTML。

编辑:

考虑到你的第一个问题(为什么从的SharePoint它的一些Web服务返回CAML)......谁知道?它可能在那里支持诸如SharePoint设计器之类的创作工具。但从文档和工具的缺乏中可以清楚地看出,CAML是一个或多或少的内部SharePoint事物。目前,执行CAML到HTML的转换需要以某种方式访问​​SharePoint内的CAML渲染引擎,或者重新实现它。这两种选择都不具吸引力。

我认为你的结论(调用数据返回Web服务和自己渲染HTML)可能是你最好的选择。

+1

我也可以在我的眼睛里贴上一把叉子,但那会有什么好处呢? – 2008-10-30 22:58:27

+0

感谢编辑 - 我们自己的渲染看起来就像我们要追求的路径。我想过尝试使用SharePoint的ISAPI过滤器来为我执行CAML解析/渲染,但我宁愿只编写一些UI,而不是试图破解他们的引擎。 – 2008-11-03 14:10:45