У меня есть набор файлов XML, которые я обрабатываю с помощью преобразования XSL. У них есть пространство имен по умолчанию, поэтому мое XSL-преобразование должно содержать объявление:
XPath-умолчанию-имена = "урна: CZ-Р-IS-вав-XML-NS: данные-1.2.2"
Проблема заключается в том, что это значение время от времени меняется, и мое преобразование внезапно перестает работать, пока я не посмотрю на пример из нового файла, не извлеку этот идентификатор пространства имен и не помещу его в преобразование, в результате чего преобразование перестает работать для старые файлы. Есть ли способ передать это как параметр или установить его как-нибудь во время выполнения? Я пробовал синтаксис параметров, который я искал в различных руководствах, но ни один из них не работал для этого конкретного использования.
Я искал всевозможные форумы и нашел ссылки на независимое от пространства имен кодирование XSL, но не выяснил, как это сделать. Книга Яна Уильямса «XSLT and Xpath» гласит, что пространство имен по умолчанию должно быть объявлено, или вы ничего не получите в выходном потоке, как это работало для меня. Но я действительно не хочу регулярно менять это вручную, я хочу дать пользователю то, что будет работать, не требуя от меня постоянного внимания.
Единственный на 100% надежный способ, который я изобрел на данный момент, - это использование стандартного языка программирования, чтобы открыть исходный код XML и преобразование XSL в виде текстовых файлов, извлечь URI из источника XML, вставить его в преобразование XSL, закрыть оба файла, а затем, наконец, запустить фактическое преобразование. Это работает, но невероятно глупо, по крайней мере, на мой вкус. Как мне лучше справиться с изменением пространств имен по умолчанию?
Пит