5

このW3C XML Schema: DOs and Don'Tsのリストに出くわし、複雑な型を使用してはならないという部分に驚きました。

使用に問題はありませんし、complexType を使用するよりも使用する方が優れている<xs:complexType name="SomeNewType">理由もわかりません。<xs:group name="someNewElement">

complexType は本当に避ける必要がありますか?

もしそうなら、なぜですか?それの何がそんなに問題なの?

代わりに何を使用する必要がありますか?

4

1 に答える 1

2

興味深いほど複雑で強力なほとんどすべての言語の場合、その言語を使用する最良の方法については、人によってさまざまな見方があります。

「complexType は本当に避けるべきですか?」と尋ねます。これまで見てきたように、あなたが指し示すドキュメントでは、Kohsuke Kawaguchi (XSD を設計したワーキング グループのメンバーであり、最初の XSD バリデーターの 1 つを含むいくつかの重要な XSD ツールを作成しました) は、XSD で特定の構成を避けるようにユーザーにアドバイスしています。 、complexType を含む、多くの場合、利点と欠点 (特に複雑さ) の比率が低いという理由で。KK の主張の説得力については、あなた自身で判断することができます (実際、そうしなければなりません)。

(私が見る限り)あなたの質問は「KKは正しいですか?」と尋ねることになるので、あなたは自分で決めるのが苦手か、少なくとも好奇心旺盛で他の人のことを知りたいと思っているようです。考える。

一般に、XSD の多くのユーザー、および XSD ツールの多くの作成者が KK に同意しないと言っても過言ではありません。彼らは、他の複合型から複合型を派生させる機能が役立つことに気づき、それを使用しています。

他の多くの人が KK に同意していると言っても過言ではありませんが、XSD のあれこれの構造は複雑すぎるため、避けたほうがよいでしょう。このように感じる人は、使用する構成と回避する構成をレイアウトする「ベスト プラクティス」を説明するドキュメントを作成します。そのようなドキュメントの内容が役立つ場合もあれば、そうでない場合もあります。XSD の複雑な型について KK に最も熱心に同意する人の多くは、XSD を使用しないで済む場合にはまったく使用しません。彼らは Relax NG (場合によっては DTD または Schematron) を好みます。

言い換えれば、資格のある観察者の意見は、資格のない観察者の意見と同様にさまざまです。この質問に関してKKに同意しない非常に賢い人を何人か知っています。また、KK自身と彼に同意する一部の人々も非常に頭が良いことを知っています. ここでどちらかを選ぶつもりはありません。

最後に、問題があるとすれば、そもそもなぜそれが言語構造に存在するのかと尋ねます。 言語を設計した人がそれを含める価値があると考えたので、どの言語にもあらゆる構成要素が存在します。XSD と複合型の場合、つまり、複合型は XSD で名前付け可能なオブジェクトとして扱われます。これは、基本的に、担当ワーキング グループの全員が複合型を言語で使用することを望んでいたためです。これは、それらが問題になるのを防ぐものではありません: 他のすべての人と同じように、優れた技術的スキルを持つ人々は間違いを犯す可能性があり、コンセンサスを求めなければならないグループは、適切な状況下で、誰も本当に好きではないデザインを作成する可能性があります (しかし、誰もが別の方法よりも好むデザイン)問題の構造をまったく持っていないということ; 妥協が何かを成し遂げる唯一の方法である場合があります)。

これが役立つことを願っています。

于 2013-11-12T03:27:20.967 に答える