Здравствуйте, ·, Вы писали:
M>> Есть XPath выражение: "/Project/Targets/Target/Groups/Group[string(GroupName)=$name]/preceding-sibling::text()". Оно не срабатывает, а выкидывает ошибку, мол не могу выполнить
·>Я не могу понять описание задачи. Приведи пример входного xml с объяснением чего ты хочешь выбрать.
Исходное поддерево:
...
<Group>
<GroupName>github_misc_stm32_meekdai_stm32_grbl</GroupName>
<Files>
...
</Files>
</Group>
...
Я могу выбрать нужный тэг Group через выражение "/Project/Targets/Target/Groups/Group[string(GroupName)=$name]" где name задается как "github_misc_stm32_meekdai_stm32_grbl", и удалить его.
И — мне нужно выбрать текст (который есть пустая строка чисто для отступа, с переводом строки) перед этим тэгом, чтобы его тоже удалить и корректно модифицировать дерево, чтобы не появлялось пустых строк и прочих артефактов.
Потому что если я просто удаляю найденый тег, то остается пустая строка и ненужный перевод строки, и это очень мешает
·>Твоя конструкция не работает потому preceding-sibling ожидает тег, чтобы выбрать всё поддерево, очевидно что тут использовать text() — бессмыслица.
·>Вот удобная картинка чтобы понимать что делают разные axes:
·>Image: 7x1B0.gif
Спасибо, но пока не помогло