如何为XML文件生成更多描述性文件名?我将其分成几部分?

时间:2014-07-31 17:49:01

标签: xml nawk

我有一对大/长的XML文件,我正在使用它来分解,这样我就可以更轻松地使用与我的项目实际相关的部分。我所拥有的代码正在做我想要的,但是它生成的文件缺少描述性文件名,这使我更加耗费时间来识别哪些子XML文件对应于我想要使用的数据。这就是我现在所拥有的:

First XML file source

将此文件分开的代码:

nawk ' {print > "kingresult"(NR%1?i:i++)".txt"; }' i=1 PI.txt

Second XML file source

将此文件分开的代码:

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;元素可以添加到文件名中。如何修改我的代码以获取创建更具描述性的文件名?

1 个答案:

答案 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>