<Root>
<Property>
<CollectionID>ESTATE_APPRAISAL</CollectionID>
<CollectionTypeCode>003</CollectionTypeCode>
<Valuation>
<PropertyReference>
<ID>CONTRIBUTIONFACTOR</ID>
</PropertyReference>
<ValueGroup>
<PropertyValue>
<NameSpecification>
<Name>CF 4 - General Purpose Asset</Name>
</NameSpecification>
</PropertyValue>
</ValueGroup>
</Valuation>
<Valuation>...</Valuation>
<Valuation>...</Valuation>
<Valuation>...</Valuation>
</Property>
<Property>
<CollectionID>ESTATE_APPRAISAL</CollectionID>
<CollectionTypeCode>003</CollectionTypeCode>
<Valuation>...</Valuation>
<Valuation>...</Valuation>
<Valuation>...</Valuation>
</Property>
</Root>
大家好,上面是我需要展平的XML结构,以接收一个节点作为属性的XML。我遇到的问题是,我需要循环使用多个评估节点。
当我执行for-each标记时,它只会将值带到第一个评估节点,然后进入下一个属性进行处理。在示例中,我包括只有一个属性结构。在完整的xml文件中有这样的倍数,结构也类似于其他属性。
我需要一个像结构一样出现在表格中的数据 集合ID,TypeCode,属性引用,属性值
全部谢谢。
答案 0 :(得分:1)
或许这样的事情?
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1">
<xsl:template match="/">
<Properties>
<xsl:for-each select="//Valuation">
<Property>
<xsl:attribute name="CollectionID">
<xsl:value-of select="../CollectionID"/>
</xsl:attribute>
<xsl:attribute name="TypeCode">
<xsl:value-of select="../CollectionTypeCode"/>
</xsl:attribute>
<xsl:attribute name="PropertyReference">
<xsl:value-of select="PropertyReference/ID"/>
</xsl:attribute>
<xsl:attribute name="PropertyValue">
<xsl:value-of select="ValueGroup/PropertyValue/NameSpecification/Name"/>
</xsl:attribute>
</Property>
</xsl:for-each>
</Properties>
</xsl:template>
</xsl:stylesheet>