使用基于节点的XSLT拆分XML文件

时间:2013-09-03 18:27:37

标签: xml xslt-2.0

我开始学习更多关于使用XSLT解析XML的知识 - 但即使在研究了其他解决方案之后,我仍然无法正确编写样式表,将大型XML文件分解为基于节点的较小XML文件。

我有一个包含1500左右摘要的大型XML文件。该文件的结构如下所示:

<rows>
    <row>
    <ID>P-1-28-08</ID>
    <ABSNO>4286</ABSNO>
    <title>..article title...</title>
    <topic>..article topics..</topic>
    <authors>..article authors..</authors>
    <abstract>..article abstract..</abstract>
    <keywords>..article keywords..</keywords>
    </row>

    <row>
    <ID>P-1-28-09</ID>
    <ABSNO>4461</ABSNO>
    <title>..article title...</title>
    <topic>..article topics..</topic>
    <authors>..article authors..</authors>
    <abstract>..article abstract..</abstract>
    <keywords>..article keywords..</keywords>
    </row>

    <row>
    <ID>P-1-28-10</ID>
    <ABSNO>4056</ABSNO>
    <<title>..article title...</title>
    <topic>..article topics..</topic>
    <authors>..article authors..</authors>
    <abstract>..article abstract..</abstract>
    <keywords>..article keywords..</keywords>
    </row>
<rows>

我正在寻找的输出是让每个<row>节点都是自己的XML文件,并以<ABSNO>节点作为文件名。

这可以通过样式表运行原始XML文件来完成吗?任何人都有时间帮我看看会是什么样子?

1 个答案:

答案 0 :(得分:0)

<xsl:result-document>应该找到一份工作。只是非常简单的示例(期望原始xml文件中的文档节点<rows>。)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/rows/row">
        <xsl:result-document method="xml" href="{ABSNO}.xml">
            <xsl:copy-of select="." />
        </xsl:result-document>
    </xsl:template>

</xsl:stylesheet>