2010-02-03 182 views
4

我在當前項目中使用XML和XSLT,我想知道是否讓瀏覽器使用樣式表將XML呈現爲HTML,而不是使用類似PHP xsltprocessor的東西。瀏覽器渲染XSLT vs PHP渲染XSLT

我使用瀏覽器xslt處理器的一個主要原因是允許API在不久的將來訪問我的XML數據。所以我想要轉換客戶端,所以我的XML仍然可用。

我可能對PHP xsltprocessor錯誤,但是當通過PHP處理xml時,收到的數據是呈現的XML(在我的情況下是HTML),並且XML數據不再可用。是對的嗎?

謝謝你清理一下。

回答

0

這一切都取決於你的最終目標是什麼。我使用一個將報告生成爲xml的應用程序,並將xml和xslt發送到瀏覽器進行處理。有這種方法的幾個原因:

  • 因爲你已經提到的,你可以在客戶端上做進一步的處理
  • HTML相當冗長,如果你有指定你的XML的控制,你可以確保它不是因爲最終你在服務器和瀏覽器之間發送了少量數據
  • xslt可以在瀏覽器上緩存,所以在第一次使用後不會開銷
  • 做的服務器上的轉換會爲您的服務器增加負載,如果您有許多人試圖同時訪問該頁面,則該負載可能會產生影響。

在某些情況下,我們在服務器上進行轉換。例如我們轉換爲html表格,然後更改http內容類型以將結果作爲excel發送。

1

我建議你在服務器端進行轉換,因爲你有更多的控制權。如果您依賴瀏覽器,則可能會在不同瀏覽器中的渲染引擎中看到細微的差異。如果您在服務器上進行轉換並傳遞html,那麼您可以通過指定要生成的html的確切內容,確保該html的靜態版本看起來正確,然後處理XSLT以確保它生成html正確。

要在客戶端獲取XML,在部分轉換中,您可以輸出需要的XML部分(或整個DOM),並將其放入JavaScript變量或頁面上可訪問的某個位置。

我發現渲染客戶端對於小型受控(例如內部)用途很好,但對於任何想要對輸出服務器端進行嚴格控制的任何情況都更可靠。

+1

我必須承認,在使用瀏覽器XSLT渲染的每個主流瀏覽器中,我都遇到了一些麻煩。但總的來說,HTML是以相同的方式呈現的,所以我認爲除了一些Javascript奇怪的行爲之外,我仍然認爲客戶端轉換並不是一個糟糕的決定。有沒有任何瀏覽器根本不支持它? – 2010-02-03 20:29:44

+0

據我所知,所有的瀏覽器都支持它,但是你會遇到它們如何處理擴展函數或XSLT基礎之外的任何差異。它可能會正常工作,但你不能真正看到最終用戶的體驗是什麼,所以這取決於對你有多重要。 – 2010-02-03 20:33:15

1

如果你使用MVC模式設計應用程序,那麼它就沒有關係。您將能夠通過API將HTML展示給常規瀏覽器和XML。

即使您在服務器端執行XSLT,在添加API時跳過該步也應該非常簡單。

通常客戶端的XSLT有很多缺點 - 高延遲,因爲樣式表和所有數據必須在之前完全加載完畢,任何開始呈現。使用普通的HTML,您可以獲得更低的延遲(只有一個文件,流式傳輸),並且在HTML完成之前即可開始下載其他資源。

+0

所以我想它的高延遲與服務器運行時間有關。但是,如果該樣式表被瀏覽器緩存呢? – 2010-02-03 20:36:02

+0

即使對樣式表進行了緩存,您仍需等到XSLT開始生成頁面之前下載完整的XML。除非你的XML比HTML小得多(比較gzipped size!),否則它仍然會變慢。 – Kornel 2010-02-04 02:57:14