我重写了几个现有问题,但它们指的是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>
)
但是使用上面的结构,输出是:
#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)
)
这给出了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))
UPDATE1
我设法让它像这样工作,虽然我真的不明白为什么它有效。有人可以启发我吗?
#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>
答案 0 :(得分:2)
有关信息,XSLT 3.0允许(例如)
<xsl:if test="CONDITION1" expand-text="yes">
defined({@Name}_TEST6) || \
defined({@Name}_TEST7) || \
defined({@Name}_TEST8){
</xsl:if>
您可以微调您想要换行的位置 - 我不清楚您的确切要求。
答案 1 :(得分:1)
你的问题已脱离背景。通常,最好使用xsl:text
将文字文本写入输出树。
例如,而不是:
defined(<xsl:value-of select="./@Name"/>_TEST2) || \
写:
<xsl:text>defined(</xsl:text>
<xsl:value-of select="./@Name"/>
<xsl:text>_TEST2) || \</xsl:text>