2016-03-25 13 views
0

XSD ile aynı düzeyde olan birden çok girişi, bir hedef öğeye virgülle ayrılmış değerler olarak eşlemeye çalışıyorum. can bu XSLT'de yapılabilir olduğunu 1,0virgülle ayrılmış olarak tek bir çıkış yanıt elemanına birden çok giriş öğesini eşleştirin

Girdi yapısı

<Errors> 
<error> 
<errorcode>code</errorcode> 
<errortype>type</errortype> 
<paramater1>error1</paramater1> 
<paramater2>error2</paramater2> 
<paramater3/>error3</paramater3> 
<paramater4/>error4</paramater4> 
<error> 
<Errors> 

Çıktı

<output>error1,error2,error3,error4</output> 

unutmayın - errorcode gibi diğer unsur, errortype O kullanıyorum .. aynı kalmalıdır diğer eşlemelerde.

cevap

0

Sen bu şablonları kullanarak deneyebilirsiniz:

<xsl:template match="error"> 
    <xsl:copy> 
     <!-- apply identity transform for child elements which name doesn't start with 'parameter' --> 
     <xsl:apply-templates select="*[not(starts-with(name(), 'paramater'))]"/> 

     <!-- output comma-separated value from child elements which name start with 'parameter' --> 
     <output> 
      <xsl:for-each select="*[starts-with(name(), 'paramater')]"> 
       <xsl:value-of select="."/> 
       <xsl:if test="position() &lt; last()"> 
        <xsl:text>,</xsl:text> 
       </xsl:if> 
      </xsl:for-each> 
     </output> 
    </xsl:copy> 
</xsl:template> 

<!-- identity template --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 
İlgili konular