2016-04-07 19 views
0

XSL kullanarak XML dosyasını CSV'ye dönüştürmeye çalışıyorum Ancak koşullu ifadeler uygulanırken sorunla karşılaşıyorsunuz. Aşağıdaki XML dosyasına sahibim.XML ayrıştırılırken xsl'deki Koşullu İfadeler

<?xml version="1.0" encoding="ISO-8859-1"?> 
<document> 
    <User> 
     <userid>2000</userid> 
     <fruit> 
      <FieldValue> 
       <Name>Apple</Name> 
       <value>500</value> 
      </FieldValue> 

      <FieldValue> 
       <Name>Orange</Name> 
       <value>1000</value> 
      </FieldValue> 

      <FieldValue> 
       <Name>Pineapples</Name> 
       <value>500</value> 
      </FieldValue> 
     </fruit> 
     <biometric> 
      <FieldValue> 
       <Name>Weight</Name> 
       <value>50lb</value> 
      </FieldValue> 
     <biometric> 
    </User> 
</document> 

aşağıdaki sabit başlık formatı ile her kullanıcı için bir çıkış gerekir:

userid,Apple,Avocardo,Orange,Pineapples,Height,Weight 
2000,500,,1000,500,,50lb 

, Avocardo ve Yükseklik NULL veya boş değer olarak atanacak olan orijinal XML dosyasında eksik olduğunu unutmayınız . Birisi bu csv ayrıştırma için bir xsl yazabilir mi?

cevap

1

çözeltisi kalp

<xsl:template match="User"> 
    <xsl:variable name="this" select="."/> 
    <xsl:value-of select="userid"/> 
    <xsl:for-each 
    select="'Apple','Avocardo','Orange','Pineapples','Height','Weight'"> 
    <xsl:value-of 
    select="concat(',', $this//FieldValue[Name=current()]/value)"/> 
    </xsl:for-each> 
    <xsl:text>&#xa;</xsl:text> 
</xsl:template> 
(2.0) olabilir