如何仅使用xslt创建xml文件(副本)

时间:2017-02-27 10:42:14

标签: xml xslt

我想仅使用xslt创建一个xml文件的副本。

这是xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="fichier_xslt_ecrire.xsl" type="text/xsl"?>
<tool>
  <field id="prodName">
    <value>HAMMER HG2606</value>
  </field>
  <field id="prodNo">
    <value>32456240</value>
  </field>
  <field id="price">
    <value>$30.00</value>
  </field>
</tool>

这是xsl文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="yes"/>
  <xsl:template match="@* | node()">     
      <xsl:result-document method="xml" href="Copy_of_product_{@id}-output.xml">
       <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
      </xsl:result-document>
  </xsl:template>
</xsl:stylesheet>

但问题是,当我在导航器中打开xml文件时,我没有创建第二个(副本)文件。 那我怎么能运行这个创作呢?我需要任何运行时引擎或什么? 因为我想在没有任何其他工具的情况下复制xml文件。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果您只想将该文件复制到

之外的其他文档中

<强> XSLT

<?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" indent="yes"/>
        <xsl:template match="/">     
            <xsl:result-document method="xml" href="Copy_of_product_{//@id}-output.xml">
                <xsl:copy>
                    <xsl:apply-templates/>
                </xsl:copy>
            </xsl:result-document>
        </xsl:template>
        <xsl:template match="node()|@*">
            <xsl:copy>
                <xsl:apply-templates select="node()|@*"></xsl:apply-templates>
            </xsl:copy>
        </xsl:template>
    </xsl:stylesheet>

如果你写一个spilitter而不是使用

XSLT

<xsl:template match="field">     
    <xsl:result-document method="xml" href="Copy_of_product_{@id}-output.xml">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:result-document>
</xsl:template>
<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*"></xsl:apply-templates>
    </xsl:copy>
</xsl:template>