powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Простой вопрос по фильтрованию в xsl
12 сообщений из 12, страница 1 из 1
Простой вопрос по фильтрованию в xsl
    #34479866
traktor123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нашол. Подскажите, как в <xsl:for-each select = "cdcatalod/cd[title = 'bob']">
Зделать фильтр не по условию " = ", а по условию " like " как в SQL ?
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34479896
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это условие ИМХО вообще не почему, ну может оно конечно и работает, но не видя что им парссят, сказать трудно
<xsl:for-each select = "cdcatalod/cd[title = 'bob']">
По идеи цикл по элементу cd , родителем которого является cdcatalod, и обязательно title = 'bob', вот только что такое title ?, если это атрибут то надо было @title = 'bob', если это какая то новая команда, то я такой не знаю, или это текст?
Короче вопросов больше чем ответов
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34480075
dejavew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SuSa... вот только что такое title ?
Это элемент title, дочерний по отношению к cd - ясно из nodetest... Типа так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<cdcatalog>
  <cd>
      <title>bob marley</title>
  </cd>
  <cd>
      <title>bob dylan</title>
  </cd>
  <cd>
      <title>elton bob</title>
  </cd>
</cdcatalog>
В принципе, для отбора вроде like достаточно использовать строковые функции XPath: starts-with(), contains(). Но, придется учесть тот факт, что XML - регистро-зависимый (SQL, как правило - нет), поэтому, чтобы отобрать значения "aBob", "boba" и "aBOBa", возможно придется использовать еще и функцию translate() в немного "вычурном" виде:
Код: plaintext
1.
<xsl:for-each select = "cdcatalod/cd[contains(translate(title,'ABCDEFGH<многа бальшыг букф>Z','abc<многа малинькиг букф>z'), 'bob')]">
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34480363
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dejavewВ принципе, для отбора вроде like достаточно использовать строковые функции XPath: starts-with(), contains(). Но, придется учесть тот факт, что XML - регистро-зависимый (SQL, как правило - нет), поэтому, чтобы отобрать значения "aBob", "boba" и "aBOBa", возможно придется использовать еще и функцию translate() в немного "вычурном" виде:
Код: plaintext
1.
<xsl:for-each select = "cdcatalod/cd[contains(translate(title,'ABCDEFGH<многа бальшыг букф>Z','abc<многа малинькиг букф>z'), 'bob')]">
Хм, а в той БД, что вы обычно используете, LIKE регистронезависимый ? ;-))) Ну или так бы и сказали что вам нужен upper(xxx) like yyy ...
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34480710
dejavew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TiG dejavew... XML - регистро-зависимый (SQL, как правило - нет)
Хм, а в той БД, что вы обычно используете, LIKE регистронезависимый ? ;-))) Ну или так бы и сказали что вам нужен upper(xxx) like yyy ...
Тут, по-моему, не возможности разных БД обсуждаются, а - XPath выражения для решения конкретных задач спрашивающего?
Вам известны функции XPath - upper() и like()? Мои вам - поздравления!!!
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34481320
traktor123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели всё так сложно... ?

на вот это:

dejavew
Код: plaintext
1.
<xsl:for-each select = "cdcatalod/cd[contains(translate(title,'ABCDEFGH<многа бальшыг букф>Z','abc<многа малинькиг букф>z'), 'bob')]">


даже смотреть страшно ...
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34481842
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
traktor123даже смотреть страшно ...
:D гыы. Это ещё не страшно. Ты бы видел что тут со знанием рекурсии вытворить можно!!
Иногда с ее помощью реализовываем то что по спецификации не предусмаривалось вообще к реализации, не в ранней версии не в последующих.
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34482549
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно упростить
dejavew
Код: plaintext
1.
<xsl:for-each select = "cdcatalod/cd[contains(translate(title,'ABCDEFGH<многа бальшыг букф>Z','abc<многа малинькиг букф>z'), 'bob')]">

И написать вот так:
Код: plaintext
1.
2.
3.
4.
Вверху:
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
в теле...
<xsl:for-each select = "cdcatalod/cd[contains(fn:lower-case(title)), 'bob')]">
fn:upper-case(string) Converts the string argument to upper-case
Example: upper-case('The XML')
Result: 'THE XML'
fn:lower-case(string) Converts the string argument to lower-case
Example: lower-case('The XML')
Result: 'the xml'
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34483436
dejavew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SuSaМожно упростить...
И написать вот так:
Код: plaintext
1.
2.
...
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
...

А в каких парсерах это "расширение xpath-functions" реализовано - известно?
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34483762
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой! каюсь, не то дал,
Код: plaintext
http://www.w3.org/ 2005 /xpath-functions
вот так достаточно .
Лично в saxon начиная с 6 версии работает, на Xalan вроде тоже, других не имею
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34486375
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно ещё упростить
Код: plaintext
1.
<xsl:for-each select="cdcatalod/cd[contains(title,'bob')]">
...
Рейтинг: 0 / 0
Простой вопрос по фильтрованию в xsl
    #34486382
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TiGХм, а в той БД, что вы обычно используете, LIKE регистронезависимый ? ;-)))какой коллейт выставишь, такой лайк и будет.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Простой вопрос по фильтрованию в xsl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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