需要使用XSLT 2.0从xml获取输出CSV文件
我的问题是我需要将关系飞船字段增量打印一个
issue Worker节点和从属节点是子节点,需要先打印worker记录,然后再打印对应的从属记录。关系项目归档值应根据受抚养者数量增加。请帮我谢谢
输入XML:
<Master>
<Worker_group>
<Emp_ID>1001</Emp_ID>
<E_Name> Worker1 </E_Name>
</Worker_group>
<date>05-01-2019</date>
</Master>
<Master>
<Worker_group>
<Emp_ID>1002</Emp_ID>
<E_Name> Worker2 </E_Name>
</Worker_group>
<date>04-25-2019</date>
<Dependents_group>
<Dep_Emp_ID>1002<Dep_Emp_ID>
<D_Name> Dependent1 </Name>
<Dependents_group>
<Dependents_group>
<Dep_Emp_ID>1002<Dep_Emp_ID>
<D_Name> Dependent2 </Name>
<Dependents_group>
<Dependents_group>
<Dep_Emp_ID>1002<Dep_Emp_ID>
<D_Name> Dependent3 </Name>
<Dependents_group>
</Master>
<Master>
<Worker_group>
<Emp_ID>1003</Emp_ID>
<E_Name> Worker3 </E_Name>
</Worker_group>
<date>06-23-2019</date>
</Master>
使用Xslt:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:text>id, relationship, Name, Date 
</xsl:text>
</xsl:template>
<xsl:template match="/Master/Worker_group">
<xsl:value-of select="Emp_id"/>
<xsl:text>, </xsl:text>
<xsl:value-of select= ?????/>
<xsl:text>, </xsl:text>
<xsl:value-of select="E_Name"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="Date"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="/Master/Dependents_group">
<xsl:value-of select="Dep_Emp_id"/>
<xsl:text>, </xsl:text>
<xsl:value-of select= ?????/>
<xsl:text>, </xsl:text>
<xsl:value-of select="D_Name"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="Date"/>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
输出
id, relationship, Name,date
1001,1,Worker1,05-01-2019
1002,1,Worker2,04-25-2019
1002,2,Dependent1,04-25-2019
1002,3,Dependent2,04-25-2019
1002,4,Dependent_3,04-25-2019
1003,1,Worker3,06-23-2019
```
答案 0 :(得分:0)
给出一个格式正确(!)的XML输入:
XML
<Root>
<Master>
<Worker_group>
<Emp_ID>1001</Emp_ID>
<E_Name>Worker1 </E_Name>
</Worker_group>
</Master>
<Master>
<Worker_group>
<Emp_ID>1002</Emp_ID>
<E_Name>Worker2 </E_Name>
</Worker_group>
<Dependents_group>
<Dep_Emp_ID>1001</Dep_Emp_ID>
<D_Name>Dependent1 </D_Name>
</Dependents_group>
<Dependents_group>
<Dep_Emp_ID>1001</Dep_Emp_ID>
<D_Name>Dependent2 </D_Name>
</Dependents_group>
<Dependents_group>
<Dep_Emp_ID>1001</Dep_Emp_ID>
<D_Name>Dependent3 </D_Name>
</Dependents_group>
</Master>
<Master>
<Worker_group>
<Emp_ID>1003</Emp_ID>
<E_Name>Worker3 </E_Name>
</Worker_group>
</Master>
</Root>
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/Root">
<!-- header -->
<xsl:text>id,relationship,Name </xsl:text>
<!-- data -->
<xsl:for-each select="Master/*">
<xsl:value-of select="Emp_ID | Dep_Emp_ID"/>
<xsl:text>,</xsl:text>
<xsl:number count="*"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="E_Name | D_Name"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
将返回:
id,relationship,Name
1001,1,Worker1
1002,1,Worker2
1001,2,Dependent1
1001,3,Dependent2
1001,4,Dependent3
1003,1,Worker3