11

次で始まる xsd ドキュメントがあります。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:import namespace="http://www.w3.org/XML/1998/namespace"     schemaLocation="http://www.w3.org/2001/xml.xsd"/>
    <xs:complexType name="T_segment">
        <xs:sequence>
            <xs:element ref="element" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute ref="xml:space" use="required"/>
        <xs:attribute ref="id" use="required"/>
    </xs:complexType>
...

この xsd を BizTalk などのマッピング アプリケーションで使用しようとすると、名前空間について不平を言って爆発します。そのため、xs:import 名前空間タグを削除すると、xs:attribute ref="xml:space" タグについて不平を言います。それで、私はそれを取り除き、それはうまくいくようです(少なくとも爆発しません)。

私の質問は、これらのタグは何のためのものですか? それらを削除すると、xsdが壊れますか?

私が知っていることから、名前空間は競合を避けるためのものです。しかし、xsd ではすべてに xs というプレフィックスが付き、スキーマ自体には xmlns:xs="http://www.w3.org/2001/XMLSchema" が含まれています。そのインポートが何のためにあるのかわかりません。

4

1 に答える 1

11

この<xs:import />要素は、XML 名前空間をスキーマにインポートします。インポートされたネームスペースには、「スペース」属性の定義が含まれています。この<xs:attribute ref="xml:space" use="required"/>ビットは、インポートされたスキーマからの参照によって「T_segment」複合型に必要な「スペース」属性を定義します (つまり、定義を書き直す必要がないように)。space 属性は基本的に、要素にとって空白が重要かどうかを定義する機能を提供します。

現在、アプリケーションによっては、実際に問題が発生している可能性があります。これは、基本的に、このスキーマで記述されたドキュメントを使用するアプリケーションに関連する可能性のある複合型から制約を削除しているためです。アプリケーションについて詳しく知らなければ、これがあなたのケースで重要かどうかを判断するのは困難です。

于 2010-01-22T21:29:33.017 に答える