我有一个 xml 模式,其中包含一个包含选择节点的复杂元素:
<xs:complexType name="MemberType">
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="DOB" type="xs:string"/>
<xs:choice>
<xs:element name="StandardID" type="xs:string"/>
<xs:element name="Type2ID" type="xs:string"/>
<xs:element name="OtherID" type="xs:string"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
我最终的目标是拥有一个键值对,其中包含文档中的 id 类型和值。手动解析工作正常,但如果有 XPath 方法可以做到这一点,它会更简单。我假设这是一个两步 xpath 检索所选节点名称,然后检索具有该名称的值。假设选择节点可能会更改。
如何使用 XPath 检索元素名称,例如"Type2ID"?(另请注意,xsd 是外部的,我无法更改它(
如果包含元素是上下文项,则可以使用 name(*[last()])
获取其最后一个子元素的名称。