Я хочу преобразовать некоторые XML в HTML, который имеет следующий формат:
col1 col2 col3
Примечание: Вывод 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: надеюсь, уже знают ответ.
При представлении моего XSL
(который, не забывайте, является формой xml
), я получаю не совсем правильно сформированную ошибку:
Конечный тег 'TR' не соответствует начальному тегу 'TD'.
Это имеет смысл. Действительно:
<TD><xsl:value-of select="Column3"/> </TR>
Я не закрываю элемент TD
перед закрытием TR
. Итак, вопрос:
Как я могу преобразовать xml
в HTML
, если HTML
не xml
?
Смотри также
Обновление одного
было предложено , что можно просто включить закрывающие теги в любом случае, чтобы сделать 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>
Обновление два
Было предложено, чтобы я сдался, не стал задавать этот вопрос и просто включил дополнительные закрывающие теги. Это возможно, но это не мой вопрос. Кроме того, « решение » не работает для элементов, где закрывающий тег запрещен , например ::110000
<BR/>
или
<BR></BR>
Как бы я включил элемент <BR>
в мой вывод HTML, учитывая, что запрещено в HTML для закрытия элемента <BR>
.