В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Ты прав. Идея атрибутов, не являющихся частью пространства имен по умолчанию, заключается в том, что они считаются существующими в «пространстве имен элементов» & mdash; поэтому в этом случае <foo:child/>
считается «пространством имен» для @attrib
. Обратите внимание, что это просто концептуально; там нет API или что-либо, что ссылается на пространства имен атрибутов таким образом.
Это было выбрано потому, что несколько элементов могут иметь атрибуты с одинаковыми именами, но разные значения & mdash; в отличие от традиционного пространства имен, которое представляет собой набор имен (так что нет дубликатов). В некотором смысле, он дает больше структуры пространству имен, вместо того, чтобы иметь плоский набор.
Вы можете прочитать об этом в очень старую версию рекомендации Namespaces .
Это соглашение означает, что всякий раз, когда вы видите атрибут prefixed, он представляет некоторую «дополнительную» информацию, которая не связана с основной схемой в документе.
В спецификаторе вы правильно считаете пространство имен attrib
в первом примере пустым. Тем не менее, здесь есть тонкость, которая может быть не очевидна.
Рассмотрим этот пример далее в спецификации элемента с двумя атрибутами с тем же именем (один префикс и другой нефиксированный).
<!-- This is OK, even though an element cannot have two attributes
with the same name -->
<x xmlns:n1="http://www.w3.org"
xmlns="http://www.w3.org" >
<good a="1" n1:a="2" />
</x>
Это соответствует, потому что два атрибута действительно находятся в двух разных пространствах имен:
n1:a
принадлежит пространству имен http://www.w3.org
(которое является пространством имен для good
) a
рассматривается как принадлежащее недоступному пространству имен http://wwww.w3.org > good
(и отличается от пространства имен good
). Примечание что пространство имен http://wwww.w3.org > good
не существует; например, вы не можете запрашивать атрибуты в этом пространстве имен с помощью XPath. Если вы попросите namespace-uri(\\good\a)
, он будет пустым. Чтобы сделать идею отдельного пространства имен элементов конкретным, я составил пространство имен, у которого есть как пространство имен имен, так и имя вместе с разделителем (>
в любом случае не допускается без сохранения значений атрибутов).
Теперь, вместо того, чтобы сказать, что два атрибута находятся в двух разных пространствах имен, правильнее сказать, что они принадлежат к двум разным разделам пространства имен:
n1:a
атрибут принадлежит к элементу глобального атрибута (http://www.w3.org
) good
принадлежит к разделу «Все типы элементов» (также http://www.w3.org
) a
принадлежит к элементу Per Тип раздела good
(т. Е. http://wwww.w3.org > good
). Вот соответствующая часть спецификации Porges, связанная с:
A.2 Разделы пространства имен XML
Чтобы поддержать цель сделать как квалифицированные, так и неквалифицированные имена полезными для достижения их намеченной цели, мы идентифицируем имена, появляющиеся в пространстве имен XML, как принадлежащие одному из нескольких непересекающихся традиционных (т.е. упорядоченных) пространств имен, называемых разделами пространств имен. Перегородки:
Все типы типов элементов. В этом разделе отображаются все типы элементов в пространстве имен XML. Каждый из них имеет уникальную локальную часть; комбинация имени пространства имен и локальной части уникально идентифицирует тип элемента.
Раздел глобального атрибута Этот раздел содержит имена всех атрибутов, которые определены в этом пространстве имен, являются глобальными. Единственной необходимой характеристикой глобального атрибута является то, что его имя будет уникальным в глобальном разделе атрибутов. В этой спецификации нет утверждений о правильном использовании таких атрибутов. Комбинация имени пространства имен и имени атрибута однозначно идентифицирует глобальный атрибут.
Разделы типа для каждого элемента Каждый тип в разделе «Типы элементов всех элементов» имеет связанное пространство имен, в котором появляются имена неквалифицированных атрибуты, которые предоставляются для этого элемента. Это традиционное пространство имен, потому что появление дубликатов имен атрибутов в элементе запрещено XML 1.0. Комбинация имени атрибута с типом элемента и именем пространства имен однозначно идентифицирует каждый неквалифицированный атрибут.
В документах XML, соответствующих этой спецификации, имена всех квалифицированных (префиксных) атрибутов назначаются для глобального раздела атрибутов , а имена всех неквалифицированных атрибутов назначаются соответствующему разделу типа элемента.
blockquote>
<xsd:attribute>
(см. этот пример ), он попадает в раздел «Глобальный атрибут» и, следовательно, должен быть префиксом?
– dma_k
27 June 2016 в 16:02
Ваша интерпретация спецификации верна. Некоторое логическое обоснование также приведено во втором абзаце раздела 6.2 в спецификации пространств имен, на которую вы ссылались:
интерпретация неподписанных атрибутов определяется элементом, на котором они отображаются.
blockquote>Но мне также будет интересна более подробная информация о том, почему было выбрано это конкретное поведение.
<foo:child />
является« пространством имен »для@attrib
», то я бы not i> должен был добавить дополнительные префиксы для предоставления пространства имен. Другими словами, он будет неквалифицирован, что будет интерпретироваться как находящееся в любом пространстве имен, которое использует элемент. Это верно? Это означало бы, что мой первый пример на самом деле является хорошим способом написать это. – mckamey 22 July 2010 в 22:22"it would be unqualified which would be interpreted as being in whatever namespace the element is using"
... это идея, но обратите внимание, что атрибут будет not i> иметь те же пространства имен, что и элемент, или элемент как «пространство имен». У него не будет никакого пространства имен - атрибут, имеющий элемент как «пространство имен», является просто соглашением. – porges 23 July 2010 в 00:15