Использование xmlns:something="..."
объявляет пространство имен XML . Такое пространство имен - это просто строка, которая поможет придать уникальное значение именам элементов, таким как template
или href
, обеспечивая возможность использования нескольких языков на основе XML в одном документе, не создавая путаницы в отношении его значения. .
Некоторые из этих пространств имен зарезервированы для использования W3C. Пространство имен XSLT является одним из них. Правильный процессор XSLT проверит, объявляет ли таблица стилей правильное пространство имен, чтобы убедиться, что не может быть неправильной интерпретации. Корневой элемент таблицы стилей должен находиться в этом пространстве имен XSLT.
Для фактического значения пространства имен у вас обычно будет URI (и чаще всего URL), поскольку обычно это хороший уникальный идентификатор. Однако этот никогда не следует использовать для фактического разрешения каких-либо онлайн-ресурсов во время обработки XML . В то время как HTTP-URL-адреса обычно обрабатываются без учета регистра и могут использовать кодирование URL-адреса для символов (например, пробел становится %20
), такое разрешение или равенство URL-адресов не проверяется при обработке пространства имен XML. Пространство имен в XML - это не что иное, как строка, которая всегда проверяется в ее точном виде, регистр и все.
Так что, если процессор XSLT жалуется, что какой-то ресурс по URL-адресу не может быть найден, то он либо делает то, что не должен делать, либо проблема не имеет ничего общего с обработкой пространства имен.
Вы используете Saxon, который определенно не является процессором, который не понимает концепцию пространства имен. Его отцом является Майкл Кей, который также отвечает за спецификацию XSLT 2.0. Но Saxon поддерживает обработку XSLT с учетом схемы. Если в документе указано местоположение схемы, то процессор, использующий это для проверки, фактически использует это местоположение для получения схемы. В этом разница с пространством имен. Расположение DTD и XML-схемы может определенно привести к сетевой активности.
Поэтому я советую вам проверить, если ...
- XML использует DTD с внешними определениями и их наличием;
- XML указывает местоположение схемы и может ли быть достигнуто это местоположение;
- таблица стилей использует схему или какой-либо другой внешний ресурс, и доступен ли он.
Как только вы найдете причину, изучите использование каталогов XML вместе с процессором. Каталог XML позволит вам использовать локальные ресурсы, если они не могут быть разрешены из их URI.