我在节点中有文本,其中包含类似html的回车<br/>
。我想在XSLT转换中保留这些空节点,但我没有成功。
以下是XML输入示例:
<?xml version="1.0"?>
<eventlist>
<event>
<summary>Meeting Harry</summary>
<description>Talk for Mistex Project<br/>Invite Spec</description>
</event>
<event>
<summary>Shopping with Lance</summary>
<description>Need Christmas Gift<br/>Joint Lunch<br/>Check for car</description>
</event>
</eventlist>
请注意<br/>
- 节点之间的<description>
。在转换为html时,我想保留<br/>
,结果应该是
<?xml version="1.0" encoding="iso-8859-1"?>
<table>
<tbody>
<tr>
<td>Meeting Harry</td>
<td>Talk for Mistex Project<br/>Invite Spec</td>
</tr>
<tr>
<td>Shopping with Lance</td>
<td>Need Christmas Gift<br/>Joint Lunch<br/>Check for car</td>
</tr>
</tbody>
</table>
但是使用以下非常简单的XSLT
<!-- ******************************** -->
<xsl:template match="/">
<table>
<tbody>
<xsl:apply-templates select="eventlist/event"/>
</tbody>
</table>
</xsl:template>
<!-- ******************************** -->
<xsl:template match="event">
<tr>
<td>
<xsl:value-of select="summary"/>
</td>
<td>
<xsl:apply-templates select="description"/>
</td>
</tr>
</xsl:template>
<!-- ******************************** -->
<xsl:template match="description">
<xsl:value-of select="."/>
<xsl:apply-templates select="br"/>
</xsl:template>
<!-- ******************************** -->
<xsl:template match="br">
<br/>
</xsl:template>
<!-- ******************************** -->
</xsl:stylesheet>
我得到一些奇怪的东西,如
<?xml version="1.0" encoding="iso-8859-1"?>
<table>
<tbody>
<tr>
<td>Meeting Harry</td>
<td>Talk for Mistex ProjectInvite Spec<br/>
</td>
</tr>
<tr>
<td>Shopping with Lance</td>
<td>Need Christmas GiftJoint LunchCheck for car<br/>
<br/>
</td>
</tr>
</tbody>
</table>
回车在说明末尾放错了位置。 <xsl:value-of select="."/>
只是省略了中间节点,这是可以预期的。我只是没有解决方案,也许有一个简单的解决方案?我没有把<br/>
放在正确的地方。我做错了什么???
答案 0 :(得分:1)
为什么不在描述匹配中应用模板而不是使用value-of,则不需要。
<xsl:template match="description">
<!--<xsl:value-of select="."/>-->
<xsl:apply-templates/>
</xsl:template>
结果:
<table>
<tbody>
<tr>
<td>Meeting Harry</td>
<td>Talk for Mistex Project<br/>Invite Spec</td>
</tr>
<tr>
<td>Shopping with Lance</td>
<td>Need Christmas Gift<br/>Joint Lunch<br/>Check for car</td>
</tr>
</tbody>
</table>