我有xml文件,它們在Web瀏覽器中查看時使用XSL樣式表進行格式化。我將xml文件保存在一箇中央位置,這是我的同事可以訪問的共享驅動器。如果他們直接從共享位置打開XML文件,則它會正確呈現,但有時它們會獲取XML的副本,並且只會獲取它們所需的XML文件。當他們在瀏覽器中查看文件時,它無法找到XSL樣式表,因此無法呈現。有沒有辦法說xsl樣式表是否可用,是否可以使用它,如果沒有,那麼只需忽略使用樣式表並顯示xml文件就好像沒有樣式表一樣。基本上這意味着當採取本地拷貝時不會出現錯誤。可以這樣做可選使用xsl樣式表
4
A
回答
-1
我懷疑沒有完整的方法來做到這一點。您可以使用使用,當進口屬性是這樣的...
<xsl:import
xmlns:fn="http://www.w3.org/2005/xpath-functions"
href="'general.xslt'"
use-when="fn:unparsed-text-available('general.xslt') />
上述元素將導入樣式表「general.xslt」如果它存在。此解決方案的問題/侷限性在於,對於@href屬性,XSLT知道從xslt的配置(OASIS目錄,命令行參數,環境變量 - 無論它是供應商特定的)哪裏可以找到general.xslt。然而,相同的位置查找邏輯不適用於採用URI參數的unparsed-text-available()。
所以,你可能想參數化這樣的上述元素...
<xsl:import
xmlns:fn="http://www.w3.org/2005/xpath-functions"
href="$stylesheet-to-import"
use-when="fn:unparsed-text-available($uri-of-stylesheet-to-import) />
假定其中以下條件:
- $樣式表對導入的參數/變量要導入的樣式表。如果可以通過XSLT引擎定位,它可以是簡寫形式,否則它應該與$ uri-of-stylesheet-to-import相同
- $ uri-stylesheet-to-import是樣式的URI如果存在,則導入表格。
- 如果$ uri-of-stylesheet-to-import指向的文件存在,那麼它是一個有效的xslt文件。
我認爲這個解決方案只適用於XSLT 2.0。我不確定XSLT 1.0。
另請參閱Dimitre對此類似問題的回答:How do I check for the existence of an external file with XSL?。
注意: 作爲fn:unparsed-text-available()的替代方法,您也可以使用fn:doc-available()。它會檢查文檔是否爲有效的XML,速度會更慢,根據您的問題,這可能會也可能不會是一件好事。
0
你大概是依靠<?xml-stylesheet?>
處理指令。我不知道有什麼辦法來參數化這種行爲如果樣式表不能找到:我敢說這取決於瀏覽器。
爲什麼不能使用絕對URI來從網絡上的任何位置獲取樣式表?您可能會遇到跨站點腳本問題,但值得嘗試。
相關問題
- 1. 選擇使用XSL樣式表
- 2. 使用XSL樣式表
- 3. 從XSL樣式表
- 4. 在XSL樣式表中使用WHERE?
- 5. 在XSL樣式表中使用SVG
- 6. XSL樣式表的差異
- 7. XML錯誤XSL樣式表
- 8. XML不能用XSL樣式表顯示
- 9. XSL樣式表不再適用於Excel
- 10. 是否有可能在xsl-stylesheet處理指令中有可選的樣式表?
- 11. 我如何能在XSL樣式表
- 12. XSL樣式表忽略節點
- 13. 自動生成XSL-FO樣式表
- 14. XSL樣式表需要幫助
- 15. Firefox和遠程XSL樣式表
- 16. XSL無法編譯樣式表
- 17. XML - XSL樣式表的問題
- 18. 無法使用XSL樣式表在Chrome中使用RSS格式工作
- 19. 使用JAX-WS和Glassfish v3的XSL樣式表URI
- 20. 使用XSL樣式表創建指向XML的鏈接
- 21. 使用.xsl樣式表在excel中打開多個.xml文件
- 22. 製作XSL樣式表使用分頁XML工作
- 23. 如何使用C#在XML文件內添加XSL樣式表?
- 24. 使用XSL樣式表測試值是否爲空XML
- 25. 使用XSL樣式表按名稱排序
- 26. 動態決定使用哪個XSL樣式表
- 27. 未找到引用xsl樣式表時的默認瀏覽器xml樣式表?
- 28. 可選樣式的列表視圖
- 29. 使用xsl輸出數學表達式
- 30. 用於動態XML數據的XSL樣式表
這是否意味着我可以在我的xml文件中使用xsl import語句作爲一行,這樣如果xml文件被移動,將會爲關聯(導入)的樣式表進行檢查?如果樣式表存在,它會很好地呈現,但如果沒有找到樣式表,它會顯示爲原始XML? –
這不起作用。瀏覽器只支持XSLT 1.0,它沒有use-when。而href屬性必須是硬編碼的,無論是在1.0還是2.0。 Downvoting。 –