このチュートリアルに従って、733 行のスキーマを 16 個の個別のファイルまたはサブスキーマにリファクタリングし、それぞれが独自の名前空間を持ちます。現在、最上位のスキーマはわずか 77 行です。これらのサブスキーマを使用して、他のトップレベルのスキーマを構築する計画です。
問題は、ほとんどの最上位スキーマが非常に似ており、いくつかの下位レベルの詳細のみが異なることです。たとえば、ある最上位スキーマはすべてPaymentMethodType
の をサポートしていますが (チュートリアルを参照)、別の最上位スキーマは VISA と MasterCard のみをサポートしている場合があります。現在、トップレベルのスキーマを作成する私の方法には、かなりの重複が含まれています。たとえば、VISA と MasterCard のみがサポートされる最上位のスキーマを作成する現在の方法では、 と を複製Main.xsd
しOrderType.xsd
、 をカスタマイズCommonTypes.xsd
して再利用しCustomerTypes.xsd
ます。(私の実際のスキーマははるかに長いため、より多くの重複が含まれます。)
この重複は、主にメンテナンスの課題が発生するため、受け入れられません。つまり、異なる名前を持つ同一のサブスキーマをいくつでも維持する必要があります。
私が知りたいのは、サブスキーマの重複を避けるために、何らかの構成ファイル (XSLT など) を使用せずにスキーマを自動的に生成する方法があるかどうかです。
また、この場合、すべてのサブスキーマで同じターゲット名前空間を宣言することをお勧めします (xml スキーマの名前空間xs
と同様ですが、カスタム サブスキーマで別の名前空間を宣言しますか?