【发布时间】:2014-02-10 08:23:12
【问题描述】:
在身份约束中,我需要选择一个元素 "arg" 具有特定的属性值 [@type='parse']。
但我收到错误,
对于 XML Schema 支持的 XPath 子集,表达式 'action//@type' 无效。
对于下面的语句,
<xs:selector xpath="action/arg[@type='parse']"/>
完整的 XSD 文件是,
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element ref="page" maxOccurs="32"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="page">
<xs:complexType>
<xs:sequence>
<xs:element ref="parse"/>
<xs:element ref="action"/>
</xs:sequence>
</xs:complexType>
<xs:keyref name="arg_key_ref" refer="assert_key">
<xs:selector xpath="action/arg[@type='parse']"/>
<xs:field xpath="."/>
</xs:keyref>
<xs:key name="assert_key">
<xs:selector xpath="parse/parameter/name"/>
<xs:field xpath="."/>
</xs:key>
</xs:element>
<xs:element name="parse">
<xs:complexType>
<xs:sequence>
<xs:element ref="parameter" maxOccurs="32"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="action">
<xs:complexType>
<xs:sequence>
<xs:element ref="arg" maxOccurs="32"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="parameter">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="arg">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
提前致谢,
基肖尔。
【问题讨论】: