2016-05-19 5 views
1

私は以下のXMLコードを持っています。キーワードを連結しています。gnd_idですが、 "それぞれのため"と "連結する"方法を一緒に実装する方法はありません。XSLTの各ループに2つの異なる2つの要素を連結するにはどうすればよいですか?

出力は次のとおりです。Test、4354672-9; Test1を、4023299から2

は、それは私のXMLです:

<_nested__objekttyp__schlagworte> 
     <objekttyp__schlagworte> 
     <_id>3146</_id> 
     <lk> 
      <schlagworte date-created="2016-05-03T16:47:48+02:00" date-last-updated="2016-05-03T22:50:15+02:00"> 
      <_id>23</_id> 
      <keyword> 
       <de-DE>Test</de-DE> 
      </keyword> 
      <gnd_id>4354672-9</gnd_id> 
      </schlagworte> 
     </lk> 
     </objekttyp__schlagworte> 
     <objekttyp__schlagworte> 
     <_id>3147</_id> 
     <lk> 
      <schlagworte date-created="2016-05-03T17:11:58+02:00" date-last-updated="2016-05-03T22:45:38+02:00"> 
      <_id>24</_id> 
      <keyword> 
       <de-DE>Test1</de-DE> 
      </keyword> 
      <gnd_id>4023299-2</gnd_id> 
      </schlagworte> 
     </lk> 
     </objekttyp__schlagworte> 

、これが私のXSLTです:

<subject>            
     <xsl:for-each select="objekttyp/_nested__objekttyp__schlagworte/objekttyp__schlagworte/lk/schlagworte/schlagwort"> 
     <xsl:value-of select="de-DE"/> 

     </xsl:for-each> 
     <xsl:for-each select="objekttyp/_nested__objekttyp__schlagworte/objekttyp__schlagworte/lk/schlagworte"> 
     <xsl:if test="position() > 1">, </xsl:if> 
     <xsl:value-of select="gnd_id"/> 
     </xsl:for-each> 

     </subject> 
+1

いいえ、 'xsl:for-each select =" objekttyp/_nested__objekttyp__schlagworte/objekttyp__schlagworte/lk/schlagworte ">はすでに投稿したコードに基づいて簡単に達成できるようです。 –

+0

テキスト出力が必要な場合は、スタイルシートに 'subject'要素があるのはなぜですか? –

+0

@MartinHonnen完璧、ありがとう、それは動作します。 1つのループだけで決定を見つけることを考えなかった –

答えて

2

はこのようにそれを試してみてください?

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" encoding="UTF-8"/> 

<xsl:template match="/_nested__objekttyp__schlagworte"> 
    <xsl:for-each select="objekttyp__schlagworte/lk/schlagworte"> 
     <xsl:value-of select="keyword/de-DE" /> 
     <xsl:text>, </xsl:text> 
     <xsl:value-of select="gnd_id" /> 
     <xsl:if test="position() != last()"> 
     <xsl:text>; </xsl:text> 
     </xsl:if> 
    </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

ここで連結を使用する理由はありません。個々の値を直接出力ツリーに配置することができます。

関連する問題