C XSLT删除输出之间的空格
我提出了几个现有的问题,但它们指的是xml中存在的空间。我试图删除由于xslt代码格式而出现的空格 我有以下xsl代码,可以创建一个c文件: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
#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
也许吧?@KerrekSBxsl:strip space
元素用于定义应该删除空白的元素。我的元素中没有空白,所以我认为这没有帮助。@AlexandruCimpan请发布一个可复制的示例-请参阅:。您使用的xslt处理器是什么,这只是一个样式表片段吗?当您构建完整的样式表时,它的行为是否相同?xsl:strip space
也许?@KerrekSBxsl:strip space
元素用于定义应该删除空白的元素。我没有“我的元素中有空格,所以我认为这没有帮助。@AlexandruCimpanu请发布一个可复制的示例-请参阅:。您使用的xslt处理器,这只是一个样式表片段吗?在构建完整的样式表时,它的行为是否相同?我试图将代码放在两者之间,但xsl:text
不能包含子元素错误。”所以这是唯一的解决方案?我不知道。我相信这是最好的解决方案。我试图将代码放在两者之间,但是xsl:text
不能包含子元素。所以这是唯一的解决方案?我不知道。我相信这是最好的解决方案。