Я подписан на xml
<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">
<changeSet author="system (generated)" id="1538720867962-1">
<createTable tableName="AS_JOURNALEVENTDETAILATTRMAP">
<column name="JOURNALEVENTTYPEID" type="NUMBER(9, 0)">
<constraints primaryKey="true" primaryKeyName="PK$AS_JOURNALEVENTDETATTRMAP"/>
</column>
<column name="JOURNALEVENTDETAILATTRID" type="NUMBER(9, 0)">
<constraints primaryKey="true" primaryKeyName="PK$AS_JOURNALEVENTDETATTRMAP"/>
</column>
<column name="LISTORDER" type="NUMBER(9, 0)">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet id="c529c6ea-45c2-4ec2-8c9d-7bc935434d21" author="system">
<setTableRemarks remarks="this is wrong"
tableName="AS_JOURNALEVENTDETAILATTRMAP"/>
<setColumnRemarks tableName="AS_JOURNALEVENTDETAILATTRMAP"
columnName="JOURNALEVENTTYPEID"
remarks="Journal event type identifier"/>
<setColumnRemarks tableName="AS_JOURNALEVENTDETAILATTRMAP"
columnName="JOURNALEVENTDETAILATTRID"
remarks="Journal event detail attribute identifier"/>
<setColumnRemarks tableName="AS_JOURNALEVENTDETAILATTRMAP"
columnName="LISTORDER"
remarks="Order in list"/>
</changeSet>
</databaseChangeLog>
и точно такой же документ с именем fixedremarks.xml
, но есть небольшие изменения <setTableRemarks remarks="this is ok" tableName="AS_JOURNALEVENTDETAILATTRMAP"/>
со следующим шаблоном, который я пытаюсь исправитьатрибут remarks
внутри setTableRemarks
, но безуспешно - я не знаю, как правильно скопировать этот атрибут из внешнего XML.
<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xpath-default-namespace="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns="http://www.liquibase.org/xml/ns/dbchangelog">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:variable name="originalChangeLog" select="document('/tmp/fixedremarks.xml')"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:key name="remarkTableName" match="setTableRemarks" use="@tableName"/>
<xsl:template match="changeSet[setTableRemarks]">
<xsl:variable name="currentRemarkTable" select="setTableRemarks/@tableName"/>
<xsl:comment select="$currentRemarkTable"/>
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:element name="setTableRemarks">
<xsl:attribute name="remarks"
select="$originalChangeLog/key('remarkTableName', $currentRemarkTable)"/>
<xsl:attribute name="tableName" select="setTableRemarks/@tableName"/>
</xsl:element>
<xsl:copy-of select="*[not(self::setTableRemarks)]"/>
</xsl:copy>
</xsl:template>
</xsl:transform>
Может кто-нибудь сказать мне, как правильно сопоставить примечание из внешнего документа?