2

顧客から入手した XML スキーマとインスタンス ドキュメントがあります。たとえば、ドキュメントは次のようになります。

<doc>
   <carId>12</carId>
</doc>

そして、スキーマに従って有効です。

これに私の属性で注釈を付けたいと思います:

<doc>
   <carId myns:valid="true">12</carId>
</doc>

注釈付きのドキュメントが何らかのスキーマに従って有効であることを望みます-どのスキーマでもかまいません。元のスキーマに基づいていると思います。

私の質問は、元のスキーマを変更せずに新しいスキーマに「拡張」する方法があるかどうかです。あるいは、独自のスキーマに従って有効である場合、そのような属性を追加することは常に合法ですか?

元のスキーマについては何も推測できません。つまり、その要素で xsd:anyAttribute が許可されていると宣言されているとは限りません。

4

1 に答える 1

1

これは、 xsd:anyattributeを使用して宣言されます。任意の属性に対してオープンのままにするか、特定の名前空間に制限するか、または (最も一般的には) 現在定義されているもの以外の名前空間に対して許可することができます)。

有効性を確認するだけで、それ以外の場合は実行時にスキーマ データを必要としない場合の簡単な答えの 1 つは、属性をコピーから削除して検証することです。

また、complexTypes に名前があり、元のスキーマが final を使用してこれを禁止していない限り、すべての complexType に必要な anyAttribute 宣言を使用してスキーマを生成し、拡張によって派生させることもかなり簡単です。

しかし、本当に入力スキーマを制御できない場合は、それを変更する以外に選択肢はありません。

于 2009-02-22T19:17:07.497 に答える