Xml GML动态特征历史抽象时间片约束
我正在设计一个GML应用程序模式,在这个模式中,我打算经常使用GML:DynamicFeature替换和扩展来支持标准化的WFS时间查询 我想将特定动态特性的gml:history的子级限制为gml:AbstractTimeSliceType可用扩展的子集 例如,给定以下模式:Xml GML动态特征历史抽象时间片约束,xml,xsd,schema,gml-geographic-markup-lan,web-feature-service,Xml,Xsd,Schema,Gml Geographic Markup Lan,Web Feature Service,我正在设计一个GML应用程序模式,在这个模式中,我打算经常使用GML:DynamicFeature替换和扩展来支持标准化的WFS时间查询 我想将特定动态特性的gml:history的子级限制为gml:AbstractTimeSliceType可用扩展的子集 例如,给定以下模式: <element name="Position" type="PositionType" substitutionGroup="gml:DynamicFeature"/> <!-- --> &l
<element name="Position" type="PositionType" substitutionGroup="gml:DynamicFeature"/>
<!-- -->
<complexType name="PositionType">
<complexContent>
<extension base="gml:DynamicFeatureType">
<sequence>
... relevant elements here.
</sequence>
</extension>
</complexContent>
</complexType>
<element name="CoordinateInstance" type="CoordinateInstanceType" substitutionGroup="gml:AbstractTimeSlice"/>
<!-- -->
<complexType name="CoordinateInstanceType">
<complexContent>
<extension base="gml:AbstractTimeSliceType">
<sequence>
<element name="coordinates" type="gml:DirectPositionType"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="SomeOtherTimeSlice" type="SomeOtherTimeSliceType" substitutionGroup="gml:AbstractTimeSlice"/>
<!-- -->
<complexType name="SomeOtherTimeSliceType">
<complexContent>
<extension base="gml:AbstractTimeSliceType">
<sequence>
<element name="other" type="string"/>
</sequence>
</extension>
</complexContent>
</complexType>
... 这里有相关的内容。
限制应允许:
<Position gml:id="ID_1">
<gml:history>
<CoordinateInstance gml:id="CID_1">
<geo:validTime>
<geo:timePosition>2015-03-23T00:00:00</geo:timePosition>
</geo:validTime>
<coordinates uomLabels="m">-2389026.389 5043317.021 -3078529.8</coordinates>
</CoordinateInstance>
<CoordinateInstance gml:id="CID_2">
<geo:validTime>
<geo:timePosition>2015-03-16T00:00:00</geo:timePosition>
</geo:validTime>
<coordinates uomLabels="m">-2389026.39 5043317.021 -3078529.799</coordinates>
</CoordinateInstance>
</gml:history>
</Position>
<Position gml:id="ID_1">
<gml:history>
<SomeOtherTimeSlice gml:id="CID_1">
<geo:validTime>
<geo:timePosition>2015-03-23T00:00:00</geo:timePosition>
</geo:validTime>
<other>This element should never be allowed here.</other>
</SomeOtherTimeSlice>
<CoordinateInstance gml:id="CID_2">
<geo:validTime>
<geo:timePosition>2015-03-16T00:00:00</geo:timePosition>
</geo:validTime>
<coordinates uomLabels="m">-2389026.39 5043317.021 -3078529.799</coordinates>
</CoordinateInstance>
</gml:history>
</Position>
2015-03-23T00:00:00
-2389026.389 5043317.021 -3078529.8
2015-03-16T00:00:00
-2389026.39 5043317.021 -3078529.799
但不应允许这样做:
<Position gml:id="ID_1">
<gml:history>
<CoordinateInstance gml:id="CID_1">
<geo:validTime>
<geo:timePosition>2015-03-23T00:00:00</geo:timePosition>
</geo:validTime>
<coordinates uomLabels="m">-2389026.389 5043317.021 -3078529.8</coordinates>
</CoordinateInstance>
<CoordinateInstance gml:id="CID_2">
<geo:validTime>
<geo:timePosition>2015-03-16T00:00:00</geo:timePosition>
</geo:validTime>
<coordinates uomLabels="m">-2389026.39 5043317.021 -3078529.799</coordinates>
</CoordinateInstance>
</gml:history>
</Position>
<Position gml:id="ID_1">
<gml:history>
<SomeOtherTimeSlice gml:id="CID_1">
<geo:validTime>
<geo:timePosition>2015-03-23T00:00:00</geo:timePosition>
</geo:validTime>
<other>This element should never be allowed here.</other>
</SomeOtherTimeSlice>
<CoordinateInstance gml:id="CID_2">
<geo:validTime>
<geo:timePosition>2015-03-16T00:00:00</geo:timePosition>
</geo:validTime>
<coordinates uomLabels="m">-2389026.39 5043317.021 -3078529.799</coordinates>
</CoordinateInstance>
</gml:history>
</Position>
2015-03-23T00:00:00
此处不应允许使用此元素。
2015-03-16T00:00:00
-2389026.39 5043317.021 -3078529.799
有没有办法用XML模式来实现这一点
我在这里查阅了如何通过限制来重新定义元素:但我不知道如何在这种情况下使用这种技术,因为gml:DynamicFeature使用gml:DynamicProperties组,这使执行限制的方式复杂化。此外,它还需要与WFS查询动态功能兼容
请帮忙
编辑:我尝试了以下架构,但出现错误:
<complexType name="CoordinateVelocityDynamicFeatureType">
<complexContent>
<restriction base="gml:DynamicFeatureType">
<sequence>
<sequence>
<group ref="gml:StandardObjectProperties"/>
</sequence>
<sequence>
<element ref="gml:boundedBy" minOccurs="0"/>
<element ref="gml:location" minOccurs="0"/>
</sequence>
<sequence>
<element ref="gml:validTime" minOccurs="0"/>
<element ref="geo:PositionHistory" minOccurs="0"/>
<element ref="gml:dataSource" minOccurs="0"/>
<element ref="gml:dataSourceReference" minOccurs="0"/>
</sequence>
</sequence>
</restriction>
</complexContent>
</complexType>
<!-- -->
<element name="PositionHistory" type="geo:PositionHistoryPropertyType" substitutionGroup="gml:history"/>
<!-- -->
<complexType name="PositionHistoryPropertyType">
<complexContent>
<restriction base="gml:HistoryPropertyType">
<sequence>
<element ref="geo:CoordinateInstance"/>
</sequence>
<attributeGroup ref="gml:OwnershipAttributeGroup"/>
</restriction>
</complexContent>
</complexType>
<!-- -->
<element name="Position" type="geo:PositionType" substitutionGroup="gml:DynamicFeature"/>
<!-- -->
<complexType name="PositionType">
<complexContent>
<extension base="geo:CoordinateVelocityDynamicFeatureType">
错误是:
文件
D:\git\eGeodesy\0.2\geodesyml\schemas\geodesyml\geodesyml\ObservationSystem.xsd
无效。类型“geo:CoordinationLevel动态特征类型”不可用
类型为“gml:DynamicFeatureType”的有效限制。(见详情)
错误位置:架构/complexType/complexContent/restriction
/@base Details rcase name和typeok.1:声明{name}s
和{target namespace}不相同:限制元素为
基本元素是
. 范围确定。1:这部分内容
模型不是有效的限制,因为'minOccurs'值'0'为
小于“1”。rcase NAME和TYPEOK.2:出现范围不是
有效发生限制
范围rcase NameAndTypeOK.1:声明{name}和{target
命名空间}不同:限制元素为,基元素为。rcase RecurseLax.2:没有完整的
到粒子的保序函数映射
微粒。rcase递归组:
是无效的
模型群粒子的限制。
rcase name和TYPEOK.1:元素的名称和目标命名空间不匹配
各基本粒子的项。(见下文)
名称不匹配:限制,基本。
名称不匹配:限制,基本。cos粒子限制。2.1:取代基为
扩展到选择模型组。(见下文)
将元素的替代群扩展为选择模型群。(见下文)
“gml:位置”
“gml:优先位置”
将元素的替代群扩展为选择模型群。(见下文)
“地理:有效时间”
“gml:validTime”
将元素的替代群扩展为选择模型群。(见下文)
“地理:有效时间”
“gml:validTime”
将元素的替代群扩展为选择模型群。(见下文)
“gml:历史”
“地理位置:历史”
“gml:track”rcase递归。2.1:这必须限制基本内容模型的对应。
派生ok限制。5.4:内容类型不是
内容类型的有效限制
另外,我不确定WFS是否支持通过使用更严格的类型位置HistoryPropertyType替换gml:history来重新定义gml:DynamicFeatureType。有人知道典型的WFS在动态功能和查询方面支持什么吗?我想你是想标记这个gml地理标记lan,而不是代表StackOverflow上Game Maker语言的gml。谢谢,我会重新标记它。