Я пытаюсь написать XSD, который будет проверять мой SOAP ответы службы. Я чувствую себя обязанным просто импортировать http: // schemas.xmlsoap.org/soap/envelope/ вместо переопределения элементов SOAP, таких как Envelope, Head и Body, но этот xmlsoap. Определение Body в схеме org слишком широко для моего использования - как только я импортирую схему SOAP, мой XSD (который я тщательно адаптировал для своей службы) неожиданно проверяет все сообщения SOAP.
Как мне обрабатывать определение конверта, головы, тела SOAP в моем XSD?
Я подозреваю, что проблема в том, что я пытаюсь повторно использовать другие схемы, которые я не должен пытаться повторно использовать. использовать. Конечно, эти схемы для SOAP предназначены для определения того, как (все) сообщения SOAP должны выглядеть. И, возможно, мне просто нужно определить в моей схеме, как я хочу, чтобы мое конкретное мыльное тело выглядело.
Я, возможно, только что ответил на свой вопрос. Может у кого-то есть другое решение?
У меня небольшие проблемы с созданием XSD для описания ответного сообщения от одной из моих служб SOAP.
Вот ' Итак, я вручную написал XSD, который описывает все типы, которые принадлежат к моему сервисному мылу: Body
Когда я пытался проверить пример ответа (первый фрагмент XML) с помощью схемы (2-й фрагмент) с помощью PHP DOMDocument :: schemaValidateSource (), валидатор указал на мою первую очевидную ошибку:
Элемент 'soap: Envelope': Нет подходящего глобального объявления
«Ой, да, - подумал я, - эти элементы определены в пространстве имен SOAP, поэтому Мне нужно импортировать XSD SOAP "
Итак, я отредактировал свой XSD и добавил импорт:
И это сработало! DOMDocument :: schemaValidateSource возвращает true, когда я проверяю ответ мыла с помощью XSD.
Затем, в качестве проверки работоспособности , я взял другой XSD ответа мыла, который у меня лежал:
И я попытался проверить свой ответ мыла с помощью этой совершенно несвязанной схемы ...
И схема, которая, на первый взгляд, вообще не описывает это сообщение, также проверяет ответ мыла.
Затем я понимаю, что схема XSD должна быть причиной того, что ответ проверяется на соответствие этим двум различным схемам. Схема SOAP, которую я импортирую из http://schemas.xmlsoap.org/soap/envelope/ , определяет элемент Body как:
Prose in the spec does not specify that attributes are allowed on the Body element
Что позволяет содержимому тега Body быть практически любым .
В этом есть смысл, цель XSD XSD - определить, как должны выглядеть ВСЕ XSD, а не только мой.
Итак, мой вопрос: как я должен создать XSD для проверки этих ответов SOAP, повторно используя существующие XSD SOAP, если это возможно?
Вот направление, в котором я следовал ...