我想根据元素的起始字母将文件拆分为多个文件。例如:
<Employees>
<Employee id="1">
<firstname value="Atif"></firstname>
<lastname value="Bashir"></lastname>
<age >32</age>
</Employee>
<Employee id="2">
<firstname value="xyz"></firstname>
<lastname value="abc"></lastname>
<age >32</age>
</Employee>
<Employee id="3">
<firstname value="abc"></firstname>
<lastname value="none"></lastname>
<age >32</age>
</Employee>
</Employees>
应用转换后,应将上述文件拆分为两个文件,因为Employee / firstname的第一个字符[@value](并将所有数据分组)。因此对于上述情况,第一个文件应该是:
A.XML
<Employees>
<Employee id="1">
<firstname value="Atif"></firstname>
<lastname value="Bashir"></lastname>
<age >32</age>
</Employee>
<Employee id="3">
<firstname value="abc"></firstname>
<lastname value="none"></lastname>
<age >32</age>
</Employee>
</Employees>
,第二个文件应为:
x.xml
<Employees>
<Employee id="2">
<firstname value="xyz"></firstname>
<lastname value="abc"></lastname>
<age >32</age>
</Employee>
</Employees>
执行此转换的XSLT代码是什么?
谢谢!
答案 0 :(得分:3)
使用XSLT 2.0:
<xsl:for-each-group select="Employee"
group-by="lower-case(substring(firstname,1,1))">
<xsl:result-document href="{current-grouping-key()}.xml">
<xsl:copy-of select="current-group()"/>
</xsl:result-document>
</xsl:for-each-group>
答案 1 :(得分:0)
如果您使用的是XSLT 2.0,请查看<xsl:result-document>
。
如果您使用的是XSLT 1.0,则需要一个扩展元素,例如<exsl:document>
。
更多线索: