我有两个XML文件,我试图使用xsl合并一些元素。
XML1:
<ALL xmlns:a="http://example.com/ns1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<a:BusinessUnit>
<a:businessUnitCode>SGS</a:businessUnitCode>
<a:longName>Singapore Global Sourcing</a:longName>
<a:parentBusinessUnitCode>CGS</a:parentBusinessUnitCode>
</a:BusinessUnit>
<a:BusinessUnit>
<a:businessUnitCode>EGH</a:businessUnitCode>
<a:longName>EMS Global HQ</a:longName>
<a:parentBusinessUnitCode xsi:nil="true"/>
</a:BusinessUnit>
XML2:
<Get_ProductFamily xmlns:aa="http://example.com/ns2">
<aa:ProductFamily>
<aa:integrationId>2323</aa:integrationId>
<aa:parentBusinessUnitCode>EGH</aa:parentBusinessUnitCode>
</aa:ProductFamily>
<aa:ProductFamily>
<aa:integrationId>3434</aa:integrationId>
<aa:parentBusinessUnitCode>CGS</aa:parentBusinessUnitCode>
</aa:ProductFamily>
<aa:ProductFamily>
<aa:integrationId>4545</aa:integrationId>
<aa:parentBusinessUnitCode>CDD</aa:parentBusinessUnitCode>
</aa:ProductFamily>
</Get_ProductFamily>
输出:
<GroupList>
<Group>
<Name>EGH - EMS Global HQ</Name>
<ProductLineList>
<ProductLine>
<Name>EGH</Name>
<CODE>2323</CODE>
</ProductLine>
</ProductLineList>
</Group>
<GroupList>
我想从第一个文件读取业务单位数据,从第二个文件读取产品系列数据并生成组信息。
步骤是: 阅读所有业务部门
组名是a:businessUnitCode和a:longName(我做过这部分)的串联
当a:parentBusinessUnitCode为空时,读取其a:businessUnitCode,在第二个文件中搜索此businessUnitCode。
如果a:businessUnitCode(第一个文件)等于aa:parentBusinessUnitCode(第二个文件) 然后打印其集成ID。
请帮助我,因为我是xsl的新手。
答案 0 :(得分:0)
我在第二个XML中搜索bussinessUnitCode并显示相应的数据。注意我使用document()函数来读取第二个XML。
<xsl:template match="/">
<GroupList>
<Group>
<xsl:apply-templates/>
</Group>
</GroupList>
</xsl:template>
<xsl:template match="a:BusinessUnit">
<xsl:variable name="businessCode" select="a:businessUnitCode"/>
<Name>
<xsl:value-of select="$businessCode"/> - <xsl:value-of select="a:longName"/>
</Name>
<xsl:if test="a:parentBusinessUnitCode[@i:nil='true']">
<ProductLineList>
<xsl:for-each select=
"document('XML2.xml')/Get_ProductFamily/aa:ProductFamily">
<xsl:if test="aa:parentBusinessUnitCode = $businessCode">
<ProductLine>
<Name><xsl:value-of select="$businessCode"/></Name>
<CODE><xsl:value-of select="aa:integrationId"/></CODE>
</ProductLine></xsl:if>
</xsl:for-each>
</ProductLineList>
</xsl:if>
</xsl:template>
</xsl:stylesheet>