2013-03-24 34 views
7

noNamespaceSchemaLocation属性はXML解析にどのような影響を与えますか?定義により

noNamespaceSchemaLocation属性は、ターゲット名前空間を持たないXMLスキーマ文書を参照しています。

この属性はどのようにして解析結果を変更しますか?

<?xml version="1.0"?> 
<name 
    xmlns="http://www.example.com/name" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.example.com/name schema/schema.xsd" 
    title="Mr."> 
    <first>John</first> 
    <middle>M</middle> 
    <last>Doe</last> 
</name> 

このスキーマを参照:でも使用せず

xmlns:target="http://www.example.com/name" 
targetNamespace="http://www.example.com/name" 

:私は、スキーマからこれらの名前空間宣言を削除

<?xml version="1.0"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
xmlns:target="http://www.example.com/name" 
targetNamespace="http://www.example.com/name" elementFormDefault="qualified"> 
    <element name="name"> 
    <complexType> 
     <sequence> 
     <element name="first" type="string"/> 
     <element name="middle" type="string"/> 
     <element name="last" type="string"/> 
     </sequence> 
     <attribute name="title" type="string"/> 
    </complexType> 
    </element> 
</schema> 

たとえば、このXMLを取ります参照先XMLのnoNamespaceSchemaLocation属性。エラーはスローされませんでした。最初にこの属性が必要なのはなぜですか?

答えて

8

属性はXMLパーサーには影響しません。適切なオプションが設定されている場合は、になり、XMLスキーマプロセッサの動作に影響します。 も同様に、XML解析とXMLスキーマ検証の機能を組み合わせたプログラムの動作に影響します。これは、スキーマプロセッサに、そのドキュメントを記述するスキーマを探す場所を指示する。

しかし、スキーマプロセッサを使用しても、要素がすべて名前空間内にあるような文書の検証には影響しません(noNamespaceSchemaLocation)。

+0

返信ありがとうございました。私は私の質問が "noNamespaceSchemaLocation属性XML *検証*にどのような影響を及ぼしているはずですか?"ドキュメントの一部にネームスペースがない場合、noNamespaceSchemaLocationのエフェクトが鳴り、データとスキーマの「ネームスペースが存在しません」という問題が解決される時期です。 – Jops

+3

この属性は、スキーマプロセッサに、名前空間にない要素を検証するために使用できるスキーマを検索する場所を指示します。あなたの例では、そのような要素はありません。 –

+0

ああ、クール。マイケルの説明をありがとう。今完全に理解されています。 – Jops

関連する問題