在xsd中是否可以要求以下限制。
鉴于此xml:
...
<map>
<key-value key="foo">some value</namespace>
</map>
....
<examples>
<example property="foo:bar" />
</examples>
....
map
键是唯一的。我想要的是限制属性property
的值,以便“:”之前的任何字符串都匹配一个映射键。
我尝试使用xs:keyref
执行此操作,但发现它使用的XPath子集不包含substring-before
和substring-after
等函数的使用(请参阅this,第9.2节0.5)。
xsd看起来像:
<xs:element name="map" type="mapType">
<xs:key name="mapKey">
<xs:selector xpath="key-value"/>
<xs:field xpath="@key"/>
</xs:key>
</xs:element>
....
<xs:element name="example">
<xs:attribute name="property" type="propertyAttributeType" use="required">
</xs:attribute>
</xs:element>
.....
<xs:simpleType name="propertyAttributeType">
<xs:restriction base="xs:string">
</xs:restriction>
<!-- what do i do here? -->
</xs:simpleType>
是否可能,或者我是否必须在代码中强制执行此行为?