代码之家  ›  专栏  ›  技术社区  ›  piah

在新的xml文件中保存xml转换

  •  0
  • piah  · 技术社区  · 2 年前

    嘿!

    我有一个xslt文件来转换我的xml,它工作得很好:) 但我只在氧气终端得到结果,而不是在单独的文件中。

    我试过:

    <xsl:stylesheet 
    xmlns="http://www.tei-c.org/ns/1.0" 
    xmlns:telota="http://www.telota.de"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xpath-default-namespace="http://www.tei-c.org/ns/1.0"
    exclude-result-prefixes="xs"
    version="2.0">
    
        <xsl:result-document href="new_badius.xml"/>
    

    这给了我一个错误:“元素xsl:result文档不能直接出现在xsl:stylesheet中”

    尝试了一些层次结构的变体:

    <xsl:template match="node()|@*"> 
        <xsl:copy> 
            <xsl:result-document href="new_file.xml"/>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
    

    <xsl:template match="node()|@*"> 
        <xsl:result-document href="new_file.xml"/>
        <xsl:copy> 
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
    

    这给了我一个错误,即只能创建一个new_file.xml(为空)

    我该把它放在哪里 <xsl:result-document href="new_file.xml"/> 或者,是否有更好的方法将我的结果保存为.xml?

    0 回复  |  直到 2 年前
        1
  •  1
  •   Martin Honnen    2 年前

    这个 xsl:result-document 属于一个模板,该模板显然取决于您的XML输入结构、样式表结构以及结果文档的编号和所需内容。

    假设您希望处理完整的文档,以构建一个结果树,并将其写入您可能想要的结果文档中,例如。

    <xsl:template match="/">
      <xsl:result-document href="new_file.xml">
        <xsl:apply-templates/>
      </xsl:result-document>
    </xsl:template>
    

    然后,假设您的样式表有一些有意义的模板,可以将输入元素转换为所需的输出元素。

    另请注意,oXygen允许您配置一个转换场景,在该场景中,您可以定义将主要结果写入一个您可以定义其名称的文件,请参阅 https://www.oxygenxml.com/doc/versions/26.1/ug-editor/topics/the-output-tab.html .

    如果从命令行运行Saxon,请使用例如。 -o:new_result.xml .

    如果您运行Java代码或Python代码,请参阅Saxon文档中的相关API文档。