對於關於XML的小項目,我嘗試使用HTML5,因爲它具有SVG和WAI-ARIA支持。我也想爲我的文檔使用XSL樣式表。但是我無法使用嵌套的SVG獲取有效的HTML5文檔。這裏有一些版本我測試至今:如何使用PHP XSLTProcessor創建HTML5 + SVG文檔
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
// content with the svg tag in the body
</html>
</xsl:template>
</xsl:stylesheet>
在結合header('Content-Type: application/xml');
它的工作原理,併產生這個HTML輸出:
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml">
// content with the svg tag in the body
</html>
但它不是HTML5,沒有一個DOCTYPE我得到了很多的錯誤在W3驗證器上。所以,試圖讓我用下面的XSL一個HTML5文檔:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="html"/>
<xsl:template match="/">
<xsl:text disable-output-escaping='yes'><!DOCTYPE HTML></xsl:text>
<html>
// content with the svg tag in the body
</html>
</xsl:template>
</xsl:stylesheet>
但不幸的是,這將產生thze以下HTML輸出:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
....
</head>
// content with the svg tag in the body
</html>
正如你可以看到它的常規HTML5,但使用它的組合header('Content-Type: application/xml');
由於在meta標籤(這是自動創建的)結尾處缺少斜線而導致失敗。使用header('Content-Type: image/xhtml+svg');
或header('Content-Type: text/html');
沒有XML解析錯誤,但該頁面不會將SVG顯示爲圖形,而是顯示爲文本(不帶標籤)。
誰能告訴我如何避免元標記插入或如何設置一個propper內容類型,將使瀏覽器渲染SVG。或者甚至有任何其他暗示讓這個工作。我真的希望保持HTML5能夠將WAI-ARIA Landmark Roles保持爲像NAV和FOOTER這樣的HTML5標籤。
SOLUTION:
這將產生有效的HTML5與SVG使用頭( ':應用:內容類型的XHTML + XML')呈現;
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:text disable-output-escaping="yes"><!DOCTYPE HTML></xsl:text>
<html xmlns="http://www.w3.org/1999/xhtml">
// content with the svg tag in the body
</html>
</xsl:template>
</xsl:stylesheet>
現場演示,你可以在這裏看到:http://kau-boys.de/HTML5-SVG.php
感謝您的支持。我不知道我可以忽略HTML5的文檔類型。我也在幾分鐘前運行它。我會在這裏發佈解決方案。在您鏈接的文檔中,還有可能更容易使用XSLT創建的非本地文檔類型。而且我知道IE目前還不支持SVG,但因爲它只是一個項目,應該顯示HTML5中使用SVG的可能性,這不是問題。再次感謝你的幫助。 – 2ndkauboy 2010-06-10 17:00:47
@ Kau-Boy:從編輯草案中可以明顯看出,沒有強制性的DOCTYPE。你甚至可以使用XHTML1.0 DOCTYPE!我也想看看你的演示。 – 2010-06-10 18:21:50
@Ajjandro:好的,我添加了我的解決方案和一個可以嘗試驗證的實時演示。 – 2ndkauboy 2010-06-10 18:55:23