2015-07-15 2 views
-1

Я пытаюсь написать следующий элемент в файл XML:Запись XML в Visual Basic

<ns2:IntraConsignment IntraListingsNbr="1" xmlns:ns2="http://www.minfin.fgov.be/IntraConsignment" xmlns="http://www.minfin.fgov.be/InputCommon"> 

В настоящее время линия выглядит как:

<ns2:IntraConsignment IntraListingsNbr="1" xmlns="http://www.minfin.fgov.be/InputCommon" xmlns:ns2="http://www.minfin.fgov.be/IntraConsignment"> 

Я использую следующий код:

XmlWrt.WriteStartElement"ns2", "IntraConsignment", "http://www.minfin.fgov.be/IntraConsignment") 
XmlWrt.WriteAttributeString("IntraListingsNbr", "1") 
XmlWrt.WriteAttributeString("xmlns", "http://www.minfin.fgov.be/InputCommon") 

Как исправить это?

+0

Как вы можете исправить * что *? –

+0

Я не знаю * ничего *, который рассматривает * порядок * объявлений пространства имен (по одному элементу) как значительный. –

+0

Я тоже не уверен в этом. Если заказ не влияет на работу, нет проблем ... – H3Ls3n

ответ

2

От Namespaces in XML 1.0 (Namespace scoping):

Области действия объявления пространства имен объявляющего префикса проходит от начала начального тега, в котором он появляется до конца соответствующего конечного тега, за исключением объема любого внутренние декларации с той же частью NSAttName

Таким образом, это означает, что две декларации пространства имен в одном и том же стартовом теге имеют точно такой же объем. Что, в свою очередь, подразумевает, что нет никакого значения для заказа , в котором появляются декларации.

Единственное место, где я могу видеть, где это может быть неоднозначным, - это то, что в одном и том же стартовом теге вы пытались объявить два пространства имен, используя тот же префикс. Я не могу (на данный момент) найти конкретный запрет на это, но я уверен, что большинству процессоров XML это не понравится. Но это невозможно - несмотря на их особый смысл, объявления пространства имен по-прежнему являются атрибутами, и вам не разрешено применять один и тот же атрибут несколько раз к одному элементу.

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