我不是这样做的。这是架构:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="tomas">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="pt">
<xs:complexType>
<xs:sequence>
<xs:element name="cat" type="xs:string"/>
<xs:element name="shortVal" type="xs:short"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这是xml:
<?xml version="1.0"?>
<t:root xmlns:t="tomas">
<pt>
<cat>Category 1</cat>
<shortVal>1</shortVal>
</pt>
</t:root>
哪个正确的xpath:/ t:root / pt / shortVal
为什么不是/ t:root / t:pt / t:shortVal
谢谢 - 戴夫
答案 0 :(得分:1)
默认情况下,架构的targetNamespace
仅适用于“全局”元素,即在架构顶层声明的元素。如果您希望targetNamespace
也适用于嵌套在complexType
内的“本地”元素,那么您应该在xs:schema
元素上设置elementFormDefault="qualified"
。