0

Clusterこれは、XML 要素に単一の XML 要素タイプ (の 1 つ以上のインスタンス) が含まれていることを宣言する正しい方法でしょうかNode

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Cluster" type="Node" minOccurs=2>
    </xs:element>

    <xs:element name="Node"/>
    </xs:element>
</xs:schema>

私が勉強している教科書と私が見つけたすべてのオンライン リソースでは<xs:complex>、 を含むより複雑な取り決めについてのみ議論されています。

4

2 に答える 2

1

実際、XSD にはあらゆる種類の問題が山積しています。適切な XSD/XML エディターを使用してみてください。思った以上に役立つはずです。

問題:

  • カーディナリティ属性 (最小/最大 Occurs) は、グローバル要素宣言には適用されません。
  • 型を参照する場合は、単純または複雑なその型の定義がどこかにある必要があります。

すでにご存知のとおり、サンプルの XML から始めます。

<Cluster>
    <Node>node1</Node>
    <Node>node2</Node>
</Cluster>

次に、適切なツールを使用して、視覚化した単純な XML よりも複雑な XSD を生成できます。

<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Cluster">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element maxOccurs="unbounded" name="Node" type="xsd:string" />
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

そこに maxOccurs が表示され、必要な値に変更できます。XSD 構文に慣れてきたら、作業中の XSD をより意味のあるものに編集することができます。結局のところ、XSD の推論は常に大衆を喜ばせるとは限りません...

于 2012-04-04T13:44:48.047 に答える
0

この特定のスキーマに関する議論に追加しようとはしません。ツールの助けを借りても、言語をより詳細に学習するまでは、いかなる種類のスキーマも記述しようとするべきではありません。非常に複雑な仕様です。W3C 仕様を読もうとしないでください。しかし、このテーマに関する多くの優れた本の 1 つを読んでください。たとえば、Eric van der Vlist の本は非常に親しみやすいものです。試行錯誤で習得できる言語ではありません。

于 2012-04-04T15:55:25.080 に答える