2012-06-06 7 views
1

Я создал генератор XML с несколькими различными параметрами, один из которых является опцией стиля, которая определяет, использовать ли атрибуты или элементы для примитивных типов данных.Конфигурирование пространства имен XML

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

Я немного запутался, так как я новичок в XML-пространства имен, и у меня есть несколько вопросов по этому поводу, если мы посмотрим на пример XML-документа

<?xml version="1.0"?> 
<root xmlns="some_identifier"> 
<oneKey>value</oneKey> 
</root> 

Это использует элемент стиль примера значения ключа, и я собираюсь разрешить конфигурацию «some_identifier». В этом примере находится элемент «oneKey» в пространстве имен XML? Или мне нужно указать префикс как xmlns:ns, а затем префикс «oneKey» с «ns»?

Кроме того, если мы посмотрим на стиль атрибута:

<?xml version="1.0"?> 
<root xmlns="some_identifier" oneKey="value" /> 

нам нужно определить подобный префикс OneKey в этом примере делать?

Я извиняюсь, если я поодаль отметки в этих вопросах, пожалуйста, дайте мне знать, если я просто не осмыслении,

UPDATE:

Я нашел этот сайт: http://www.rpbourret.com/xml/NamespacesFAQ.htm#exec_1

Это говорит эти два идентичны:

<foo:A xmlns:foo="http://www.foo.org/"> 
    <foo:B>abcd</foo:B> 
</foo:A> 

и

<A xmlns="http://www.foo.org/"> 
    <B>abcd</B> 
</A> 

который очень полезен, но касается стиля атрибута. Нужно ли приписывать атрибуты? Или будет ли работать с xmlns по умолчанию?

ответ

2
<root xmlns="some_identifier"> 

это объявляет пространство имен по умолчанию, корень и все его дочерние элементы будут принадлежать ему, вам не нужны префиксы.

<root xmlns="some_identifier" oneKey="value" /> 

По умолчанию пространства имен не применяются к атрибутам. Если вы хотите, чтобы oneKey принадлежал к пространству имен, вам необходимо создать префикс и использовать его по атрибуту

<root xmlns="some_identifier" xmlns:myns="some_identifier" myns:oneKey="value"/> 
+0

Ty для вашего ответа. Когда вы говорите, что «пространства имен по умолчанию не применяются к атрибутам». Используется ли это только для атрибутов в корневом элементе? Или это относится ко всем атрибутам во всех подэлементах? –

+0

Извините, но у меня есть еще один вопрос: официальный документ говорит: 'По умолчанию объявления пространства имен не применяются непосредственно к именам атрибутов; интерпретация неподписанных атрибутов определяется элементом, на котором они появляются ». Итак, если по умолчанию элементы в пространстве имен по умолчанию считаются находящимися в области пространства имен, то будут ли атрибуты одного и того же элемента? Таким образом, вам не нужно было бы префикс каждого имени атрибута? –

+0

Просто прочитайте еще несколько предложений за этим. Вы узнаете, что 'Имя пространства имен для имени unsrefixed name всегда не имеет значения'.Ваша цитата говорит об интерпретации, что означает, что пространство имен элемента достаточно, чтобы определить, что делать с его атрибутами, даже если у них нет собственного пространства имен. –

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