我正在编写一个包,以编程方式创建KML文件。我编写它的方式是读取xsd文件并生成包代码(这样,当模式被更新时,我可以快速地、有希望地正确地得到一个新包)。
因此,为了正确起见,对模式的细微之处的解释对我来说是很重要的,我需要一个非常了解这一点的人来帮助我。
KML2.2XSD中有几个例子激发了我的问题: DataExtension,SchemaDataExtension,SchemaExtension,SimpleFieldExtension,UpdateExtensionGroup,UpdateOpExtensionGroup
我的问题是关于所有这些,但是使用一个具体的例子,在实际的实践中,KML文件中的'DataExtension‘的表达式是什么?
XSD看起来像:
<element name="ExtendedData" type="kml:ExtendedDataType"/>
<complexType name="ExtendedDataType" final="#all">
<sequence>
<element ref="kml:Data" minOccurs="0" maxOccurs="unbounded"/>
<element ref="kml:SchemaData" minOccurs="0" maxOccurs="unbounded"/>
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<element name="Data" type="kml:DataType" substitutionGroup="kml:AbstractObjectGroup"/>
<complexType name="DataType" final="#all">
<complexContent>
<extension base="kml:AbstractObjectType">
<sequence>
<element ref="kml:displayName" minOccurs="0"/>
<element ref="kml:value"/>
<element ref="kml:DataExtension" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="name" type="string"/>
</extension>
</complexContent>
</complexType>
<element name="DataExtension" abstract="true"/>元素DataExtension是抽象的,没有与其相关联的类型,也不是替换组的名称,因此它在任何地方都没有给该方带来的具体数据位。然而,complexType 'DataType‘允许我向任何元素(包括这种类型)中添加零或多个元素,在这种情况下,元素名为'Data’。
当发出包含“数据”元素的元素“ExtendedData”时,“DataExtension”是如何表示自己的?
<ExtendedData>
<Data name="string">
<displayName>...</displayName> <!-- string -->
<value>...</value> <!-- string -->
<?dataExtentionTag?>...</?dataExtentionTag?> <! -- XXX -->
</Data>
... <! -- SchemaData can go here -->
</ExtendedData>因此,在上面的XXX中,标记是什么,在这里可以得到什么样的数据,如何在适当的KML文档中格式化呢?关于这个细节级别的文档在哪里?(我阅读了http://www.opengeospatial.org/standards/kml/关于KML2.2的工程报告,但没有结果。
发布于 2014-05-23 22:22:06
您可以使用substitutionGroup of DataExtension作为具有自定义数据元素的KML的扩展。
下面是一个简单的例子。扩展的示例可能会使用complexType作为扩展元素,并根据需要使用它自己的自定义属性和/或元素。
简单示例模式: ext.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:kml="http://www.opengis.net/kml/2.2"
targetNamespace="http://myextension"
elementFormDefault="qualified"
version="1.0">
<!-- Import the language we are extending: OGC KML 2.2 -->
<import namespace="http://www.opengis.net/kml/2.2"
schemaLocation="http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd" />
<element name="MyData" type="string"
substitutionGroup="kml:DataExtension"/>
</schema>示例KML:
<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
xmlns:ext="http://myextension"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://myextension ext.xsd
http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd">
<Placemark>
<name>Club house</name>
<ExtendedData>
<Data name="holeNumber">
<value>1</value>
<ext:MyData>my data</ext:MyData>
</Data>
<Data name="holePar">
<value>4</value>
<ext:MyData>more data</ext:MyData>
</Data>
</ExtendedData>
</Placemark>
</kml>要获得更多具体的示例,请参见Google如何实现自己的扩展。
https://stackoverflow.com/questions/23838517
复制相似问题