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

下一篇: BizTalk 2009 XSLT and Attribute Value Templates