Xml xsl:text会发生什么?

Xml xsl:text会发生什么?,xml,xslt,xslt-3.0,oxygenxml,Xml,Xslt,Xslt 3.0,Oxygenxml,我有一个使用xslt生成文本文件的代码 这是一个相当大的数据量粘贴在这里,所以我会尝试,只有过去的相关数据 我有一个这样的模板,这是我的出发点 <xsl:template match="addrmap[not(@name='ADDRMAP_NAME_NOT_USED')]"> <xsl:result-document href="{$OUTPUT_DIR}/{@name}_defs_p.vhd"> <xsl:call-template name="vhd

我有一个使用xslt生成文本文件的代码

这是一个相当大的数据量粘贴在这里,所以我会尝试,只有过去的相关数据

我有一个这样的模板,这是我的出发点

<xsl:template match="addrmap[not(@name='ADDRMAP_NAME_NOT_USED')]">
  <xsl:result-document href="{$OUTPUT_DIR}/{@name}_defs_p.vhd">
    <xsl:call-template name="vhdl_header">
      <xsl:with-param name="block" select="."></xsl:with-param>
    </xsl:call-template>

<xsl:text>
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

use work.pk_avalon_mm_extif_defs;
</xsl:text>

    <xsl:text>Test 2</xsl:text><xsl:text>&#xa;</xsl:text>
    <xsl:variable name="offset" select="rdt:all2dec(rdt:resolve_offset(./@offset))"/>
    <xsl:text>Test 3</xsl:text><xsl:text>&#xa;</xsl:text>
    <xsl:apply-templates mode="map">
      <xsl:with-param name="offset" select="$offset"/>
    </xsl:apply-templates>

    </xsl:call-template>
  </xsl:result-document>
</xsl:template>


<xsl:template match="enum" mode="map">
  <xsl:text>Test 4</xsl:text><xsl:text>&#xa;</xsl:text>
  <xsl:text>Test 5</xsl:text><xsl:text>&#xa;</xsl:text>
</xsl:template>
我不明白它为什么会这样做。在我看来,这是在进入模板时发生的事情。因为我有第二个模板在这之后执行,它的行为类似

如果我现在获取并删除xsl:text,并将其作为原始文本

<xsl:template match="enum" mode="map">
Test 4<xsl:text>&#xa;</xsl:text>
  <xsl:text>Test 5</xsl:text><xsl:text>&#xa;</xsl:text>
</xsl:template>
现在“测试4”有了正确的缩进,但是现在它在“测试3”下面3行

我希望这是有道理的

我用的是氧气,但我似乎无法摆脱这一困境


关于

考虑将您的问题减少到最小但完整的样本,以便我们重现问题。到目前为止,我们只能猜测处理所有子节点(包括文本节点)的
xsl:apply templates mode=“map”
通过您自己的模板或内置模板或
xsl:mode
设置从输入中输出一些文本节点。但是你没有显示任何输入

如果只想处理
enum
元素,可以尝试
,如果只想处理子元素而不处理文本节点,请使用
select=“*”
。更激进的方法可能是使用
xsl:strip space
剥离空白

Test 2
Test 3


    Test 4
Test 5
<xsl:template match="enum" mode="map">
Test 4<xsl:text>&#xa;</xsl:text>
  <xsl:text>Test 5</xsl:text><xsl:text>&#xa;</xsl:text>
</xsl:template>
Test 2
Test 3



Test 4
Test 5