C XSLT删除输出之间的空格

C XSLT删除输出之间的空格,c,xslt,C,Xslt,我提出了几个现有的问题,但它们指的是xml中存在的空间。我试图删除由于xslt代码格式而出现的空格 我有以下xsl代码,可以创建一个c文件: #if (defined(<xsl:value-of select="./@Name"/>_TEST1) || \ defined(<xsl:value-of select="./@Name"/>_TEST2) || \ defined(<xsl:value-of select="./@Name"/>_TEST3

我提出了几个现有的问题,但它们指的是xml中存在的空间。我试图删除由于xslt代码格式而出现的空格

我有以下xsl代码,可以创建一个c文件:

#if (defined(<xsl:value-of select="./@Name"/>_TEST1)  || \
 defined(<xsl:value-of select="./@Name"/>_TEST2)  || \
 defined(<xsl:value-of select="./@Name"/>_TEST3) || \
 defined(<xsl:value-of select="./@Name"/>_TEST4) || \
 defined(<xsl:value-of select="./@Name"/>_TEST5) \
                <xsl:if test="CONDITION1">
 || defined(<xsl:value-of select="./@Name"/>_TEST6)  || \
    defined(<xsl:value-of select="./@Name"/>_TEST7)  || \
    defined(<xsl:value-of select="./@Name"/>_TEST8)
                </xsl:if>
                <xsl:if test="CONDITION2">
|| defined(<xsl:value-of select="./@Name"/>_TEST9)
                </xsl:if>
)
这会产生一个c错误。 所需输出为:

 #if (defined(NAME_TEST1)  || \
 defined(NAME_TEST2)  || \
 defined(NAME_TEST3) || \
 defined(NAME_TEST4) || \
 defined(NAME_TEST5) \
 || defined(NAME_TEST6)  || \
 defined(NAME_TEST7)  || \
 defined(NAME_TEST8))
更新1

我设法让它像这样工作,虽然我真的不明白它为什么工作。有人能启发我吗

#if (defined(<xsl:value-of select="./@Name"/>_TEST1)  || \
 defined(<xsl:value-of select="./@Name"/>_TEST2)  || \
 defined(<xsl:value-of select="./@Name"/>_TEST3) || \
 defined(<xsl:value-of select="./@Name"/>_TEST4) || \
 defined(<xsl:value-of select="./@Name"/>_TEST5) \ <xsl:text></xsl:text>
            <xsl:if test="CONDITION1">
 || defined(<xsl:value-of select="./@Name"/>_TEST6)  || \
    defined(<xsl:value-of select="./@Name"/>_TEST7)  || \
    defined(<xsl:value-of select="./@Name"/>_TEST8) <xsl:text></xsl:text>
            </xsl:if>
            <xsl:if test="CONDITION2">
|| defined(<xsl:value-of select="./@Name"/>_TEST9) <xsl:text></xsl:text>
            </xsl:if>
<xsl:text>)</xsl:text>
#如果(已定义(_TEST1)|\
定义(_TEST2)|\
定义(_TEST3)|\
定义(_TEST4)|\
已定义(_TEST5)\
||定义(_TEST6)|\
定义(_TEST7)|\
已定义(_TEST8)
||已定义(_TEST9)
)

你的问题断章取义。通常,最好使用
xsl:text
将文本写入输出树

例如,而不是:

defined(<xsl:value-of select="./@Name"/>_TEST2)  || \
defined(_TEST2)|\
写:

<xsl:text>defined(</xsl:text>
<xsl:value-of select="./@Name"/>
<xsl:text>_TEST2)  || \</xsl:text>
已定义(
_测试2)||\

你的问题断章取义。通常,最好使用
xsl:text
将文本写入输出树

例如,而不是:

defined(<xsl:value-of select="./@Name"/>_TEST2)  || \
defined(_TEST2)|\
写:

<xsl:text>defined(</xsl:text>
<xsl:value-of select="./@Name"/>
<xsl:text>_TEST2)  || \</xsl:text>
已定义(
_测试2)||\
有关信息,XSLT 3.0允许(例如)


已定义({@Name}_TEST6)||\
已定义({@Name}_TEST7)||\
已定义({@Name}\u TEST8){
您可以在需要换行符的地方进行微调—我不清楚您到底需要什么。

有关信息,XSLT 3.0允许(例如)


已定义({@Name}_TEST6)||\
已定义({@Name}_TEST7)||\
已定义({@Name}\u TEST8){

你可以微调换行符的位置-我不清楚你到底需要什么。

xsl:strip space
也许吧?@KerrekSB
xsl:strip space
元素用于定义应该删除空白的元素。我的元素中没有空白,所以我认为这没有帮助。@AlexandruCimpan请发布一个可复制的示例-请参阅:。您使用的xslt处理器是什么,这只是一个样式表片段吗?当您构建完整的样式表时,它的行为是否相同?
xsl:strip space
也许?@KerrekSB
xsl:strip space
元素用于定义应该删除空白的元素。我没有“我的元素中有空格,所以我认为这没有帮助。@AlexandruCimpanu请发布一个可复制的示例-请参阅:。您使用的xslt处理器,这只是一个样式表片段吗?在构建完整的样式表时,它的行为是否相同?我试图将代码放在两者之间,但
xsl:text
不能包含子元素错误。”所以这是唯一的解决方案?我不知道。我相信这是最好的解决方案。我试图将代码放在两者之间,但是
xsl:text
不能包含子元素。所以这是唯一的解决方案?我不知道。我相信这是最好的解决方案。