ブラウザーを使用して、HTML を含む可能性のある XML を XSL スタイルシートで変換したいと考えています。この記事では、ユーザーのMads Hansenが次のように書いています。
HTML が適切な形式である場合は、エスケープしたり CDTATA でラップしたりせずに、HTML タグを埋め込むだけです。可能であれば、コンテンツを XML で保持すると役立ちます。ドキュメントをより柔軟に変換および操作できます。HTML の名前空間を設定して、HTML タグをそれをラップする他の XML から明確にすることができます。
提案されたソリューションは気に入っていますが、機能させることはできません。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