powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Предикаты
22 сообщений из 22, страница 1 из 1
Предикаты
    #38749531
Контекстные узлы - ITEM
у некоторых есть дочерние MODIFICATIONS
для этого набора узлов хочу выбрать datetime у item, у которых нет modifications:
Код: xml
1.
*[datetime='item[not(count(modifications)>0)]/datetime']



имею ли я в предикатах так обращаться к item/datetime для этого контекстного узла??
в предикатных книжках не смог найти ответа)
...
Рейтинг: 0 / 0
Предикаты
    #38749562
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВалерьянкаКонтекстные узлы - ITEM
у некоторых есть дочерние MODIFICATIONS
для этого набора узлов хочу выбрать datetime у item, у которых нет modifications:
Код: xml
1.
.[not(modifications)/datetime]


Валерьянкаобращаться к item/datetime для этого контекстного узла??
Код: xml
1.
current()
...
Рейтинг: 0 / 0
Предикаты
    #38749578
Debugging error: invalid Xpath expression (unexpected token - "[not(modifications/datetime)]")
...
Рейтинг: 0 / 0
Предикаты
    #38749585
Debugging error: invalid Xpath expression (unexpected token - "[not(modifications)/datetime]")
...
Рейтинг: 0 / 0
Предикаты
    #38749602
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
.[not(modifications)]/datetime
...
Рейтинг: 0 / 0
Предикаты
    #38749613
я сразу подумал, что была опечатка, это делал, но все равно

Invalid XPath expression
Unexpected token - "[not(modifications)]/date"

скопировано из валидатора
...
Рейтинг: 0 / 0
Предикаты
    #38749630
я думаю точка не прокатывает, менял на
Код: xml
1.
·	·	·



результат отрицательный
...
Рейтинг: 0 / 0
Предикаты
    #38749665
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерьянкаскопировано из валидатораИз какого валидатора?
Валерьянкая думаю точка не прокатывает,А я думаю, что Вы чего-то не договариваете
Валерьянкаменял наДерзайте. В юникоде не так много символов. Прямым перебором Вы обязательно найдете правильное решение
...
Рейтинг: 0 / 0
Предикаты
    #38749703
altova xml editor,
вставил на сервер, то же самое:
Код: xml
1.
xsltSortComp: could not compile select expression 'modifications[not(datetime < preceding-sibling::item/datetime) and not(datetime < following-sibling::item/datetime)]/datetime | .[not(modifications)]/datetime'



если вместо точки поставить *, то сразу все ок, но, естественно, не сортирует, хотя [not(modifications)]/datetime в другом контексте выбирает то что нужно.

получается некорректно парсит точку, в специальных символах я нашел только три варианта, как можно обойти точку?
...
Рейтинг: 0 / 0
Предикаты
    #38749721
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Код: xml
1.
*[not(modifications)]/datetime
...
Рейтинг: 0 / 0
Предикаты
    #38750502
а чем вызвана была идея "." ?
...
Рейтинг: 0 / 0
Предикаты
    #38750988
Antonariy_Vasilisk_
Код: xml
1.
*[not(modifications)]/datetime



я конечно извиняюсь, но это не то, ведь нужно обратиться к datetime как к элементу узла item, а не к элементу потомка узла item.
По смыслу должно быть "." , но не работает
...
Рейтинг: 0 / 0
Предикаты
    #38751001
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Код: xml
1.
item[not(modifications)]/datetime
...
Рейтинг: 0 / 0
Предикаты
    #38751002
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy_Vasilisk_
Код: xml
1.
item[not(modifications)]/datetime


а хотя нет.

я вообще перестал что либо понимать.
...
Рейтинг: 0 / 0
Предикаты
    #38751681
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
self::item[not(modifications)]/datetime


???
...
Рейтинг: 0 / 0
Предикаты
    #38751978
_Vasilisk_
Код: xml
1.
self::item[not(modifications)]/datetime


???

YES!
наконец-то, через value-of уже выводится правильно!

так что, self:: и "." это тождественно или нет?
Первое работает (и описано в документации) а второе? по второму не нашел однозначного вразумительного трактования
...
Рейтинг: 0 / 0
Предикаты
    #38751983
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерьянкаэто тождественно или нет?Да
Валерьянкапо второму не нашел однозначного вразумительного трактованияПопробуйте сменить парсер. Имхо, просто ошибка
...
Рейтинг: 0 / 0
Предикаты
    #38752008
И сортировка пытается работать, но неправильно:
неправильно считается самое актуальное время
Код: xml
1.
modifications/item[not(datetime < preceding-sibling::modifications/item/datetime) and not(datetime < following-sibling::modifications/item/datetime)]/datetime



сейчас формат типа 08.09.2014 13:40:01, а
нужно привести datetime к численному виду, сначала поменять на год:месяц:день:час:минута:секунда, а потом на
number(год:месяц:день:час:минута:секунда), верно?
...
Рейтинг: 0 / 0
Предикаты
    #38752053
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерьянкасейчас формат типа 08.09.2014 13:40:01, Стандарт
Валерьянкапотом на number(год:месяц:день:час:минута:секунда)Не уверен, но мне кажется, что операция сравнения определена и для строк

А еще должно работать так
Код: xml
1.
2.
3.
4.
5.
6.
<xsl:for-each select="..">
  <xsl:sort select="datetime" data-type="text" order="descending"/>
  <xsl:if test="position() = 1">
    ..........
  </xsl:if>
</xsl:for-each>


P.S. xsl:for-each можно заменит на apply-templates
...
Рейтинг: 0 / 0
Предикаты
    #38753681
_Vasilisk_Валерьянкасейчас формат типа 08.09.2014 13:40:01, Стандарт
Валерьянкапотом на number(год:месяц:день:час:минута:секунда)Не уверен, но мне кажется, что операция сравнения определена и для строк

А еще должно работать так
Код: xml
1.
2.
3.
4.
5.
6.
<xsl:for-each select="..">
  <xsl:sort select="datetime" data-type="text" order="descending"/>
  <xsl:if test="position() = 1">
    ..........
  </xsl:if>
</xsl:for-each>


P.S. xsl:for-each можно заменит на apply-templates

интересно попробовать..

а вообще заработало с моими выражениями в apply-template!
и...все заработало без каких либо манипуляций с datetime, без объявления data-type в sort,
сортирует как надо без node-set,
менял datetime в XML в разных вариантах, и сортировка работает!

Круто!
...
Рейтинг: 0 / 0
Предикаты
    #38753697
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерьянкабез объявления data-type в sort, Тынц авторdata-type text
number
qname Optional. Specifies the data-type of the data to be sorted. Default is "text"
...
Рейтинг: 0 / 0
Предикаты
    #38753868
_Vasilisk_Валерьянкабез объявления data-type в sort, Тынц авторdata-type text
number
qname Optional. Specifies the data-type of the data to be sorted. Default is "text"

я еще раз посижу потестирую,
но все что я в XML увеличивал datetime у item и у modifications/item, они все вылезали вверх списка как и полагается
Код: xml
1.
2.
3.
4.
5.
<xsl:apply-templates select="item">
				
<xsl:sort select="modifications/item[not(datetime < preceding-sibling::modifications/item/datetime) and not(datetime < following-sibling::modifications/item/datetime)]/datetime | self::item[not(modifications)]/datetime" order="descending"></xsl:sort>
				
</xsl:apply-templates>



проверю еще более аккуратно
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Предикаты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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