powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Затупил с XPATH-отбором
7 сообщений из 7, страница 1 из 1
Затупил с XPATH-отбором
    #35137205
sysadm2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чето я затупил с отбором. Вроде всегда отбиралось по дереву нормально.
Хочу отгрести узел "/FindParm/cbFrom", а не могу.
Не через функции child::node(), а просто по именам узлов.
Проблема на скрине.
...
Рейтинг: 0 / 0
Затупил с XPATH-отбором
    #35137229
sysadm2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой, дошло - я чето сильно крото замутил xml при формировании - узлы попали в разные пространства имен
...
Рейтинг: 0 / 0
Затупил с XPATH-отбором
    #35137294
sysadm2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... хм... чето у меня все только без пространств имен работает
а они нужны вообще-то

на первом этапе надо б много XML-файликов из разных пространств имен обрабатывать

чето я вообще ничего в XPATH не могу зацепить, если у меня XML с непустым пространством имен

вот предположим, у меня есть такой файлик, который я хочу прогнать через XSLT
Код: plaintext
<FindParm p="1" xmlns="ASP.find_poputi_aspx">

пока там пространств имен нету - все работает отлично
как только добавил в этот файли xmlns - все пропало

как бы по логике этот корневой узел отгребается по /ASP.find_poputi_aspx:FindParm
однако ж нет. не понимаю я чего-то...

и второй вопрос - я бы хотел единый XSLT сделать на много-много xml-файликов, каждый из которых в своем пространстве имен находится

ну то есть корневой XSLT был бы не такой
Код: plaintext
<xsl:template match="/*"  >
а например такой
Код: plaintext
<xsl:template match="/ASP.find_poputi_aspx:*"  >
для каждого фрагмента XSLT-шаблона.
ну грубо говоря - это как ветки CASE

тоже не получается - как только вставляю пространство имен в template match - ругаецца

как правильно сделать такой XSLT, чтобы он много-много разных XML, каждый из которых в своих пространствах имен находится?
...
Рейтинг: 0 / 0
Затупил с XPATH-отбором
    #35137589
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:aspfind="ASP.find_poputi_aspx">

...
<xsl:template match="/aspfind:*">
...
Рейтинг: 0 / 0
Затупил с XPATH-отбором
    #35137665
sysadm2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сенкс
блин, вот меня сглючило - действительно, это же префиксы, а не полные пространства имен
...
Рейтинг: 0 / 0
Затупил с XPATH-отбором
    #35137679
sysadm2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а тогда еще один вопросик по пространтствам имен - все равно меня в них клинит

вот у меня есть мое входное дерево XML
ну корень в одном пространстве, а узлы в другом

в принципе я могу делать как делал раньше, все в одном пространтсве, но тут возникла интересная идея - чтобы эти дочерние узлы во всем множестве XML-файликов

были в одном пространстве
и одним шаблоном обрабатывались

но те на вход поступают 20 XML-файликов, в них корни в разных пространтсвах, но листья в одинаковых

те если бы шаблоны были все разные - я мог бы описать лист так

Код: plaintext
 /aspfind:FindParm/Drop:cbFrom

но мне бы хотельсь как-то так этот шаблон описать

Код: plaintext
 /*:FindParm/Drop:cbFrom

те входной узел в ЛЮБОМ пространстве, а шаблон срабатывает один

конечно, если опустить простанство

Код: plaintext
 Drop:cbFrom
- то оно сработает, только если во входном документе нету вообще никакого пространтсва имен
как-то так я и делал раньше, но вот ща все хитрее надо б закрутить, а знаний не хватает

как бы такой символ найти, чтоб обозначить им ЛЮБОЕ пространство имен входного документа?
...
Рейтинг: 0 / 0
Затупил с XPATH-отбором
    #35138959
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шаблон на пространство имён задать нельзя, но можно выцепить локальное имя узла
/*[local-name()='FindParm']/Drop:cbFrom
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Затупил с XPATH-отбором
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]