ГОСТ Р ИСО/МЭК 40210—2014
1 Определить набор ролей, в которых должен действовать узел. В процессе такого определения
МОЖЕТ быть проверено содержимое конверта SOAP, включая любые блоки заголовка SOAP и тело SOAP.
2 Идентифицировать все обязательные блоки заголовка, предназначенные для узла.
3 Если один или больше блоков заголовка SOAP, определенных на предыдущем шаге, не понятны
данному узлу, то сгенерировать отдельный отказ SOAP со значением Value кода Code установленным в
«env:MustUnderstand» (см. пункт 8.4.8). В случае такого отказа, дальнейшая обработка НЕ ДОЛЖНА
производиться. Отказы, относящиеся к содержимому тела SOAP. НЕ ДОЛЖНЫ производиться на дан ном
шаге.
П р и м е ч а н и е — Настоящая спецификация использует термин
я
Расширенное имя XML». подразуме
вая под этим для значения типа xsdiQname. заданных как пара из пространства значений {абсолютная ссылка на
универсальный идентификатор объекта uri. локальное имя}. Такая терминология обсуждается для включения ее
в будущие версии пространства имен в XML [Namespaces in XML]. Если в будущих версиях пространства имен в
XML [Namespaces in XML] будет принята другая терминология, топредполагается, что соответствующие
изменения будут внесены вэту рекомендацию либо в виде исправления опечаток, либо будут внесены вбудущем
пересмотре версии.
4 Обработать все обязательные блоки заголовка SOAP, предназначенные для данного узла в слу
чае конечного получателя SOAP, и тело SOAP. Узел SOAP МОЖЕТ также принять решение обработать
необязательные блоки заголовка SOAP, предназначенные для него.
5 В случае, если узел является посредником SOAP и если шаблон обмена сообщениями SOAP и
результаты обработки (например, не был сгенерирован какой-либо отказ) требуют, чтобы сообщение
SOAP было отправлено далее по пути следования сообщения SOAP, передать сообщение далее, как
описано в пункте 5.7.
Во всех случаях, при обработке блока заголовка SOAP, узел SOAP ДОЛЖЕН понять блок заго
ловка SOAP и ДОЛЖЕН произвести необходимую обработку способом, полностью совместимым со
спецификацией для данного блока заголовка. Успешная обработка одного блока заголовка не гаран
тирует успешной обработки другого блока с тем же развернутым именем XML в том же сообщении.
Обстоятельства, при которых такая обработка привела бы к отказу, определяет спецификация блока
заголовка. Конечный получатель SOAP ДОЛЖЕН обработать тело SOAP способом, соответствующим
пункту 5.5.
Признаком ошибки является генерация отказа (см. пункт 8.4). Обработка сообщения SOAP МО
ЖЕТ привести к генерации отказа SOAP, однако, при обработке сообщения SOAP НЕ ДОЛЖНО генери
роваться более одного отказа SOAP.
Сообщение может содержать или вызывать несколько ошибок во время обработки. За исключени
ем специально оговоренных случаев порядка обнаружения ошибок (как, например, в пункте 5.4), узел
SOAP наделен свободой выбора любого отдельного отказа из набора возможных отказов, предписан
ных для различных возможных ошибок. Выбор отказа для генерации отказа не должен быть основан
на выборе применения ключевого слова «ДОЛЖЕН». «СЛЕДУЕТ» или «МОЖЕТ», исключая тот случай,
если один или больше установленных отказов квалифицируется с ключевым словом «ДОЛЖЕН». В по
следнем случае ДОЛЖЕН быть сгенерирован любой отказ из набора возможных отказов.
При обработке блока заголовка SOAP или тела SOAP узлы SOAP МОГУТ сослаться на любую
информацию в конверте SOAP. Например, функция кэширования может кэшировать все сообщение
SOAP, если это необходимо.
Обработка одного или более блоков заголовка SOAP МОЖЕТ определить или управлять поряд
ком обработки других блоков заголовка SOAP и/или тела SOAP. Например, можно создать блок заго
ловка SOAP, требующий производить обработку других блоков заголовка SOAP в лексикографическом
порядке. При отсутствии подобного управляющего блока заголовка SOAP порядок обработки заголовка
и обработки тела определяются непосредственно узлом SOAP. Блоки заголовка МОГУТ быть обра
ботаны в произвольном порядке. Обработка блока заголовка МОЖЕТ предшествовать. МОЖЕТ че
редоваться или МОЖЕТ следовать за обработкой тела SOAP. Например, обработка блока заголовка
«начать транзакцию» обычно предшествовала бы обработке тела, функция «протоколирования» могла
бы работать одновременно с обработкой тела, а обработка блока заголовка «завершение транзакции»
могла бы следовать после завершения всей другой работы.
П р и м е ч а н и е — Вышеперечисленные правила регламентируют обработку в отдельном узле. Расши
рения SOAP могут быть разработаны таким образом, чтобы обеспечить, надлежащий порядок обработки блоков
заголовка SOAP на всем пути следования сообщения к конечному получателю SOAP. В частности, такие расши
рения могли бы определить, что должен быть сгенерирован отказ со значением Value кода Code, установленным
8