0

<ExtendedData>and<Schema>要素を介して型指定されたカスタム データを組み込む、次の単純な KML の例を考えてみましょう。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Document>
    <name>KML does not validate when an 'unsignedInt' field is zero</name>
    <ExtendedData>
      <SchemaData schemaUrl="#DocumentSchemaId">
        <SimpleData name="UNSIGNED_INT">0</SimpleData>
      </SchemaData>
    </ExtendedData>
    <Schema id="DocumentSchemaId" name="doc">
      <SimpleField name="UNSIGNED_INT" type="xsd:unsignedInt">
        <displayName>Unsigned Int</displayName>
      </SimpleField>
    </Schema>
  </Document>
</kml>

この場合、1 つのkml:SimpleDataフィールドのみが定義されます。その名前はUNSIGNED_INTで、割り当てられたタイプはxsd:unsignedIntです。

問題は、このドキュメントがこの評判の良いKML バリデーターを介して検証されないことです。バリデータによって返されるエラーは次のとおりです。

"kml:SchemaData contains a kml:SimpleData value that does not
correspond to the declared type."

バリデーターがこのエラーを示している理由は、対象のフィールドに次の値が割り当てられているためです0

<SimpleData name="UNSIGNED_INT">0</SimpleData>

ただし、値がゼロ以外の符号なし整数に変更されると、ドキュメント検証されます (予想どおり)。

<SimpleData name="UNSIGNED_INT">42</SimpleData>

私の質問は、なぜこのバリデータ0は型の制約に適合しないというxsd:unsignedIntですか?

KML バリデータの処理0とKML バリデータによる処理は、 XML スキーマ標準xsd:unsignedIntの内容と矛盾します。xsd:unsignedInt

unsignedIntには、有限長の 10 進数のシーケンス (#x30-#x39) で構成される字句表現があります。例: 0、1267896754、100000

最後に、参考までに、 で使用するために定義されたすべてのデータ型のリストを次に示しますkml:SimpleField

  • xsd:文字列
  • xsd:int
  • xsd:unsignedInt
  • xsd:短い
  • xsd:unsignedShort
  • xsd:フロート
  • xsd:ダブル
  • xsd:ブール値

( KML バリデータのドキュメントOGC KML 2.2 標準の 9.9.4.2.1 節より)

4

1 に答える 1

1

これはkmlvalidatorのバグのようです、私は彼らに報告します。Oxygen XML Editorを使用して通常のスキーマ検証をテストし、検証しました。

于 2012-08-30T19:00:47.313 に答える