这听起来像是一个愚蠢的问题,但我对xslt来说还是个新手。 所以对于以下代码
<short_desc>Hello<use_arg_label/>World </short_desc>
如果我使用
<xsl:template match="use_arg_label"> <xsl:text> </xsl:text> </xsl:template>
它用空格替换标记本身。
我希望输出为
<short_desc>Hello <use_arg_label/> World </short_desc>
谢谢!
答案 0 :(得分:0)
如果您使用XSLT 2及更高版本,则只需利用xsl:next-match
将复制委派给身份转换:
<xsl:template match="use_arg_label">
<xsl:text> </xsl:text>
<xsl:next-match/>
<xsl:text> </xsl:text>
</xsl:template>
使用全局声明在XSLT 3(参见http://xsltfiddle.liberty-development.net/gWcDMeg)中轻松设置身份转换
<xsl:mode on-no-match="shallow-copy"/>
或在XSLT 2中拼写为
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
使用XSLT 1,您需要调用身份转换
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="@* | node()" name="identity">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="use_arg_label">
<xsl:text> </xsl:text>
<xsl:call-template name="identity"/>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>