首页 > 解决方案 > 如何使用 xpath 获取特定的 xsd 元素?

问题描述

我正在尝试使用 xpath 查找特定父 xsd 元素的特定 xsd 元素,但找不到解决方案。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="XYZ">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="XX" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="AA">
                <xs:complexType>
                  <xs:attribute type="xs:string" name="testA" use="required" />
                  <xs:attribute type="xs:string" name="testB" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="YY" minOccurs="0" />
        <xs:element name="ZZ">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="AA" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

我尝试了以下 xpath:

/xs:element[@name='XYZ']/xs:element[@name='XX']/xs:element[@name='AA']

但结果是一个空列表。

我希望有人能帮助我。

标签: xmlxpathxsd

解决方案


//xs:element[@name="XYZ"]//xs:element[@name="XX"]//xs:element[@name="AA"]

应该给出期望的结果 - 你只需要使用//来处理任意深度的祖先。

来自XPath 示例


bookstore//title

<title>元素深处一层或多层的所有<bookstore>元素(任意后代)。


bookstore//book/excerpt//emph

<emph>元素<excerpt>的子<book>元素内的任何位置,元素内的任何位置的所有<bookstore>元素。


推荐阅读