我正试图使用XSL将XML文件转换为CSV,但在应用条件语句时遇到了问题。我有以下XML文件。
<?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>
我需要为每个用户提供一个具有以下恒定标题格式的输出:
userid,Apple,Avocardo,Orange,Pineapples,Height,Weight
2000,500,,1000,500,,50lb
请注意,原始XML文件中没有Avocardo和Height,它们将被分配为NULL或空值。有人能帮我为这个csv解析写一个xsl吗?
解决方案的核心可以是(在2.0中)
<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>
</xsl:text>
</xsl:template>