Ошибка пространства имен при разборе пространства имен XML с несколькими URI в perl - PullRequest
0 голосов
/ 17 сентября 2018
use XML::LibXML;

use strict;
use warnings;

my $parser = XML::LibXML->new();
my $xmldata = '<?xml version="1.0" encoding="utf-8"?><Research xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.rixml.org/2013/2/RIXML" xmlns:schemaLocation="http://www.rixml.org/2013/2/RIXML http://www.rixml.org/assets/documents/schemas/RIXML-2_4.xsd" xmlns:rixmldt="http://www.rixml.org/2013/2/RIXML-datatypes http://www.rixml.org/assets/documents/schemas/RIXML-datatypes-2_4.xsd" language="eng"></Research>';

my $respDom = $parser->parse_string($xmldata);
print $respDom;

Это ошибка, которую я получаю.XML::LibXML не поддерживает несколько URI в пространствах имен?

Error(s), warning(s):
:1: namespace error : xmlns:schemaLocation: 'http://www.rixml.org/2013/2/RIXML http://www.rixml.org/assets/documents/schemas/RIXML-2_4.xsd' is not a valid URI
ml.org/2013/2/RIXML http://www.rixml.org/assets/documents/schemas/RIXML-2_4.xsd"
                                                                                ^
:1: namespace error : xmlns:rixmldt: 'http://www.rixml.org/2013/2/RIXML-datatypes http://www.rixml.org/assets/documents/schemas/RIXML-datatypes-2_4.xsd' is not a valid URI
datatypes http://www.rixml.org/assets/documents/schemas/RIXML-datatypes-2_4.xsd"
                                                                                ^

XML переформатирован

<?xml version="1.0" encoding="utf-8"?>
<Research
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://www.rixml.org/2013/2/RIXML"
    xmlns:schemaLocation="http://www.rixml.org/2013/2/RIXML http://www.rixml.org/assets/documents/schemas/RIXML-2_4.xsd"
    xmlns:rixmldt="http://www.rixml.org/2013/2/RIXML-datatypes http://www.rixml.org/assets/documents/schemas/RIXML-datatypes-2_4.xsd"
    language="eng">
</Research>

1 Ответ

0 голосов
/ 17 сентября 2018

Предоставление нескольких URI для имени пространства имен XML 1.0 не является допустимым синтаксисом. Трудно представить, что вы имеете в виду под этим

Пространства имен в XML 1.0 (третье издание) говорит об этом

Нормализованное значение атрибута ДОЛЖНО быть либо ссылкой URI - именем пространства имен, идентифицирующим пространство имен - либо пустой строкой

...