我有一对大/长的XML文件,我正在使用它来分解,这样我就可以更轻松地使用与我的项目实际相关的部分。我所拥有的代码正在做我想要的,但是它生成的文件缺少描述性文件名,这使我更加耗费时间来识别哪些子XML文件对应于我想要使用的数据。这就是我现在所拥有的:
将此文件分开的代码:
nawk ' {print > "kingresult"(NR%1?i:i++)".txt"; }' i=1 PI.txt
将此文件分开的代码:
nawk -v RS="</?Results>" -v FS="<Result>" '{ for(N=1; N<=NF; N++) if($N ~ /<[/]/) print FS $N > "stateresult00"++C".xml" }' 20140805_AllState.xml
第一个XML文件正在逐行分割;第二个是在nawk找到新的“Result”元素的地方分开。但是,在这两种情况下,生成的文件名都如下所示:
result1.xml result2.xml result3.xml
......等等。
如果文件名更具描述性,它会节省大量时间,如下所示:
RESULT1-John.xml result2-Jane.xml result3-Jake.xml
对于第一个文件,如果只将行的第一个单词合并到文件名中,则可以接受。
在第二个XML文件的情况下,如果&lt;中的第一个单词是理想的。候选名称&gt;元素可以添加到文件名中。如何修改我的代码以获取创建更具描述性的文件名?
答案 0 :(得分:0)
XSLT 2.0解决方案:
<xsl:for-each select="/*/Result">
<xsl:result-document
href="result{position()}-{tokenize(CandidateName, '\s+')[1]}.xml">
<xsl:copy-of select="."/>
</xsl:result-document>
</xsl:for-each>