Проще говоря, я бы хотел, чтобы все пути ниже имели одинаковые значения:
- / root / item1 / text ()
- / ROOT / ITEM1 /text ()
- / Root / Item1 / text ()
Насколько я понимаю, идея состоит в том, что узлы XML с различным регистром фактически обрабатываются как разные.Проблема здесь в том, что я строю динамический сборщик XML на основе набора реляционных таблиц SQL DB.Это приложение будет установлено на более чем 50 различных серверах с собственными экземплярами SQL.50% структуры таблиц, имен и типов будут отличаться, тогда как остальные 50% МОГУТ отличаться в буквенном регистре имени.Цель состоит в том, чтобы применить стандартные преобразования XQuery к этим динамически генерируемым XML-файлам, имеющим пользовательский И стандартный раздел, что означает, что оно применимо ко ВСЕМ 50+ серверам.Вот почему я ищу логику пути без учета регистра, несмотря на то, что она идет вразрез с основами XML, это дало бы ОГРОМНОЕ преимущество для нашего варианта использования, чтобы "выбрать" такую возможность.
Полезный обходной путь, который я сейчас использую для тестирования, - это предварительное преобразование с использованием XSLT для преобразования ВСЕХ имен узлов элемента в нижний регистр.Так что, если из этого ничего не выйдет, то, по крайней мере, все равно будет достаточно работоспособным.
Я новичок в XQuery / XPath / XSLT, поэтому пространства имен по-прежнему для меня странная концепция.Одна вещь, на которую я наткнулся, это объявление сличения.Однако я не могу сказать, если это только для типичных сравнений строк ($ x = $ y) или других подобных вещей.Saxon имеет встроенный метод своего процессора под названием Processor.DeclareCollation (), я пытался его использовать, однако я не заметил, что запросы выполняются по-другому.
Является ли сопоставление моим ответом и просто вопросомнастроить его (никогда до этого не путался)?Есть ли другой способ пойти по этому поводу?Или я должен придерживаться имеющегося у меня решения?
* PS Имена функций без учета регистра также были бы отличным бонусом [text () против TEXT ()] НО я могу жить без этого, простобыть полезным для nooblets в моей команде, чтобы испытать меньше ошибок.:)