Показать сообщение отдельно
Старый 11.12.2008, 19:49   #10  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Похоже, что метод валидации, указанный в "проверенном, минималистичном, самодостаточном джобике" не работает в случае, если в XSD-схеме используется импорт из другой схемы, содержащей другое пространство имен, пример:

X++:
<!-- Common.xsd >>  -->
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified" targetNamespace="urn:Common" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:Common">

<xs:complexType name="Document">
	<xs:sequence>
		<xs:element minOccurs="1" name="Number" nillable="false" type="xs:string" />
		<xs:element maxOccurs="1" name="Date" nillable="false" type="xs:dateTime" />
	</xs:sequence>
</xs:complexType>

</xs:schema>
<!-- << Common.xsd -->

<!-- Test1.xsd >>  -->
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified" targetNamespace="urn:Test1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:Test1">

	<xs:import schemaLocation="Common.xsd" namespace="urn:Common" /> 

<xs:complexType name="OrderType" >
	<xs:complexContent mixed="false">
		<xs:extension base="i1:Document" xmlns:i1="urn:Common" >
			<xs:sequence>
				<xs:element minOccurs="1" name="Qtv" nillable="false" type="xs:int" />
			</xs:sequence>
		</xs:extension>
	</xs:complexContent>
</xs:complexType>
<xs:element name="Order" nillable="true" type="tns:OrderType" />
</xs:schema>
<!-- << Test1.xsd -->

<!-- Test1.xml >>  -->
<?xml version="1.0" encoding="utf-8" ?>
<ex:Order xmlns:ex="urn:Test1" xmlns:vt="urn:Common">
	<vt:Number>134</vt:Number>
	<vt:Date>2007-05-22T11:33:33</vt:Date>
	<ex:Qtv>44</ex:Qtv>
</ex:Order>
<!-- << Test1.xml -->
Есть ли мысли, как можно корректно провести валидацию в данном случае?

Upd: при попытке валидации ругается так:
X++:
"В качестве базы для расширения составного типа используется неопределенный complexType 'urn:Common:Document'."

Последний раз редактировалось alex55; 11.12.2008 в 19:54.