1
使用瀏覽器,我想要將可能包含某些HTML的XML轉換爲XSL樣式表。 在this article,用戶Mads Hansen寫道:使用替代命名空間在XML內進行XSL轉換
如果精心形成你的HTML,那麼就嵌入HTML標籤不逃逸或CDTATA包裝 。如果可能的話,它有助於保持您的內容在XML中。它爲您提供更多靈活性來轉換和操作文檔。 您可以爲HTML設置一個名稱空間,以便您可以從包裝它的其他XML中消除您的HTML標記的歧義。
我喜歡建議的解決方案,但無法使其工作。我用H作爲命名空間HTML:
temp.xml
<?xml version='1.0' encoding='UTF-8' ?>
<?xml-stylesheet type='text/xsl' href='temp.xsl'?>
<root xmlns:h="http://www.w3.org/1999/xhtml">
<MYTAG title="thisnthat">
text before ol
<h:ol>
<h:li>item</h:li>
<h:li>item</h:li>
</h:ol>
text after ol
</MYTAG>
</root>
temp.xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:h="http://www.w3.org/1999/xhtml">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/root">
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<title></title>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="MYTAG">
<h3>
<xsl:value-of select="@title" />
</h3>
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
輸出(從Firefox 18)是:
thisnthat
text before ol item item text after ol
輸出是在瀏覽器窗口中呈現的還是在轉換後的實際HTML中顯示的?如果是前者,請顯示HTML(使用Firebug)。另外,如果沒有標識轉換,最後一個'apply-templates'只會寫出ol的文本(即不復制節點)。 –
「我喜歡所提出的解決方案,但無法使其工作。」不能做什麼工作?預期的結果是什麼?請向我們展示原始輸出,而不僅僅是它在Firefox中的外觀。 – JLRishe
那麼,問題是什麼?我沒看到一個。 –