【发布时间】:2012-01-06 08:33:33
【问题描述】:
我正在使用 XmlReader 针对 Xsd 验证 Xml。
当我验证这个 xml 时
<?xml version="1.0" encoding="utf-8" ?>
<A><B>sdf</B></A>
针对此架构:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="B" type="xs:string" />
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:element ref="B"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
验证没问题。
但是如果我添加命名空间:
<?xml version="1.0" encoding="utf-8" ?>
<A xmlns="myns"><B>sdf</B></A>
和相应的架构:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="myns">
<xs:element name="B" type="xs:string" />
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:element ref="B"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我接受 System.Xml.Schema.XmlSchemaValidationException:未声明“B”元素。 为什么会发生这种情况?以及如何添加命名空间?
【问题讨论】: