通过XSLT将缺少元素值的XML转换为宽CSV格式



如何有效地转换此XML文档

<?xml version="1.0" encoding="UTF-8" ?>
<Document>
<Person>
<Entry>
<Name>Height</Name>
<Value>172</Value>
</Entry>
<Entry>
<Name>Weight</Name>
<Value>73</Value>
</Entry>
</Person>
<Person>
<Entry>
<Name>Height</Name>
<Value>180</Value>
</Entry>
<Entry>
<Name>Weight</Name>
<Value>70</Value>
</Entry>
<Entry>
<Name>Age</Name>
<Value>30</Value>
</Entry>    
</Person>
<Person>
<Entry>
<Name>Height</Name>
<Value>176</Value>
</Entry>
<Entry>
<Name>Age</Name>
<Value>25</Value>
</Entry>    
</Person>  
</Document>  

进入这个CSV文件?

"Height","Weight","Age"
"172","73",""
"180","70","30"
"176","","25"

这与这个问题不同,在这个问题中,缺失(或变化(在元素中,而不是在元素值中。

怎么样:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:template match="/Document">
<xsl:text>"Height","Weight","Age"&#10;</xsl:text>  
<xsl:for-each select="Person">
<xsl:text>"</xsl:text>
<xsl:value-of select="Entry[Name='Height']/Value"/>
<xsl:text>","</xsl:text>
<xsl:value-of select="Entry[Name='Weight']/Value"/>
<xsl:text>","</xsl:text>
<xsl:value-of select="Entry[Name='Age']/Value"/>
<xsl:text>"&#10;</xsl:text>  
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

最新更新