【发布时间】:2018-06-22 14:00:43
【问题描述】:
我有以下 xml:
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog>
<changeSet id="1" author="a">
<createTable tableName="TABLE1">
<column></column>
</createTable>
</changeSet>
<changeSet id="2" author="A">
<createTable tableName="TABLE2">
<column></column>
</createTable>
</changeSet>
<changeSet id="3" author="A">
<createTable tableName="TABLE3">
<column></column>
</createTable>
</changeSet>
<changeSet id="4" author="A">
<createTable tableName="TABLE4">
<column></column>
</createTable>
</changeSet>
</databaseChangeLog>
这是我的 xslt:
<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:variable name="tables" select="('TABLE1','TABLE4')"/>
<xsl:template match="databaseChangeLog">
<xsl:for-each select="changeSet/createTable">
<xsl:if test="@tableName=$tables">
<xsl:value-of select="../changeSet"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:transform>
我想选择整个changeSet 元素,其中tableName 属性将匹配$tables 数组值之一。所以在这种情况下应该有如下输出:
<changeSet id="1" author="a">
<createTable tableName="TABLE1">
<column></column>
</createTable>
</changeSet>
<changeSet id="4" author="A">
<createTable tableName="TABLE4">
<column></column>
</createTable>
</changeSet>
我正在使用 saxon 9.8he 进行转换。
【问题讨论】: