2016-08-14 3 views
2

Я понимаю, что по умолчанию пространство имен по умолчанию имеет имя xmlns атрибут в корневом элементе XML-документа. Другие пространства имен называются другими именами. Теперь интересно, почему пространство имен экземпляров XML Scheme всегда называется xmlns:xsi, а не просто xsi? Будет ли xsi быть таким же, как xmlns:xsi? Если да, то почему? Если нет, то почему нет?Почему xmlns: xsi, а не только xsi в XML-документах?

Элементам и именам атрибутов, не принадлежащим пространству имен по умолчанию, всегда предшествует имя пространства имен. Имея xmlns:xsi, мне сообщается, что xsi - это атрибут, определенный в пространстве имен xmlns, что противоречиво, поскольку именам атрибутов из пространства имен по умолчанию не должно предшествовать пространство имен.

ответ

2

Пространство имен по умолчанию не указано xmlns.

xmlns - это способ объявить пространство имен префикс (т. Е. Короткое имя, дескриптор). Синтаксис: xmlns[:prefix]="namepace-uri".

В каждом элементе XML может быть указано только одно объявление пространства имен, где вам разрешено оставить префикс (xmlns="namespace-uri"), и если он объявлен таким образом, он называется «пространство имен по умолчанию».

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" заявляет, что URI http://www.w3.org/2001/XMLSchema-instance должен быть известен как xsi внутри этого элемента.

Вы можете выбрать любой префикс вы хотите, вы можете объявить xmlns:bob="http://www.w3.org/2001/XMLSchema-instance" и это будет означать, что URI http://www.w3.org/2001/XMLSchema-instance должен быть известен как bob внутри этого элемента.

По соглашению, многие широко используемые URI пространства имен XML получают одинаковый префикс повсюду, но это не техническое требование.

+0

«xmlns: xsi =» http://www.w3.org/2001/XMLSchema-instance «' объявляет, что URI 'http://www.w3.org/2001/XMLSchema-instance' должен быть известный как 'xsi' внутри этого элемента.". Означает ли это, что 'xsi' теперь является пространством имен, элементы которого теперь могут использоваться в документе? Если да, какова область охвата? Элемент, в котором он был определен, или весь документ? – gicig

+1

'xsi' не является пространством имен. 'http: // www.w3.org/2001/XMLSchema-instance' - это пространство имен. 'xsi' - это просто краткое имя для этого пространства имен, обычно называемое« префикс », потому что вы пишете его как префикс перед элементами, которые должны находиться в соответствующем пространстве имен. Объем объявления пространства имен - это элемент, который он отображается, и все внутри. – Tomalak

+0

Да, это то, что я имел в виду, но не проявил себя должным образом. Я имел в виду пространство имен, представленное именем, т. Е. 'Xsi'. Большое спасибо за разъяснение. – gicig

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