質問

私はXML/XSDを学んでいるだけで、フォルダー構造をモデル化するXMLスキーマの実装に苦労しています。私が念頭に置いていたのは、サブフォルダーを表す追加のフォルダーインスタンスを持つことができるフォルダーの複雑なタイプを定義することでした。 XSDスキーマバリデーターを使用します ここ スキーマが無効であることを常に返します。

complexTypeを前もって定義してから、 ref サブフォルダーのキーワード:

<xs:complexType name="tFolder">
 <xs:sequence>
  <xs:element name="Path" type="tFolderType" msdata:Ordinal="0" />                    
  <xs:element ref="Folder" minOccurs="0" maxOccurs="unbounded" />
  <xs:element name="File" nillable="true" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
      <xs:simpleContent msdata:ColumnName="File_Text" msdata:Ordinal="0">
        <xs:extension base="xs:string">
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>                              
 </xs:sequence>
<xs:attribute name="Type" type="tFolderType" />

要素自体については:

<xs:element name="Folder" type="tFolder" />

VALIDATORによって返されるエラーは次のとおりです。

「「フォルダー」という名前を(n) '要素宣言'コンポーネントに解決することはできません。」

エラーはラインで発生します

<xs:element ref="Folder" minOccurs="0" maxOccurs="unbounded" />

要素自体内でcomplexTypeを定義すると、まったく同じエラーが得られます。

<xs:element name="Folder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Path" type="tFolderType" msdata:Ordinal="0" />
      <xs:element ref="Folder" minOccurs="0" maxOccurs="unbounded" />                          
      <xs:element name="File" nillable="true" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent msdata:ColumnName="File_Text" msdata:Ordinal="0">
            <xs:extension base="xs:string">
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>                              
    </xs:sequence>
    <xs:attribute name="Type" type="tFolderType" />
  </xs:complexType>
</xs:element>

私が読んだこと、この種の再帰は使用する必要があります ref.

誰かが私が間違ったことを教えてくれますか?たぶんXSDバリデーターに欠陥がありますか?もしそうなら、誰かがより良い選択肢を知っていますか? w3.orgのものも使用しようとしましたが、オフラインで撮影されているようです...

役に立ちましたか?

解決

これがそれを行う方法だと思います(refを使用しないでください):

<element name="test" type="tns:TestType"></element>

<complexType name="TestType">
    <sequence>
        <element name="test" type="tns:TestType"></element>
    </sequence>
</complexType>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top