0

XML スキーマを宣言する特定の動作を理解できません。

質問 この xml スキーマは正常に動作します:

*<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://www.example.org" xmlns:ab="http://test.com"
            targetNamespace="http://www.example.org"
            elementFormDefault="qualified">
  <xsd:element name="simple1" type="complexType1"/>

  <xsd:complexType name="complexType1">
    <xsd:sequence>
      <xsd:element name="element1" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>*

しかし、targetnamespace をhttp://www.example.org以外のものに変更すると、スキーマは complexType1 を見つけられません。なぜこれが起こるのか。これは動作しません。

*<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://www.example.org" xmlns:ab="http://test.com"
            targetNamespace="http://www.example.org99999"
            elementFormDefault="qualified">
  <xsd:element name="simple1" type="complexType1"/>

  <xsd:complexType name="complexType1">
    <xsd:sequence>
      <xsd:element name="element1" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>*

前もって感謝します

4

1 に答える 1

0

などのコンポーネントを宣言すると、スキーマの にcomplexType入ります。targetNamespace属性のように、接頭辞のない名前でコンポーネントを参照するとtype="complexType1"、これはデフォルトの名前空間 (xmlns 属性で宣言されている) への参照と見なされます。最初の例ではtargetNamespace、デフォルトの名前空間は同じであるため、機能します。2 番目の例では、それらは異なっているため、そうではありません。

修正方法は?それは、あなたが何を達成しようとしているのかによって異なりますが、それはあなたが私たちに伝えていません.

于 2013-10-20T16:57:56.047 に答える