1

木を見て森を見ていないのかもしれませんが、次のようになります。

私は XML ドキュメントを「設計」しており、これまでに次のようなものを考え出しました。

<element key="root">
    <data>...</data>
    <elements>
        <element key="foo">
            <data>...</data>
        </element>
        <element key="bar">
            <data>...</data>
        </element>
    </elements>
</element>

つまり、単純な階層構造です。私が今やりたいことは、ある要素から階層内の他の要素への参照を持つことです。各要素に一意の ID がある場合は簡単ですが、そうではありません。これまでのところ、各要素のキーがそのレベル内で一意であることを保証することのみを計画しています (ディレクトリ構造内のファイル名によく似ています)。

つまり、 などの完全修飾キーがあれば、root.foo参照整合性の保証は簡単になります。しかし、冗長な情報を保存することになります (fooのサブ要素であることは既にわかっていrootます。なぜその情報を 2 回保存するのでしょうか?)。

これは本質的に見た目の問題であることを認識しています。最も単純な解決策の 1 つは、おそらく ID を自動割り当てして、それで完了することです。しかし、これはかなり洗練されていない (そして、ファイルを編集するための優れたフロント エンドがない限り、エラーが発生しやすい) ため、より適切な方法でそれを行うことを望んでいました。

これを XML スキーマで実装する方法はありますか?

4

1 に答える 1

0

使用<xs:key>して<xs:keyref>

キーは指定されたコンテキスト内で一意であるため、ID のようにグローバルに一意である必要はありません。<xs:key>キー<xs:selector>のスコープまたはコンテキストを指定する要素 (キー値はこのセット全体で一意である必要があります) と<xs:field>キーノードを定義する要素が含まれています。 . キーは複数のフィールドを持つことができ、その場合、それらの組み合わせは一意でなければなりません。宣言内で使用されます<xs:key><xs:keyref><xs:element>

于 2010-09-10T18:46:52.597 に答える