我创建了包含html标签的xml,如下所示。我尝试根据我的xslt将所有xml数据转换为html。但是,我无法处理xml中包含的html标签。我需要在编写摘要标记时获取任何内容(不丢失html标记)。我该怎么办?
<checklist name="00.07-Parts">
<summary>
<table border="1" cellpadding="7" cellspacing="0" style="width:100%">
<tbody>
<tr>
<td>
<p><strong> aaaaaaa </strong></p>
</td>
<td>
<p><strong> bbbbbbbb </strong></p>
</td>
</tr>
</tbody>
</table>
</summary>
</checklist>
这里,我的XSLT部分
<xsl:for-each select="checklist">
<table class="tbChecklist">
<tbody>
<tr>
<td>
<h4>
<xsl:value-of select="@name"/>
</h4>
</td>
</tr>
<tr>
<td>
<xsl:value-of select="summary"/>
</td>
</tr>
</tbody>
</table>
</xsl:for-each>
结果
<table class="tbChecklist">
<tbody>
<tr>
<td>
<h4>00.07-Parts</h4>
</td>
</tr>
<tr>
<td>
aaaaaaa
bbbbbbbb
<td>
<tr>
</tbody>
</table>
答案 0 :(得分:2)
你可以简单地使用copy-of而不是value-of。 copy-of为您提供所选节点的全部内容,包括其他节点。
<xsl:copy-of select="summary"/>
答案 1 :(得分:0)
我需要在编写摘要标记时获取(不丢失html标记)。
只需使用xsl:copy-of select=" "
,就像这样:
<xsl:template match="Customers/checklist">
<xsl:copy-of select="." />
</xsl:template>
或者,正如上面评论中所提到的,HTML放在CDATA部分(只有在输出为XML时才有用):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" cdata-section-elements="checklist" />
<xsl:template match="Customers/checklist">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
将以下结果输出为XML:
<checklist name="00.07-Parts"><![CDATA[
]]><summary>
<table border="1" cellpadding="7" cellspacing="0" style="width:100%">
<tbody>
<tr>
<td>
<p><strong> aaaaaaa </strong></p>
</td>
<td>
<p><strong> bbbbbbbb </strong></p>
</td>
</tr>
</tbody>
</table>
</summary><![CDATA[
]]></checklist>
或者,作为第三种方式,只复制summary-tag的所有非空文本()子节点:
<xsl:template match="Customers/checklist">
<xsl:copy-of select="descendant::text()[normalize-space(.) != '']" />
</xsl:template>