我有这样的XML:
<c id="de-4" level="file">
<did>
<unitid label="Cotes">1 DNG 5</unitid>
<unittitle label="my title">some text1 <lb />some text2<lb />some text3.</unittitle>
<unitdate label="Date" normal="2014">2014</unitdate>
</did>
我想使用并转换LB标签 - &gt; BR的HTML。 我使用XSL样式表来执行此操作:
<xsl:template name="cree_cote">
<td align='left' valign='top' class="titres">
<xsl:call-template name="_noeud">
<xsl:with-param name="noeud" select="did/unittitle"/>
</xsl:call-template>
</td>
</xsl:template>
<xsl:template match="lb">
<br />
</xsl:template>
<!-- le contenu d'un noeud -->
<xsl:template name="_noeud">
<xsl:param name="noeud"/>
<xsl:for-each select="$noeud">
<xsl:text> </xsl:text>
<xsl:value-of select="text()"/>
<xsl:text> </xsl:text>
<xsl:if test="$avec_label">
<xsl:if test="@label">
<span class='ead_label'>[<xsl:value-of select="@label"/>]</span>
</xsl:if>
</xsl:if>
</xsl:for-each>
<xsl:apply-templates select="$noeud/*"/>
</xsl:template>
但转换后,我有这个:
<td valign="top" align="left" class="titres">some text1 some text2some text3.<br><br></td>
我不明白为什么我的<BR>
在文本末尾。
答案 0 :(得分:1)
由于我们无法访问您的整个XSLT,因此很难给出最干净的建议,但是在文本之后输出lb
的原因是因为您输出的是{{1在将模板应用于子节点之前!
请试一试:
text()
答案 1 :(得分:0)
更改
<xsl:template name="cree_cote">
<td align='left' valign='top' class="titres">
<xsl:call-template name="_noeud">
<xsl:with-param name="noeud" select="did/unittitle"/>
</xsl:call-template>
</td>
</xsl:template>
到
<xsl:template name="cree_cote">
<td align='left' valign='top' class="titres">
<xsl:apply-templates select="did/unittitle"/>
</td>
</xsl:template>
然后改变
<xsl:template name="_noeud">
<xsl:param name="noeud"/>
<xsl:for-each select="$noeud">
<xsl:text> </xsl:text>
<xsl:value-of select="text()"/>
<xsl:text> </xsl:text>
<xsl:if test="$avec_label">
<xsl:if test="@label">
<span class='ead_label'>[<xsl:value-of select="@label"/>]</span>
</xsl:if>
</xsl:if>
</xsl:for-each>
<xsl:apply-templates select="$noeud/*"/>
</xsl:template>
到
<xsl:template match="did/unittitle">
<xsl:text> </xsl:text>
<xsl:apply-templates/>
<xsl:text> </xsl:text>
<xsl:if test="$avec_label and @label">
<span class="ead_label">[xsl:value-of select="@label"/>]</span>
</xsl:if>
</xsl:template>
当然保留lb
元素的模板。