2014-09-23 82 views
1

我沒有太多的XSLT實踐經驗,所以我需要您對問題的「最佳實踐」幫助。 XML會自動生成併發送給用戶(電子郵件等)。該XML包含以下頭元素(開始和結束元素標記由於刪除,編輯的問題):使用公開的XSLT轉換XML

xml-stylesheet type="text/xsl" href="http://example.com/myvisualisation.xslt" 

XSLT上傳並可以在給定的URL。 什麼是用戶打開收到的XML的「標準/普通」方式,應用了這種轉換? (當我嘗試瀏覽器時,我得到跨域錯誤)。 是否有可能(以及如何)安排事情,以便用戶只需雙擊附加的XML,他/她就會看到轉換後的文檔?

另外,當我嘗試用MS Excel打開XML(這給了我一個應用轉換的選項)是相當「雜亂」(缺少邊框等),如果我使用瀏覽器(看起來確定)相比,雖然我使用非常標準和簡單的HTML ..沒有花哨的東西。

回答

0

我不認爲發送XML文件給「用戶」是個好主意。你爲什麼不爲它們做轉換並將結果HTML文件發送給他們 - 或者(最好是恕我直言)使用其他普遍接受的格式,如PDF?

此外,當我試圖打開XML使用MS Excel(這給了我一個選項, 申請轉換)是很「凌亂」(缺少邊框等等) 相比,如果我使用的瀏覽器(看起來OK)雖然我使用的標準和簡單的HTML非常 ..沒有花哨的東西。

很難說基於如此少的信息(沒有,真的),但它可能與Excel不作爲瀏覽器有關。

+0

基本上,我向最終用戶發送一個包:PDF(我的印刷版)+ XML(原始數據用於處理)+可視化(原始數據)。在必須包含XSLT可視化的情況下,我必須遵循一些規則。如果我包含它,或者將它上傳到網絡的某個地方,用戶仍然不能僅僅通過dbl點擊XML並且看到它被轉換 - 或者他能嗎? ..這是我想要的。 – hpet 2014-09-24 06:44:14

+0

@hpet這裏的問題是標準化。沒有普遍接受的默認應用程序來打開XML文件(不像HTML,例如,你可以假設它將在任何系統上的瀏覽器中打開)。這是瀏覽器安全性的問題。我不確定你的規則是怎麼說的,但由於你的「XSLT可視化」過程的最終結果是一個HTML文檔,所以我沒有理由不能發送它。 – 2014-09-24 07:15:20

+0

@hpet這裏的另一個問題是什麼是「用戶」?作爲一名用戶,我不希望任何人向我發送XML文件。作爲一個「複雜的用戶」,我希望您能夠將XML和XSLT文件都發送給我,並將其留給我來處理轉換。將XML文件鏈接到(本地)XSLT將是一個很好的補充 - 以防我想在瀏覽器中打開XML。 - 順便說一句,你有沒有嘗試包括**本地和服務的樣式表的鏈接? – 2014-09-24 07:33:12

0

儘管瀏覽器支持XSLT,但實際上,大多數生成HTML的XSLT都是在服務器上或脫機批處理過程中運行的,而不是在瀏覽器中運行。 如果可能,請在服務器中或脫機批處理中運行XSLT,而不是在瀏覽器中運行。

如果你在瀏覽器中轉換XML,瞭解一些嚴重的侷限和問題:

  1. XSLT 2.0不受任何主流瀏覽器的支持。
  2. 瀏覽器安全模型在影響XSLT處理的方式上有所不同。 這可能是開發中受挫的一個主要原因,或者分發依賴於基於瀏覽器的XSLT的文檔的 。

注:它不是一個 「頭元件」,但一個處理指令。你應該能夠將其粘貼到你的問題逐字,它應該是這樣的:

<?xml-stylesheet type="text/xsl" href="http://example.com/myvisualisation.xslt"?> 

如果您的文檔,而不是實際上並表示這是一個元素[錯誤],

<xml-stylesheet type="text/xsl" href="http://example.com/myvisualisation.xslt"/> 

那麼到XSLT的鏈接肯定會失敗。

最後注意:您的XML-in-MS Excel問題應單獨詢問,並添加更多細節。

+0

對不起,沒有用這個標題/處理指令正確表達我自己。但是,我確實是對的。請閱讀關於我想要完成的更多細節的帖子。關於Excel,我的不好,這只是一個無關緊要的問題。事情是,我認爲XML + XSLT更像是「即插即用」,並且易於在本地應用(在非服務器環境中) - – hpet 2014-09-24 06:48:15

+0

曾經有一段時間,XSLT看起來像是即插即用的在瀏覽器中對XML進行樣式化,因爲CSS是用於HTML樣式的,但是,唉,事實並非如此。 – kjhughes 2014-09-24 15:11:47