XSLT:如何将文件拆分成多个文件并使用源文件中的元素?

时间:2016-06-08 15:39:50

标签: xml xslt-2.0

根据我的要求,我有一个从JSON转换为XML的冗长文件。我想基于名为" object"的元素将其拆分为多个文件。并使用" object / name",一个子元素作为文件名。我可以使用的文件中没有属性。我发现的所有示例都使用某种ID属性。在下面的示例中,我希望输出文件包含所有"对象"数据,包括元素标签。输出文件应为" NewMethod.xml"

感谢您提供任何帮助。

单个对象节点的截断示例(原始非常冗长)是:

<objects>
<object>
    <operations>
        <operation>create</operation>
    </operations>
    <enums>
    </enums>
    <name>NewMethod</name>
    <parent />
    <fields>
        <field>
            <create_required>true</create_required>
            <name>name</name>
            <datatype />
            <is_immutable>false</is_immutable>
            <enum_type />
            <is_list>false</is_list>
            <rest_revision>0</rest_revision>
            <range />
            <is_read_only>false</is_read_only>
            <null_value />
            <dict_key />
            <object_types />
            <type>string</type>
            <compound_type />
        </field>
        <fields>
            <ref_pattern>/abc/abc-{method_id}</ref_pattern>
            <ids>
                <id>method_id</id>
            </ids>
            <ref_create_pattern>/abc/abc-new</ref_create_pattern>
            <compounds>
            </compounds>
            <rest_revision>0</rest_revision>
            <alias_of />
            <children>
                <child>childa</child>
                <child>childb</child>
            </children>
            <delete_rest_revision>0</delete_rest_revision>
            <ref_collection_pattern>/abc</ref_collection_pattern>
</object>

1 个答案:

答案 0 :(得分:1)

处理所有object元素并创建结果文档,例如

<xsl:template match="/">
  <xsl:apply-templates select="//object"/>
</xsl:template>

<xsl:template match="object">
  <xsl:result-document href="{name}.xml">
    <xsl:copy-of select="."/>
  </xsl:result-document>
</xsl:template>