2016-04-07 9 views
0

XMLファイルをXSLを使用してCSVに変換しようとしていますが、条件文を適用する際に問題が発生しました。 私は以下のXMLファイルを持っています。XMLを解析中にxslの条件文

<?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> 

Iは、以下の一定のヘッダフォーマットでユーザ毎の出力が必要です。

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

、Avocardo及び高さがNULLまたは空の値として割り当てられる元のXMLファイルには存在しないことに注意してください。 誰かがこのCSV解析用のxslを書くのに役立つでしょうか?

答えて

1

溶液の心臓は

<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)とすることができます