一部の xml を次の形式の HTML に変換したい:
<TR><TD> 列1 <TD> 列 2 <TD> 列 3 </TR>
注:出力はHTMLであり、オプションの終了タグは省略されています。これが問題であり、質問が存在する理由です。
私が使用している XSL のスニペットは次のとおりです。
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
doctype-system='http://www.w3.org/TR/html4/strict.dtd'
doctype-public='-//W3C//DTD HTML 4.01//EN'
indent='yes'
method='html'
/>
...
<xsl:for-each select="/">
<TR><TD><xsl:value-of select="col1"/><TD><xsl:value-of select="col2"/><TD><xsl:value-of select="col3"/></TR>
</xsl:for-each>
XSL の内容が目的の HTML と一致することがわかります (読みやすいようにラップされています)。
<TR> <TD><xsl:value-of select="Column1"/>
<TD><xsl:value-of select="Column2"/>
<TD><xsl:value-of select="Column3"/> </TR>
注: XSLT から得られるエラーを知っている人は、答えを知っていることを願っています。
XSLmy (これは の形式であることを忘れないでください) を提示すると、xml整形式でないエラーが発生します。
終了タグ「TR」が開始タグ「TD」と一致しません。
これは完全に理にかなっています。それはそう:
<TD><xsl:value-of select="Column3"/> </TR>
TDを閉じる前に要素を閉じませんTR。質問は次のとおりです。
ではない場合、どうすればxmlに変身できますか?HTMLHTMLxml
こちらもご覧ください
1つ更新
XSL を有効にするために、単純に終了タグを含めることも提案されています (読みやすいように折り返されています)。
<TR> <TD><xsl:value-of select="col1"/></TD>
<TD><xsl:value-of select="col2"/></TD>
<TD><xsl:value-of select="col3"/></TD> </TR>
次に、 を使用するxsl:output method='html'と、最終的な HTML コンテンツで</TD>タグが魔法のように省略されます。動作しないことを除いて:
<TR><TD>col1</TD><TD>col2</TD><TD>col3</TD></TR>
2つ更新
私はあきらめて、わざわざこの質問をするのではなく、オプションの終了タグだけを含めることをお勧めします。それは可能ですが、それは私の質問ではありません。また、「解決策」は、終了タグが禁止されている要素では機能しません。例:
<BR/>
また
<BR></BR>
HTML では要素を閉じることが禁止さ<BR>れているため、HTML 出力に要素を含める方法を教えてください。<BR>