XMLファイルを入力として受け取るデスクトップアプリケーションがあります。新しい機能がアプリケーションに導入されると、新しいXMLファイルを作成する必要があります。XML変換の自動化
新しいXMLの形式は、既存のXMLの形式と80%似ています。したがって、このXMLの自動化は、新しい拡張のために私の時間を80%削減します。
私はすでにXSDについて考えましたが、これが正しい方法であるかどうかわかりません。
また、XML変換の自動化には他に何か可能ですか?
XMLファイルを入力として受け取るデスクトップアプリケーションがあります。新しい機能がアプリケーションに導入されると、新しいXMLファイルを作成する必要があります。XML変換の自動化
新しいXMLの形式は、既存のXMLの形式と80%似ています。したがって、このXMLの自動化は、新しい拡張のために私の時間を80%削減します。
私はすでにXSDについて考えましたが、これが正しい方法であるかどうかわかりません。
また、XML変換の自動化には他に何か可能ですか?
XSLTは、宣言型プログラミング言語を学んでいるならば、自動的にXMLをに変換するのに最適です。同一の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"/>
は、新しいXMLに変換されることnot-needed
要素を防ぐことができます。
そして、このテンプレート
、<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
(しかしないその下のすべてのもの)を置き換えます。
この方法でIDベースの変換を数分で作成できるのは一般的です。幸運なことに、この種の力は、同様に高い結果対努力比で、より複雑な変換にも及んでいます。
も参照してください。How to get started with XSLT?