XML 转换自动化
XML transformation automation
我有一个桌面应用程序,它将 XML 文件作为输入。当应用程序引入新功能时,我必须创建新的 XML 文件。
新 XML 的格式与现有格式相似度为 80%。因此,此 XML 的自动化将使我用于新增强功能的时间减少 80%。
我已经想过XSD,但不知道这样对不对
或者 XML 转换自动化还有什么可能吗?
XSLT 是自动转换 XML 的理想选择,前提是您准备学习一种声明式编程语言。
当新的XML与现有的XML有80%的相似度时,开始恒等变换,
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
将以相同方式复制 XML。
然后添加模板以涵盖新的 XML 与旧的有何不同。例如,将此模板添加到身份转换中,
<xsl:template match="not-needed"/>
将阻止 not-needed
元素被转换为新的 XML。
还有这个模板,
<xsl:template match="old-element">
<new-element/>
</xsl:template>
将用 new-element
替换 old-element
(及其下面的所有内容)。
或者,这个模板,
<xsl:template match="old-element">
<new-element>
<xsl:apply-templates select="@*|node()"/>
</new-element>
</xsl:template>
将用 new-element
.
替换 old-element
(但 不是 下面的所有内容)
以这种方式在几分钟内创建基于身份的转换是很常见的。幸运的是,这种能力可以扩展到更复杂的转换,并具有同样高的结果与努力比率。
另请参阅:How to get started with XSLT?
我有一个桌面应用程序,它将 XML 文件作为输入。当应用程序引入新功能时,我必须创建新的 XML 文件。
新 XML 的格式与现有格式相似度为 80%。因此,此 XML 的自动化将使我用于新增强功能的时间减少 80%。
我已经想过XSD,但不知道这样对不对
或者 XML 转换自动化还有什么可能吗?
XSLT 是自动转换 XML 的理想选择,前提是您准备学习一种声明式编程语言。
当新的XML与现有的XML有80%的相似度时,开始恒等变换,
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
将以相同方式复制 XML。
然后添加模板以涵盖新的 XML 与旧的有何不同。例如,将此模板添加到身份转换中,
<xsl:template match="not-needed"/>
将阻止 not-needed
元素被转换为新的 XML。
还有这个模板,
<xsl:template match="old-element">
<new-element/>
</xsl:template>
将用 new-element
替换 old-element
(及其下面的所有内容)。
或者,这个模板,
<xsl:template match="old-element">
<new-element>
<xsl:apply-templates select="@*|node()"/>
</new-element>
</xsl:template>
将用 new-element
.
old-element
(但 不是 下面的所有内容)
以这种方式在几分钟内创建基于身份的转换是很常见的。幸运的是,这种能力可以扩展到更复杂的转换,并具有同样高的结果与努力比率。
另请参阅:How to get started with XSLT?