12

定義により:

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

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

たとえば、次の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>

このスキーマを参照する:

<?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>

これらの名前空間宣言をスキーマから削除しました。

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

参照するXMLでnoNamespaceSchemaLocation属性を使用しなくても、エラーはスローされませんでした。そもそもなぜこの属性が必要なのですか?

4

1 に答える 1

11

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

ただし、スキーマ プロセッサを使用しても、noNamespaceSchemaLocation属性は、要素がすべて名前空間にあるようなドキュメントの検証には影響しません。

于 2013-03-24T09:52:27.203 に答える