我输入了xml,如:
<XML>
<A1>50</A1>
<A2>20</A2>
<A3>70</A3>
<A4>90</A4>
<A5>5</A5>
<A6>45</A6>
<A7>35</A7>
<A8>25</A8>
<A9>80</A9>
</XML>
XSLT规则可以使用它:
<xsl:template name="summfunc">
<xsl:param name="summ"/>
<xsl:param name="summands"/>
<xsl:param name="output-text"/>
<xsl:param name="output-node"/>
<xsl:if test="format-number($summ, '#.##') !=format-number(sum($summands), '#.##')">
<ERROR>
<CODE>30</CODE>
<TEXT><xsl:value-of select="$output-text"/></TEXT>
<PROBLEMNODE>
<xsl:value-of select="$output-node"/>
</PROBLEMNODE>
</ERROR>
</xsl:if>
</xsl:template>
<xsl:template match="/XML">
<xsl:variable name="tests">
<xsl:call-template name="summfunc">
<xsl:with-param name="summ" select="//A3"/>
<xsl:with-param name="summands" select="//A1 | //A2"/>
<xsl:with-param name="output-text">abrakadabra</xsl:with-param>
<xsl:with-param name="output-node" select="//A3"/>
</xsl:call-template>
<!-- ... -->
</xsl:variable>
<xsl:value-of select="$tests"/>
</xsl:template>
摘要我想打印:
<ERROR>
<CODE>30</CODE>
<TEXT>some text</TEXT>
<PROBLEMNODE>
some text, containing node
</PROBLEMNODE>
</ERROR>
很多时候,作为模板&#34; summfunc&#34;有错误。这就是为什么我只是按原样打印$ tests,如果没有错误,它将是空的(但也许这不是一个好的解决方案)。
但它不会打印标签!我收到&#34; 30some text&#34;作为文本,如果有错误,它不会打印标签。当我尝试将标签放到xsl:text时,它就不起作用,即使我使用&#34;或&#39;。
如何正确打印?如果我将它们放在值=&#34; $ tests&#34;和/ xsl:template,但不管怎样,如果它们在命名模板中,它就不会打印标签。怎么解决?
答案 0 :(得分:1)
如果您想&#34;打印标签&#34;,请使用 xsl:copy-of 而不是 xsl:value-of
所以,你需要做的就是这个
<xsl:copy-of select="$tests"/>
xsl:value-of 用于输出项目的文本值。