2008-10-30 32 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