2017-01-09 13 views
2

である場合にのみ、私はXSLTにいくつかの運動をやろうとしていますし、これが私の最初のXSLTの試みです:は、のために、各XSLTの使用してXMLの要素を追加し、タグ値が非空で

私は私のように次のXMLを持っています入力

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <elementA> 
     <elementB attB="valueb"> 
      <elementC attC="c-value"> 
       what I want 
      </elementC> 
     </elementB> 
     <elementB attB="valueb"> 

     </elementB> 
    </elementA> 
</root> 

と、次のXSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" 
     indent="yes" /> 
    <xsl:template match="/root/elementA"> 
     <newElement> 
      <xsl:for-each select="elementB[@attB='valueb']"> 
       <valuef> 
        <xsl:for-each select="./elementC"> 
         <xsl:value-of select="."> 
         </xsl:value-of> 
        </xsl:for-each> 
       </valuef> 
      </xsl:for-each> 
     </newElement> 
    </xsl:template> 
</xsl:stylesheet> 

私が手に変換されたXMLは次のとおりです。

<newElement> 
    <valuef> 
      what I want 
    </valuef> 
    <valuef/> 
</newElement> 

私は(これらが原因elementBが子としてelementCを持っていないのに作成されます)、空(valuef)タグを取り除きたいです。

どこが間違っていますか?

ありがとうございました!

+0

XMLとXSLTのスニペットでは、http://xsltransform.net/pPJ8LVCで得られる結果は単に空の ''要素です。だから質問を編集し、あなたが得ると言う出力を得るためのXML入力を提供することを検討してください。 –

+0

完了 - ありがとうございました、インデントされたコードを提供していないのは残念です。 – user2522941

答えて

0

あなたはvaluefに各elementCをマッピングしたいなら、あなたは単に入力

<?xml version="1.0" encoding="UTF-8"?> 
    <root> 
     <elementA> 
     <elementB attB="valueb"> 
      <elementC attC="c-value"> 
       what I want 
      </elementC> 
     </elementB> 
     <elementB attB="valueb"> 

     </elementB> 
     </elementA> 
</root> 

ため出力が

<newElement> 
    <valuef> 
       what I want 
      </valuef> 
</newElement> 

http://xsltransform.net/pPJ8LVC/1を見ているそのよう

<xsl:for-each select="elementB[@attB='valueb']/elementC"> 
     <valuef>     
       <xsl:value-of select="."/> 
     </valuef> 
    </xsl:for-each> 

を使用することができます。

+0

ありがとうございますが、これは私が必要とするものとは異なります。 さらに、関心のあるセクションを含まないレコードでは、コードが余分な(空の)レコードも作成します。 – user2522941

+0

あなたの質問の入力に空のレコードはありません。 –

関連する問題