2016-05-24 7 views
0

私はいくつかの既存の質問を赤で示していますが、xmlに存在するスペースを参照していました。私はxsltコード形式のために発生するスペースを削除しようとしています。XSLTは出力間のスペースを削除します

私はCファイルを作成する必要があり、次のXSLコードを持っている: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) 

) 

#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)) 

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

'xsl:strip-space'おそらく? –

+0

@KerrekSB 'xsl:strip-space'要素は、空白を削除する要素を定義するために使用します。私は私の要素に白いスペースがないので、それが助けになるとは思わない。 –

+0

@AlexandruCimpanu **再現可能な**例を投稿してください - 参照:[mcve]。 –

答えて

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> 
+0

私はその間にコードを入れようとしましたが、 'xsl:text'は子要素を含んではいけませんエラー –

+0

私の更新を確認してください。 –

+0

これは唯一の解決策ですか? –

2

、XSLT 3.0は、(例えば)ことができます

<xsl:if test="CONDITION1" expand-text="yes"> 
defined({@Name}_TEST6) || \ 
defined({@Name}_TEST7) || \ 
defined({@Name}_TEST8){ 
</xsl:if> 

あなたは微調整することができますが改行がほしいと思う - それは私にあなたが必要とするものを正確にはわかりません。

関連する問題