Они не равны. То есть примеры 1 и 2 равны, а 3 - нет.
Посмотрите на <fxd:GSR>
в отличие от <GSR>
. Вы видите, что первый префикс. Теперь, если вы определяете пространство имен xmlns:fxd=""
, в этом пространстве имен устанавливаются все элементы с одинаковым префиксом. Все остальные (включая элементы без какого-либо префикса) не находятся в этом пространстве имен .
Затем в третьем примере вы определяете пространство имен для всех нефиксированных элементов. Это приводит к тому, что нефиксированные потомки GSR внезапно находятся в том же пространстве имен , что и их предок, а не в null
пространстве имен они были до в 1 и 2.
Редактировать: Просто небольшое уточнение:
xmlns:fxd="http://aaa.yy.zz/Foo"
устанавливает пространство имен на "http://aaa.yy.zz/Foo" для всех элементов, которые начинаются с 'fxd:'.
xmlns="http://aaa.yy.zz/Foo"
устанавливает для пространства имен значение "http://aaa.yy.zz/Foo" для всех элементов, у которых в имени есть двоеточие без (= они не имеют префикса).
Если вы хотите, чтобы 1 и 2 вели себя как 3, просто добавьте
xmlns="http://aaa.yy.zz/Foo"
где-то до появления первого элемента без префикса. Если вы хотите наоборот, вам нужно добавить префикс всех элементов, которые вы хотите видеть в пространстве имен, скажем, «bar:», и добавить это куда-нибудь:
xmlns:bar=""
, таким образом, явно устанавливая их в пустом пространстве имен (как в первых двух примерах).