Где я должен поместить объявление URI для пространства имен в документе XML? - PullRequest
0 голосов
/ 07 октября 2010

В настоящее время я создаю схему XML с заголовком, телом и, возможно, ошибками.Я разделяю эти три части на разные пространства имен, поэтому мне интересно, где и когда мне следует помещать объявления пространства имен URI.

Например, должно ли это быть:

<head:schema xmlns:head="http://mywebsite.com/ns/head/" xmnls:body="http://mywebsite.com/ns/body/" xmlns:error="http://mywebsite.com/ns/error/">
    <head:Response>
       <head:MyFunctionResponse>
          <body:DataObject>
              <body:Parameter>Foo</body:Parameter>
              <body:Parameter>Bar</body:Parameter>
          </body:DataObject>
       </head:MyFunctionResponse>
    </head:Response>
</head:schema>

ТакНесмотря на то, что в данном конкретном документе нет пространства имен «ошибка», оно все равно определено, поэтому, когда пространство имен «тело» заменяется пространством имен «ошибка», <schema> остается прежним.

Или следуетэто будет больше похоже на это?

<head:schema>
    <head:Response xmlns:head="http://mywebsite.com/ns/head/">
       <head:MyFunctionResponse>
          <body:DataObject xmnls:body="http://mywebsite.com/ns/body/">
              <body:Parameter>Foo</body:Parameter>
              <body:Parameter>Bar</body:Parameter>
          </body:DataObject>
       </head:MyFunctionResponse>
    </head:Response>
</head:schema>

ИЛИ

<head:schema>
    <head:Response xmlns:head="http://mywebsite.com/ns/head/">
       <head:MyFunctionResponse>
          <error:ThrownException xmnls:body="http://mywebsite.com/ns/error/">
              <error:Id>21</error:Id>
              <error:Message>Something went wrong.</error:Message>
          </error:ThrownException>
       </head:MyFunctionResponse>
    </head:Response>
</head:schema>

, где пространство имен объявляется только так, как это необходимо.

Илиэто вопрос стиля, мнения или предпочтения.Например, «Сиденье у окна или у прохода?».

Если это не стиль, мнение или предпочтение, какие руководящие идеи стоят за размещением пространств имен?

1 Ответ

1 голос
/ 07 октября 2010

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

Или поместите их там, где они используются, а затем сделайте их пространством имен по умолчанию, чтобы вы могли сохранить кучу беспорядка:

<schema>
    <Response xmlns="http://mywebsite.com/ns/head/">
       <MyFunctionResponse>
          <DataObject xmnls="http://mywebsite.com/ns/body/">
              <Parameter>Foo</Parameter>
              <Parameter>Bar</Parameter>
          </DataObject>
       </MyFunctionResponse>
    </Response>
</schema>

Кстати: странно, что ваш корневой элемент (схема) не имеет пространства имен.

...