Вот schema.xsd. Он определяет targetNamespace
ns
, где элемент 'A'
включает элемент 'B'
.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="ns">
<xsd:element name="root"/>
<xsd:element name="A">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="B" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Вот doc.xml. У него есть узел 'A'
, который включает в себя узел 'B'
. Этот xml действителен в соответствии со схемой.
<root
xmlns="ns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="ns schema.xsd" >
<A xmlns="ns">
<B xmlns=""/>
</A>
</root>
Звучит все нормально... за исключением того, что 'B'
не находится в пространстве имен ns
!
Согласно msdn, 'B'
должно быть в пространстве имен ns
.
TargetNamespace — это пространство имен всех схем компонентов в этой схеме, а также любых схем, включенных с помощью элемента include.
Где проблема: в моем понимании или в определении targetNamespace
? .