xsd:根据键限制值

时间:2015-01-12 14:33:27

标签: xml xpath xsd

在xsd中是否可以要求以下限制。

鉴于此xml:

...
<map>
    <key-value key="foo">some value</namespace>
</map>
....
<examples>
    <example property="foo:bar" />
</examples>
....

map键是唯一的。我想要的是限制属性property的值,以便“:”之前的任何字符串都匹配一个映射键。 我尝试使用xs:keyref执行此操作,但发现它使用的XPath子集不包含substring-beforesubstring-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>

是否可能,或者我是否必须在代码中强制执行此行为?

0 个答案:

没有答案