0

次のような XML ファイルのスキーマを定義しようとしています。

<?xml version="1.0" encoding="UTF-8" ?>
<traverse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test.xsd">
  <cp>1.0 2.0</cp>
  <cp>3.0 -2.0</cp>
  <cp>-1.365575 0</cp>
  <cp>4 1.3</cp>
</traverse>

それぞれが 2 つの double によって定義される、少なくとも 3 つの cp (コントロール ポイント) のシーケンスである必要があります。私はこれを試しました(少なくとも3つの制御点が必要であるという制約なしで):

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="traverse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="cp" type="control-point" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="listOfValues">
    <xs:list itemType="xs:double"/>
  </xs:simpleType>
  <xs:simpleType name="control-point">
    <xs:restriction base="listOfValues">
      <xs:length value="2"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

上記の XML ファイルを検証しようとすると、XMLSpy はトラバース タグ内で cp タグを使用できないことを通知します。誰でも私を助けることができますか?ありがとう!

4

1 に答える 1

1

これを変える:

  <xs:sequence>
    <xs:element name="cp" type="control-point" />
  </xs:sequence>

これに:

  <xs:sequence>
    <xs:element name="cp" type="control-point" minOccurs="3" maxOccurs="unbounded"/>
  </xs:sequence>
于 2012-06-20T21:35:51.467 に答える