Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT将属性添加到已处理的节点_Xslt_Saxon - Fatal编程技术网

XSLT将属性添加到已处理的节点

XSLT将属性添加到已处理的节点,xslt,saxon,Xslt,Saxon,这是示例xml: <?xml version="1.0" encoding="UTF-8"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema

这是示例xml:

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"                       
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                       
      xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog                      
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd                       
        http://www.liquibase.org/xml/ns/dbchangelog">
  <changeSet id="1" author="a">
    <createTable tableName="TABLE1">
      <column>
      </column>
    </createTable>
  </changeSet>
  <changeSet id="1-1" author="a">
    <createSequence sequenceName="SEQ_TABLE1" />
  </changeSet>
  <changeSet id="4" author="A">
    <createTable tableName="TABLE4">
      <column>
      </column>
    </createTable>
  </changeSet>
</databaseChangeLog>
并将
替换为
,然后输出文件
核心变更日志.xml
正常,但文件
未匹配的变更变更日志.xml
没有任何元素


我使用的是xslt 2.0和saxon 9.8he。

当我运行它时,我在core-changelog.xml中得到了变更集1和1-1,在unmatched-changelog.xml中得到了变更集4

如果您在无与伦比的变更日志中仍然没有看到任何内容,那么我们需要更详细地了解您是如何运行它的

顺便提一下,不匹配元素的选择可以如下所示:

select="changeSet except ($coreTablesVariable | $coreSequencesVariable | $coreIndexesVariable |$coreForeignConstraintsVariable |$coreViewsVariable)"/>

您好,这是一个示例项目。在projectroot中,执行mvnspringboot:run,它将处理模板和示例输入,我不打算尝试运行您的代码,因为其中涉及太多的设置。我注意到您使用的是JAXP TransformerHandler,它从未设计用于XSLT 2.0和
xsl:result-document
,无法控制输出文件的去向;但它不应该影响文件的内容。也许您看到的输出文件是错误的。只有一个步骤……用git下载repo并调用
mvn spring boot:run
。除了git,您不需要安装任何工具。您可以处理文件的去向…当前它们被移动到项目的根目录。这是两个步骤。这对你们来说是两个步骤,对我来说更多,因为在我的开发机器上运行不受信任的代码之前,我必须非常小心。啊哈,2018年,当存在对saxon和spring boot库的依赖时,这些问题就出现了。真正地那么,我应该为你们准备什么来调查这个问题呢?是否仅使用saxon通过命令行运行它?
<xsl:template match="changeSet" mode="legacy">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:attribute name="context">legacy</xsl:attribute>
    <xsl:copy-of select="node()"/>
  </xsl:copy>
</xsl:template>
select="changeSet except ($coreTablesVariable | $coreSequencesVariable | $coreIndexesVariable |$coreForeignConstraintsVariable |$coreViewsVariable)"/>