2013-04-30 3 views

ответ

1

Вот что я думаю, следующая схема XML поможет вам решить вашу проблему.

<?xml version="1.0" encoding="UTF-8"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/Class" xmlns:tns="http://www.example.org/Class" elementFormDefault="qualified"> 


<element name="A" type="tns:A"></element> 

<simpleType name="property"> 
    <restriction base="string"></restriction> 
</simpleType> 

<complexType name="B"> 
    <sequence> 
     <element name="property" type="tns:property"></element> 
    </sequence> 
</complexType> 

<complexType name="A"> 
    <sequence> 
     <element name="property" type="tns:property"></element> 
     <element name="B" type="tns:B" maxOccurs="unbounded" minOccurs="0"></element> 
    </sequence> 
</complexType> 

1

Если вы используете C# взгляните на этот вопрос/ответ:

Programatically serialize class to xsd

Но проблема при сериализации в XSD заключается в том, что атрибуты DataMember имеют серьезные ограничения для XSD (см. http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/e95ba78b-9932-4d8a-91ac-6b40967d0d8b).

Так, может быть, вы можете создать свой XSD с помощью сериализации и выполнять некоторые пользовательские модификации, по существу, для ограничения данных (длина, диапазоны, мин/макс ...)

[Редактировать] Или, если вы хотите сделайте это самостоятельно взгляните на это http://www.w3schools.com/schema/