为什么对于在模式中定义为“拥有”命名空间的xml元素,需要’null
以下xml文档和架构是从一个更大的架构中归结而来的,该架构首先出现问题:
xml文档: <f2b:Foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:f2b="http://www.outerfoospace.com/schemas/foo2bar" xsi:schemaLocation="http://www.outerfoospace.com/schemas/foo2bar f2b-0-0-0.xsd"> <f2b:Bar>text</f2b:Bar> </f2b:Foo> 架构: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:f2b="http://www.outerfoospace.com/schemas/foo2bar" targetNamespace="http://www.outerfoospace.com/schemas/foo2bar"> <xs:complexType name="T_Foo"> <xs:sequence> <xs:element name="Bar" xmlns="f2b"/> </xs:sequence> </xs:complexType> <xs:element name="Foo" type="f2b:T_Foo"/> </xs:schema> 当我根据模式验证文档时,我在< f2b:Bar> -element上收到一条错误消息,说明< f2b:Bar>不是预期的.为了使文档有效,我必须将< Bar> -element明确地(!)放入’null-namespace’:< Bar xmlns =“”>. 任何暗示都赞赏… ekke
简短回答:将elementFormDefault =“qualified”添加到模式的根xs:schema标记中.
更长的答案:默认情况下,只有顶级“全局”元素声明才会占用架构的目标命名空间.复杂类型中的“局部”元素声明不在命名空间中.您可以使用xs:element标记上的form属性为一个特定的本地元素覆盖此值,或者对xs:schema上的elementFormDefault使用全局覆盖所有元素. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |