2
數據文件:使用xsltproc
工具這個xslt有什麼問題?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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-2.0.xsd">
<changeSet >
...
</changeSet>
<changeSet >
...
</changeSet>
</databaseChangeLog>
XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="databaseChangeLog/changeSet">
<top>
<xsl:copy-of select="*"/>
</top>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
:
xsltproc input.xslt input.xml
輸出什麼。
我的xslt有什麼問題?
最終工作table.xslt:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:db="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<xsl:for-each select="db:databaseChangeLog/db:changeSet">
<xsl:document href="base/tables/{position()}_{name(*[1])}_{*[1]/@tableName}.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-2.0.xsd">
<xsl:copy-of select="."/>
</databaseChangeLog>
</xsl:document>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
注:這個拆分的changelog(liquibase generateChangeLog輸出)成單個變化 日誌文件
xsltproc table.xslt liquibase.changelog.xml
這是在日誌文件中每個changeSet成功生成一個文件。 (我的下一個目標是將單個表上的變更集進行分組,但這不在此問題的範圍內)
如果您想知道我在做什麼。
Liquibase遷移工具爲現有數據庫生成單個更改日誌文件。我正在嘗試將每個表/對象(特別是mysql)的輸出拆分爲單獨的日誌文件。
我會接受它在一段時間工作的偉大,感謝@proskor – sakhunzai
我不認爲這會工作。 –
好吧,可能copy-of元素的select屬性應該是select =「。」而不是select =「*」,但這不是問題。 – proskor