2011-12-09 19 views
0

關於引用從XML XSL樣式表一個簡單的問題中的XSL參考...可網址作爲XML

到現在爲止,我一直引用使用UNC樣式表,例如:

<?xml-stylesheet type="text/xsl" href="\\test\... 

現在我期待在使用URL引用XSL,如:

<?xml-stylesheet type="text/xsl" href="http://mysite.com/xsltest.xsl 

然而,這與一個失敗的「訪問被拒絕的錯誤處理 資源」(我.E。 XSL)

所以只是爲了確認 - 可以將URL用作XML中的XSL引用嗎?

+0

您使用的是哪種XSLT處理器?這是在瀏覽器中? –

+0

是它的瀏覽器 – Amit

回答

0

簡短回答是肯定的。您應該能夠在任何現代瀏覽器中打開該XML並查看正在使用的XSL。

但總的來說,這取決於您如何處理XML - 例如,您可能能夠在瀏覽器中打開該URL,但XML處理器由於例如代理或防火牆而無法處理。

0

由於href pseudoattribute是一個IRI,它是一個國際化的URI--它應該可以工作。

您不應該將UNC放置在href的pseudoattribute中(並且在任何期望URI/IRI/URL的地方),因爲它甚至不是有效的URI。

編輯 例子:

  1. 網址爲href屬性:

    <?xml-stylesheet type="application/xsl" href="http://www.domain.com/sheet.xsl" ?>. 
    
  2. URI(這不是URL)的href屬性:

    <?xml-stylesheet type="application/xsl" href="urn:isbn:0451450523" ?> 
    

    在這種情況下,它的語法正確但在語義上它沒有意義(樣式表被引用isbn;))另外,還有一些URI看起來像是URL(甚至在開始時使用http://),但不指向任何內容。這是合法的。 URI只是一個標識符,並不一定是一個位置。

  3. IRI(這不是URI)作爲href屬性

    <?xml-stylesheet type="application/xsl" href="urn:country:españa" ?> 
    

    並沒有太大的意義要麼,但它只是一個例子。 IRI是URI的超集,支持Unicode字符(在示例中爲ñ)。

不正確使用UNC,其中IRI預計

<?xml-stylesheet type="application/xsl" href="\\youserver\resource" ?> 

這是非法的。 UNC(統一命名約定)字符串不是IRI(因此不是URI或URL)。 xml-stylesheet定義只允許IRI作爲href屬性的值,因此將UNC字符串放在那裏是不正確的,你只需運行它就行了。如果您嘗試在任何非Windows操作系統中打開您的xml,它可能無法正常工作。

+0

<?xml-stylesheet type =「application.xsl」href =「test.xsl」IRI =「http://foo.com/」?> 這是你一直在談論的 – Amit

+0

@ Amit編號href屬性是一個IRI(國際化資源標識符),它是URI的超集(它又是URL的超集)。因此,任何網址都應該在那裏執行,包括您嘗試的網址。 href =「\\ test \」。是另一個故事,因爲它不是一個有效的IRI/URI/URL,並且可能僅適用於Windows。你不希望你的xml只能是windows。 – soulcheck

+0

你能引用一個相同的例子嗎?我四處搜尋,但找不到一個。非常感謝您的幫助! – Amit