0

リクエストトランザクションとレスポンストランザクションにさまざまなxmlトランザクションを使用します。応答トランザクションは要求トランザクションをエコーし​​、「ヒット」情報を提供します。エコーを表示しようとしたときに、要素がオプションであり、デフォルトで提供されている値と同じ値である場合、その要素は省略されていることに気付きました。

<Request Name="Marty Jones" Education="0"/>

リクエストに応じて、「名前」が必須で「教育」がオプションの場合、列挙は(0-なし、1-高校、2-大学)で、デフォルトは「0」です。上記の要素は次のように表示されます。

<Request Name="Marty Jones"/>

Education = "2"と指定すると、次のように表示されます。

<Request Name="Marty Jones" Education="2"/>

オプションのデフォルト値が省略されている理由はありますか?どんなコンディションでもエコー全体を見せたいです。

4

3 に答える 3

1

スキーマを示しておらず、何の処理を行っているかを説明していません。

属性のデフォルト値を定義するスキーマを使用して指定された XML を検証すると、ドキュメントの「スキーマ検証後の情報セット」にデフォルト値が含まれます。提供された証拠から、検証を行っていないか、表示しているものは PSVI ではありません。

于 2013-01-11T18:22:30.363 に答える
1

多くの XSD 対応ツールは、XML を記述するときにこれを行います。デフォルトと同じ値を省略した場合 (省略可能である場合)、XML を短くして読みやすくするという考え方です。たとえば、XSD 自体の場合、minOccurs="1"またはの値はmaxOccurs="1"、書き出すときに省略されます。XSD が<element><sequence><choice>などに含まれている可能性があるため、それらがどれほど乱雑になるか想像してみてください。

XSD で解析する場合、デフォルト値とデフォルト値に等しい明示的な値は区別されないことに注意してください。この情報がないと、ツールはどちらが最初に使用されたかを再構築できません。

ただし、誰もがすべてのアプリケーションでこの動作を望んでいるわけではありません。一部のツールには、これをオフにする構成スイッチがあります。この問題全体は XSD 仕様の一部ではないため、そのような構成スイッチはツールに依存します。そのため、使用しているツールをお知らせください。

ところで:これは、この問題に関する質問です。特定のツールに関する他の質問へのリンクがあります。(たとえば、MarkLogic にはスイッチがあります):

Xml スキーマ仕様は、デフォルトでオプションの属性のシリアル化を定義していますか?

于 2013-01-12T04:15:32.260 に答える
0

属性宣言には、「required」の値を取ることができる「use」プロパティがありますが、「default」では機能しません。要するに、以下のようなものが必要ですが、有効ではありません。

<attribute name="Education" default="0" use="required/>

つまり、デフォルトを割り当てて属性を必須にすることはできません。

于 2013-01-11T19:36:02.100 に答える