假设下面的记录是xml格式的
EmpNo名称enrollingDates 123 abc 10/01/2022-10/02/2022-10/05/2022
当前,reocrd是以一行形式出现的,即使注册日期列中的日期不同,我们需要将它分成三行,如下所示
EmpNo名称enrollingDates 123 ABC 10/01/2022 123 ABC 10/02/2022 123 ABC 10/05/2022
我们需要在XSLT2.0中这样做
如有任何帮助,将不胜感激。
我是xslt新手,我还没有尝试过,但是如果你们中的任何人能够分享您的想法,我将非常感激。
发布于 2022-11-02 20:21:53
给定格式良好的XML输入,如:
<Employee>
<EmpNo>123</EmpNo>
<Name>ABC</Name>
<enrollingDates>10/01/2022-10/02/2022-10/05/2022</enrollingDates>
</Employee>您可以应用以下样式表:
XSLT2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="Employee">
<xsl:variable name="common" select="EmpNo, Name" />
<xsl:for-each select="tokenize(enrollingDates, '-')">
<Employee>
<xsl:copy-of select="$common"/>
<enrollingDate>
<xsl:value-of select="."/>
</enrollingDate>
</Employee>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>得到:
结果
<?xml version="1.0" encoding="UTF-8"?>
<Employee>
<EmpNo>123</EmpNo>
<Name>ABC</Name>
<enrollingDate>10/01/2022</enrollingDate>
</Employee>
<Employee>
<EmpNo>123</EmpNo>
<Name>ABC</Name>
<enrollingDate>10/02/2022</enrollingDate>
</Employee>
<Employee>
<EmpNo>123</EmpNo>
<Name>ABC</Name>
<enrollingDate>10/05/2022</enrollingDate>
</Employee>请注意,本例中的结果是XML片段,而不是格式良好的XML文档(没有单个根元素)。
https://stackoverflow.com/questions/74294687
复制相似问题