以下xml文档和架构是从一个更大的架构中归结而来的,该架构首先出现问题:
原文链接:https://www.f2er.com/xml/452471.htmlxml文档:
<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 =“”>.
我不明白为什么应该期望null-namespaced元素.模式为所有元素定义名称空间,对于< Foo> -element,验证程序确实需要f2b-namespace.但即使我像上面那样在< Bar> -element定义中明确设置了命名空间,验证器仍然期望Bar-element的xmlns =“”.
我尝试了架构和文档的几种变体来找到一个没有运气的答案 – 我简直无法猜测为什么在这种特殊情况下会出现空命名空间.
任何暗示都赞赏… ekke