2010-09-14 30 views
0

例如,爲什麼只有擴展名爲xml時瀏覽器纔會應用xsl樣式表

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head>...</head> 
    <body> 
    <h1>Example</h1> 
    .... 
    <math xmlns="http://www.w3.org/1998/Math/MathML"> 
     <mi>x</mi><mo>+</mo><mn>3</mn> 
    </math> 
    </body> 
</html> 

如果上面的文件被命名爲mathml.xml,那麼火狐正確顯示MATHML,而不是在其命名爲mathml.html。

+1

它通常是給瀏覽器,但它似乎擴展HTML意味着它的HTML - 這是SGML和不是XML。瀏覽器查看服務器提供的MIME類型會更合理,但是因爲瀏覽器合理嗎? – 2010-09-14 06:19:13

+0

@Pavel:我不使用Firefox,但我真的懷疑它忽略了MIME類型。更有可能這是一個Web服務器配置的事情,因爲他們通常根據文件擴展名發送MIME類型時不重寫。 – musiKk 2010-09-14 07:04:23

回答

1

你可以使用mathml.xhtml

+0

很酷,它確實與xhtml擴展一起工作,所以現在如果我想堅持html擴展,我所要做的就是強制apache返回MIME類型作爲xhtml文件的HTML擴展名?如何做到這一點? – freethinker 2010-09-15 01:27:56

0

你正在本地或通過網絡加載文件嗎?

如果它通過網絡,那麼您的網絡服務器幾乎可以根據文件名後綴設置MIME類型。您可以通過安裝一個Firefox擴展程序(如Web Developer)並檢查響應標題來檢查。

如果您在本地加載文件,您的操作系統或瀏覽器可能會從文件後綴中確定MIME類型。

Firefox只在將文件標識爲XML時纔會處理xml樣式表PI。

+0

我在兩種情況下都嘗試了兩種方法,本地方法是在給出文件路徑和使用apache的情況下,獲得相同的結果。 – freethinker 2010-09-14 08:12:30

+0

這很有道理 - 在本地,瀏覽器通過查看後綴來決定您的文件是XML文件。在網絡上,Apache正在做同樣的事情。您*可*(我不認爲這是個好主意),強制Apache爲.html文件返回XML MIME類型。我想更重要的問題是 - 你想做什麼? – 2010-09-14 09:02:46

+0

主要目的是在html文件中使用xsl,然後使用xsl文檔函數在服務器上打開一個xml文檔,然後將其轉換爲html導航菜單。基本上使用xsl文件函數來替代SSI。 – freethinker 2010-09-15 01:23:57

相關問題