XMLを使用して、ダイアグラム作成ツールに表示できるコンテンツを制御するためのスキーマを定義しています。スキーマファイルは、ダイアグラムに配置できるオブジェクトの種類、それらをリンクする方法、およびこれらのオブジェクトが持つプロパティ(つまり、エディターに表示される設定可能なプロパティ)を指定します。
新しい種類の図が必要になると、新しいスキーマが作成され、.xsdに対して検証されます。スキーマファイルをよりモジュール化して保守しやすくするために、<!ENTITY>
宣言を使用して個別のファイルを含めています。特定のダイアグラム要素に一緒に属しているが、スキーマの複数の場所に表示される可能性のあるプロパティなどのリストは、別のXMLファイルに書き込まれ、関連する場所に含まれます。言う:
<!-- Nameing etc. just as an example -->
<!ENTITY CommonProerties1 SYSTEM "file:../CommonProperties1.xml">
<!ENTITY CommonProerties2 SYSTEM "file:../CommonProperties2.xml">
そして、スキーマのどこか:
<Node shape="Square">
&CommonProperties1;
<!-- Specific properties go here -->
</Node>
これにより、メンテナンスを困難にする多くのコピー貼り付けが防止され、共通のプロパティを複数のスキーマと共有することもできます。
問題は、現在、一部の共通プロパティにもフラグや列挙型のグループなどの基本要素が含まれていることです。各ファイル(「CommonProperties1.xml」など)に、次のような別の基本セットから含めることができるようにしたいと思います。 「CommonEnums.xml」と同じですが、!ENTITY宣言を使用してこれを行うことはできないと思います。
!DOCTYPEヘッダーの外側で!ENTITYを宣言することはできません。ヘッダーを追加すると、ファイルの1.2通りの方法でヘッダー宣言が取得されるため、最上位のXMLファイルが無効になります。
誰かが同じようなことをしようとしたことがありますか?問題を回避/解決するために何をしましたか?私が見逃しているより良いオプションはありますか?