Как это часто бывает, похоже, одного правильного ответа на этот вопрос не существует.
Я не знаю, какое преимущество имеет использование одного и того же тега элемента (т. Е. <stream>
) для запроса и ответа. Например, вы можете использовать <request>
и <response>
в качестве отдельных элементов верхнего уровня. Это могло бы быть немного более значимым, а также усилило бы аргумент в пользу использования различных пространств имен (и схем) для двух типов сообщений.
Но если у вас есть веские причины для использования <stream>
в качестве тега верхнего уровня как для запроса, так и для ответа, тогда вы могли бы определить схему так, чтобы <stream>
имел тип union
. Члены объединения могут содержать элементы, которые подходят для запросов или ответов, но не для обоих. Эта структура облегчила бы сохранение двух сторон в одном и том же пространстве имен, если это кажется правильным.
Я был бы немного более склонен пойти по этому пути, если бы увидел, что протоколы запросов и ответов тесно связаны друг с другом, так что изменения одного из них, вероятно, потребуют изменений и другого. Если типы информации в наборе ответов могут изменяться с течением времени (или в зависимости от приложения), тогда отдельные пространства имен будут иметь больше смысла.