powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / WSDL на базе XSD
3 сообщений из 3, страница 1 из 1
WSDL на базе XSD
    #39337656
WSDL_Guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть XSD описание нескольких десятков объектов, связанных между собой, конечно же. Есть объект Request примерно следующей структуры:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<xsd:complexType name="RequestType">
	<xsd:sequence>
		<xsd:element name="RequestHeader" type="rht:RequestHeaderType"></xsd:element>
		<xsd:element name="RequestBody">
			<xsd:complexType>
				<xsd:sequence>
					<xsd:choice>
						<xsd:element name="el1Request" type="tt1:el1Type"></xsd:element>
						<!-- ряд других объектов -->
						<xsd:element name="el50Request" type="tt50:el50Type"></xsd:element>
					</xsd:choice>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
	</xsd:sequence>
</xsd:complexType>


Хочу написать руками к нему WSDL для импорта в VisualStudio чтобы не описывать классы по отдельности и автоматически генерировать запросы / проверять ответы. Подскажите, как правильно в WSDL описать запрос, например с телом запроса el50Request? На сколько я понимаю, сначала нужно описать свой объект, типа такого:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    		<xsd:complexType name="el50RequestType" type="RequestType">
    			<xsd:sequence>
    				<xsd:element name="Request">
    					<xsd:complexType>
    						<xsd:sequence>
    							<xsd:element name="RequestHeader" type="rht:RequestHeaderType"></xsd:element>
    							<xsd:element name="RequestBody">
    								<xsd:complexType>
    									<xsd:sequence>
    										<xsd:element name="el50Request" type="tt50:el50Type"></xsd:element>
    									</xsd:sequence>
    								</xsd:complexType>
    							</xsd:element>
    						</xsd:sequence>
    					</xsd:complexType>
    				</xsd:element>
    			</xsd:sequence>
    		</xsd:complexType>


И дальше уже в WSDL описывать метод с запросом этого типа и тд. С ответом аналогично.
Но чет валидатор ругается на то, что я выше описал.. Не нравится ему мой объект el50RequestType, говорит что не соответствует он типу RequestType
...
Рейтинг: 0 / 0
WSDL на базе XSD
    #39337986
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WSDL_GuestХочу написать руками к нему WSDL для импорта в VisualStudioАбсолютно бессмысленное занятие.
Все равно придется кодить метод запроса, и типизирован он должен быть в соответствии со схемой, так что классы в любом случае понадобятся. Другой вопрос, что руками их кодить не нужно, можно сгенерировать из этих схем. А после этого студия сама сможет сгенерировать wsdl.

WSDL_GuestНо чет валидатор ругается на то, что я выше описал.. Не нравится ему мой объект el50RequestType, говорит что не соответствует он типу RequestTypeДля начала, el50RequestType это тип, а у типа нет атрибута type.
Может xsd:element нужно было написать?
...
Рейтинг: 0 / 0
WSDL на базе XSD
    #39338742
WSDL_Guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ!

В общем удалось все это скормить стандартной утилите xsd.exe и получить класс .cs на выходе, без всяких wsdl
Если коротко, то рецепт такой. Пишем скрипт, который переименовывает все xsd в короткие имена (из-за ограничения в 8к символов в аргументах cmd), скидывает их в один каталог и запускаем утилиту xsd.exe с параметрами, где перечисляем все xsd (0.xsd, 1.xsd...). Связи внутри xsd схем, типа импорт из такого то каталога xsd с таким то именем в утилите игнорируется, используется только то, что передано в качестве аргументов на вход xsd.exe
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / WSDL на базе XSD
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]