Я пишу xml-файл с xerces-c 3.2.1, который выглядит как
<?xml version="1.0" encoding="UTF-16" standalone="yes" ?>
<Test xmlns="my_namespace"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="my_namespace myschema.xsd">
<Elem />
</Test>
с моим собственным пространством имен по умолчанию и пространствами имен xml и xsi объявляется.
В моем пространстве имен у меня есть атрибут с именем dim , для которого требуется объявление пространства имен, в противном случае он будет перепутан с уже существующим xml : dim.
Когда я устанавливаю этот атрибут с помощью elem->setAttributeNS("my_namespace", "myprefix:dim", data);
, тогда мой xml-файл выглядит как
<?xml version="1.0" encoding="UTF-16" standalone="yes" ?>
<Test xmlns="my_namespace"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="my_namespace myschema.xsd">
<Elem xmlns:myprefix="my_namespace" myprefix:dim="..."/>
</Test>
с объявлением пространства имен для каждого элемента, который использует dim attribute Я пишу, что плохо, потому что по размерам файлов я хотел бы иметь файлы для записи xerces-c, такие как
( золотой * )
<Test xmlns="my_namespace"
xmlns:myprefix="my_namespace"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="my_namespace myschema.xsd">
<Elem myprefix:dim="..."/>
</Test>
с объявлением префикса пространства имен только в корневом узле.Но если я добавлю такую запись в корневой узел, используя root->setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:myprefix", "my_namespace");
, то xerces-c создаст XML-файлы, такие как
<Test xmlns="my_namespace"
xmlns:myprefix="my_namespace"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="my_namespace myschema.xsd">
<myprefix:Elem1 ../>
<myprefix:Elem2 ../>
<Elem myprefix:dim="..."/>
</Test>
с префиксом все другие элементы myprefix: elem1 , myprefix: elem2 , кроме одного с моим тусклым , который является болью в шее ...
Как я могузаставить xerces-c по своей воле написать минимальное количество объявлений и префиксов пространства имен, как в золотой ??