XPATH选择其元素名称为xs:simpleType的子元素
我试图选择序列中实现类型的元素名称为xs:simpleType的所有子元素。
<xs:complexType name="Truck">
<xs:complexContent>
<xs:extension base="Car">
<xs:sequence>
<xs:element name="DriverName" type="Name">
...
</xs:element>
<xs:element name="Engine" type="TruckEngine">
...
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
类型“名称”的外观如下所示:
<xs:simpleType name="Name">
...
</xs:simpleType>
和“TruckEngine”看起来像:
<xs:complexType name="TruckEngine">
...
</xs:complexType>
我将如何创建一个XPATH来选择元素DriverName? 到目前为止,我有类似xs:complexType / xs:complexContent / xs:extension / xs:sequence / xs:element,但我不知道如何进一步提高我的选择。 我很难搜索相关信息,因为我不确定用什么术语来选择类似的东西。 我已经将我的示例修改为更通用的东西。
你可以使用:
//xs:element[@type = //xs:simpleType/@name]
尽管我建议使用更明确的路径,而不是使用//
。
(编辑:将eq
更改为=
)
尝试从模式文档中提取信息是困难的(几乎不可能),除非您知道模式作者使用的约定。 例如,DevNull(您接受)的解决方案只有在类型在同一个模式文档中定义时才起作用,它仅适用于命名(而非匿名)类型,并且仅适用于没有targetNamespace的模式文档。
对于更通用的解决方案,无论采用何种编写约定,该解决方案都适用于任何模式,不要试图这样做:使用模式API,在模式处理器进行分析后,您可以访问“熟化”模式组件。 一种方法是使用为模式组件提供Java API的Xerces,另一种方法是使用Saxon的SCM格式,该格式在单个文档中提供“熟”模式组件的XML表示。
链接地址: http://www.djcxy.com/p/34331.html上一篇: XPATH Select child elements whose type's element name is xs:simpleType