2011-06-27 12 views
3

多くのxmlの例では、以下の例のようにxmlで使用されない多くのネーム・チェーマを参照しています。xsiaop、およびデフォルトの という名前空間をネーム・チェマとして定義しました。私たちがそれらを使用するのではなく、それらを定義する目的は何ですか? xmlを非常に大きなものとして添付しませんでした。XML名前空間とschemalocationプロパティ?

2番目の質問は次のとおりです。 - 私たちは、このnameschemasを使用して...私たちは通常、namechemasの値を定義し、http://someAdddress//のようないくつかのWebアドレス とschemalocationと仮定します。 ABCなどの任意の値で定義するとどうなりますか?それはどんな差異を生み出すのだろうか?これらのウェブアドレスから処理している はありますか?

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:aop="http://www.springframework.org/schema/aop" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/ 
schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema 
/aop/spring-aop-2.0.xsd"> 

もう一つの問題は、我々はAOPの名前空間のためだけでなく、XSI名前空間のschemalocationを定義しているされています。なぜそうなのか?

最後の質問はxsiの代わりにxsi1という名前空間を定義できますか?それが何かを作るかどうか

答えて

4

一般に、名前空間のバインディングがドキュメント内で使用されていない場合、その名前空間の宣言は冗長であり、安全に省略することができます(逆に、私はそれが事実であるべきだと言いますが、例外があります。 1つはDTD検証であり、特定の要素に対して特定の名前空間宣言の有無が必要な場合があります(DTD処理は名前空間認識ではないため、名前空間を属性として扱います)。別のややまれな例外:私は名前空間宣言が名前空間接頭辞のバインディングを宣言する以外のセマンティクスを伝えるために使用されるXMLボキャブラリーを見てきました。例えば、バージョン情報を示すかもしれません。それは悪いXMLデザインですが、悪いXMLデザインがたくさんあります。

xsi:schemaLocationについては、ツール/アプリケーションによっては無視されるものもあれば、特定の場所にあるスキーマに対してスキーマ検証を実行する要求として解釈するものもあります。

+0

マイケルに感謝します。 2番目の質問はどうでしょうか: - 私たちはこの名前hemhemを使っていると仮定します。私たちは通常、http:// someAdddress //のようなウェブアドレスでnamechemasとschemalocationの値を定義しました。 ABCなどの任意の値で定義するとどうなりますか?それはどんな差異を生み出すのだろうか?これらのウェブアドレスから処理する処理はありますか? –

0

最初の段落で、XML名前空間を定義して使用しないとどういうことを尋ねましたか?

何も悪いことはありません。あなたの使用のためだけにあり、あなたはそれを使用しません。あなたの関数で定義されている変数のように、あなたが使っていないだけのものです。

xsi、aop、およびデフォルト名前空間を使用していないという記述にエラーがあります。それは本当ではありません。 xsiはXMLスキーマインスタンスです。あなたは書いた次の行にそれを使います。<xsi:schemaLocation ... />基本的に、xsd/dtdファイルで作成したスキーマ定義のインスタンスを作成することができます。あなたはaopを使用しているかもしれないし、使用していないかもしれない。xmlファイルを表示するまではわからない。デフォルトの名前空間では、ちょっと混乱します。 XML文書のデフォルト名前空間は、このXML文書で使用されているすべての要素が "<some namespace>"名前空間で宣言されていることをスキーマバリデータに通知します。 「XML文書のスキーマの参照」という見出しのhttp://www.w3schools.com/Schema/schema_schema.aspを参照してください。

ここで、2番目の質問は、すべての名前空間が一般にURLとして定義されていることです。それを別の名前として定義できますか?

はい、できます。 xsdとxmlファイルのサンプルを示します。ここで

<?xml 
    version="1.0" 
    encoding="UTF-8" 
?> 

<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="mynamespace" 
    xmlns="mynamespace" 
    elementFormDefault="qualified" 
> 
    <xs:element name="note"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="to"> 
        <xs:complexType> 
         <xs:attribute name="lang" type="xs:string" use="required"></xs:attribute> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

XMLです:

<?xml 
    version="1.0" 
    encoding="utf-8" 
?> 

<note 
    xmlns:note="mynamespace" 
    xmlns="mynamespace" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="mynamespace myschema.xsd" 
> 
    <note:to lang="en"></note:to> 
</note> 

だから、私は、名前空間のために別の名前を定義して、それは私の日食で完璧に動作していることがわかります。

私は、人々が名前空間としてURIを使用する理由があると思います(私はここから推測しています)。私が "mynamespace"のように単に名前を保持し、他の人があなたのスキーマをインポート/使用したいのであれば、あなたの名前とその名前が衝突する可能性があるからです。 URIは一意であり、他の人があなたのURIを使用してアプリケーション用のスキーマを作成する理由がないため、世界中のすべての人がその名前を使用しないように、単純な名前を書くことはできません。 。

3番目の質問は、xsiの場合と同じように、アプリのschemaLocationを定義しなかった理由です。あなたのschemaLocationをもう一度見てください。あなたは4つの "スペース区切り"値を定義しました。 xsiは2、aopは2です。

あなたの最後の質問は、xsiではなくxsi1を定義することでした。あなたはできる。あなたが望む任意の名前を定義することができます。名前空間を表現するための略語として使用される変数。

PS:私は最近XML/XSDの学習を始めました。だから私の答えが間違っていると分かったら、正しい答えを教えてください。私は私のものを編集します。ありがとうございました。