<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:ブール値