2015-07-02 2 views
2

Подобные вопросы задавали и раньше, и я понимаю, что порядок атрибутов XML не может быть указан в XML или схеме. Однако я хотел бы знать, не упорядочен ли порядок атрибутов XML в WSDL с помощью WCF или они следуют некоторым правилам.Что определяет порядок атрибутов XML в WSFL WCF?

Например, на одном этапе у нас был следующий (часть) XML-тег в сгенерированном WSDL.

<xs:element maxOccurs="unbounded" minOccurs="0"

Теперь генерируя его снова становится

<xs:element minOccurs="0" maxOccurs="unbounded"

с порядком мин, макс местами.

Другой пример:

<wsdl:port binding="tns:BasicHttpBinding_IReferenceDataBusinessService" name="BasicHttpBinding_IReferenceDataBusinessService">

становится

<wsdl:port name="BasicHttpBinding_IReferenceDataBusinessService" binding="tns:BasicHttpBinding_IReferenceDataBusinessService">

Просто интересно, что решает такие заказы в WCF? Возможно ли, чтобы процесс был скорректирован, чтобы поддерживать одни и те же заказы, чтобы упростить сравнение двух файлов WSDL?

спасибо.

ответ

0

Вы признаете, что порядок атрибутов незначителен, а затем укажите, что вы хотите действовать в порядке атрибута. По определению это детализация реализации. Положитесь на любой заданный атрибут, на свой страх и риск.

Кроме того, порядок атрибутов является лишь одним из многих препятствий для сравнения документов XML лексически. Прежде чем приступить к таким усилиям, ознакомьтесь со всем, что покрыто Canonical XML Version 1.1. Вот краткое описание:

Каноническая форма документа XML является физическим представлением документа, подготовленный по методике, описанной в данном описании. изменения приведены в следующем списке:

  • Документ кодируется в UTF-8
  • разрывы строк нормированы на #xA на входе, перед разбором
  • Значения атрибутов нормированы, так как если под проверки процессора
  • Характер и разобранные ссылки на объекты заменяются
  • секции CDATA заменяются их содержание символов
  • декларация XML и типа документа удаляются
  • Пустые элементы преобразуются, чтобы начать конец пары тегов
  • Пробелы вне элемента документа и в начальный и конечный теги нормализуется
  • Все пробелы в содержании символов сохраняется (за исключением символов удалены во время линии подачи нормализации)
  • значение атрибута ограничители устанавливаются в кавычки (двойные кавычки)
  • Специальные символы в значениях атрибутов и содержании символов заменяются символа ссылается
  • Лишние объявления пространства имен удаляются из каждого элемента
  • по умолчанию атрибутов добавляются к каждому элементу
  • Fixup из XML: базовые атрибуты [c14n-вопросы] выполняются
  • лексикографический порядок накладываются на объявления пространств имен и атрибуты каждого элемента

Надежный код не зависит от случайных (несущественных) свойств реализации по любому из этих параметров.

+0

Благодарим вас за ответ, kjhughes. Я не пытаюсь диктовать или полагаться на конкретный заказ. Я пытаюсь понять, почему WSDL, сгенерированный WCF, несовместим, хотя они функционально эквивалентны. Если заказы согласованы, было бы легче увидеть, что изменилось в новой версии WSDL по сравнению со старой версией, использующей BeyondCompare или аналогично - изменение атрибута атрибутов добавляет много шума в сравнение. – Xeon

0

В конце я решил использовать Xml Sorter (https://xmlsorter.codeplex.com/). XML-файлы WSDL сортируются перед сравнением, таким образом, я могу сразу заметить разницу между двумя файлами WSDL в BeyondCompare и аналогично, вместо того, чтобы медленно прокручивать вниз и пытаться выявить реальные различия сотен различий (из-за измененных порядков атрибутов XML).

Смежные вопросы