Помогите! Поиск по XML
От: da.ru  
Дата: 20.08.04 12:04
Оценка:
Есть файл такого содержания


<xml ...>
<substances>
  <substance>
    <name>соединение х1</name>
    <formula>kukaracha+kukaracha</formula>
  </substances>
  ..
  ..
  ..
  <substance>
    <name>соединение х2</name>
    <formula>kukaracha+kukaracha+kuka</formula>
  </substances>
  ..
  ..
  <substance>
    <name>соединение yy</name>
    <formula>kukaracha+kukaracha-kuka</formula>
  </substances>
</substances>


Вопрос: как сформировать запрос чтобы вывелись только те которые сожержат букву "х"?
Предлагался вариант
<xsl:apply-templates select="\all\element[contains(text, 'какое-то слово')]"/>

но так как я новичок то не совсем понял как это сделать, и не получилось, выводило что то типа
substances/substance[-->contains(name<--,'x')]

Если кто знает подскажите, пожалуста.
Re: Помогите! Поиск по XML
От: don_Kabanos Россия  
Дата: 20.08.04 12:41
Оценка:
Здравствуйте, da.ru, Вы писали:

DR>Есть файл такого содержания



DR>
DR><xml ...>
DR><substances>
DR>  <substance>
DR>    <name>соединение х1</name>
DR>    <formula>kukaracha+kukaracha</formula>
DR>  </substances>
DR>  ..
DR>  ..
DR>  ..
DR>  <substance>
DR>    <name>соединение х2</name>
DR>    <formula>kukaracha+kukaracha+kuka</formula>
DR>  </substances>
DR>  ..
DR>  ..
DR>  <substance>
DR>    <name>соединение yy</name>
DR>    <formula>kukaracha+kukaracha-kuka</formula>
DR>  </substances>
DR></substances>
DR>


DR>Вопрос: как сформировать запрос чтобы вывелись только те которые сожержат букву "х"?



в точности для твоего случая:

<xsl:apply-templates select="substances/substance[contains(name, 'xx')]"/>


т.е выбрать все элементы substance, которые находятся внутри элемента substances и внутри которого (эл-та substance) содержиться элемент name, содержащий в себе сочетание xx
Ah! The infinite wonders of Abyss! If there's anything you don't like — you'll find it here. (c) Tanar'ri saying
Re[2]: Помогите! Поиск по XML
От: da.ru  
Дата: 20.08.04 12:55
Оценка:
Здравствуйте, don_Kabanos, Вы писали:

_K>Здравствуйте, da.ru, Вы писали:


DR>>Есть файл такого содержания



DR>>
DR>><xml ...>
DR>><substances>
DR>>  <substance>
DR>>    <name>соединение х1</name>
DR>>    <formula>kukaracha+kukaracha</formula>
DR>>  </substances>
DR>>  ..
DR>>  ..
DR>>  ..
DR>>  <substance>
DR>>    <name>соединение х2</name>
DR>>    <formula>kukaracha+kukaracha+kuka</formula>
DR>>  </substances>
DR>>  ..
DR>>  ..
DR>>  <substance>
DR>>    <name>соединение yy</name>
DR>>    <formula>kukaracha+kukaracha-kuka</formula>
DR>>  </substances>
DR>></substances>
DR>>


DR>>Вопрос: как сформировать запрос чтобы вывелись только те которые сожержат букву "х"?



_K>в точности для твоего случая:


_K>
_K><xsl:apply-templates select="substances/substance[contains(name, 'xx')]"/>
_K>


_K>т.е выбрать все элементы substance, которые находятся внутри элемента substances и внутри которого (эл-та substance) содержиться элемент name, содержащий в себе сочетание xx


То есть, создать xsl файл и поставить его в качестве фильтра на xml файл?
Re[3]: Помогите! Поиск по XML
От: don_Kabanos Россия  
Дата: 20.08.04 16:25
Оценка:
Здравствуйте, da.ru, Вы писали:

DR>Здравствуйте, don_Kabanos, Вы писали:


_K>>Здравствуйте, da.ru, Вы писали:


DR>>>Есть файл такого содержания



DR>>>
DR>>><xml ...>
DR>>><substances>
DR>>>  <substance>
DR>>>    <name>соединение х1</name>
DR>>>    <formula>kukaracha+kukaracha</formula>
DR>>>  </substances>
DR>>>  ..
DR>>>  ..
DR>>>  ..
DR>>>  <substance>
DR>>>    <name>соединение х2</name>
DR>>>    <formula>kukaracha+kukaracha+kuka</formula>
DR>>>  </substances>
DR>>>  ..
DR>>>  ..
DR>>>  <substance>
DR>>>    <name>соединение yy</name>
DR>>>    <formula>kukaracha+kukaracha-kuka</formula>
DR>>>  </substances>
DR>>></substances>
DR>>>


DR>>>Вопрос: как сформировать запрос чтобы вывелись только те которые сожержат букву "х"?



_K>>в точности для твоего случая:


_K>>
_K>><xsl:apply-templates select="substances/substance[contains(name, 'xx')]"/>
_K>>


_K>>т.е выбрать все элементы substance, которые находятся внутри элемента substances и внутри которого (эл-та substance) содержиться элемент name, содержащий в себе сочетание xx


DR>То есть, создать xsl файл и поставить его в качестве фильтра на xml файл?


Я написал тебе XPath выражение, которое выбирает те элементы, которые тебе нужны. Если с ними еще нужно что-то делать — это другой вопрос. Если называть это фильтром, то, в принципе, да
Ah! The infinite wonders of Abyss! If there's anything you don't like — you'll find it here. (c) Tanar'ri saying
Re[4]: Помогите! Поиск по XML
От: da.ru  
Дата: 23.08.04 12:15
Оценка:
Здравствуйте, don_Kabanos, Вы писали:

_K>Здравствуйте, da.ru, Вы писали:


DR>>Здравствуйте, don_Kabanos, Вы писали:


_K>>>Здравствуйте, da.ru, Вы писали:


DR>>>>Есть файл такого содержания



DR>>>>
DR>>>><xml ...>
DR>>>><substances>
DR>>>>  <substance>
DR>>>>    <name>соединение х1</name>
DR>>>>    <formula>kukaracha+kukaracha</formula>
DR>>>>  </substances>
DR>>>>  ..
DR>>>>  ..
DR>>>>  ..
DR>>>>  <substance>
DR>>>>    <name>соединение х2</name>
DR>>>>    <formula>kukaracha+kukaracha+kuka</formula>
DR>>>>  </substances>
DR>>>>  ..
DR>>>>  ..
DR>>>>  <substance>
DR>>>>    <name>соединение yy</name>
DR>>>>    <formula>kukaracha+kukaracha-kuka</formula>
DR>>>>  </substances>
DR>>>></substances>
DR>>>>


DR>>>>Вопрос: как сформировать запрос чтобы вывелись только те которые сожержат букву "х"?



_K>>>в точности для твоего случая:


_K>>>
_K>>><xsl:apply-templates select="substances/substance[contains(name, 'xx')]"/>
_K>>>


_K>>>т.е выбрать все элементы substance, которые находятся внутри элемента substances и внутри которого (эл-та substance) содержиться элемент name, содержащий в себе сочетание xx


DR>>То есть, создать xsl файл и поставить его в качестве фильтра на xml файл?


_K>Я написал тебе XPath выражение, которое выбирает те элементы, которые тебе нужны. Если с ними еще нужно что-то делать — это другой вопрос. Если называть это фильтром, то, в принципе, да


Вот втом то и дело что как эту строчку применять, потому что я пишу ее вроде в качестве фильтра(если xsl накладывать на xml) так ведь? то мне пишет что не знает он такой функции...
substances/substance[-->contains(name<--,'x')]
Re[5]: Помогите! Поиск по XML
От: don_Kabanos Россия  
Дата: 23.08.04 13:43
Оценка:
Здравствуйте, da.ru, Вы писали:

DR>Здравствуйте, don_Kabanos, Вы писали:




DR>Вот втом то и дело что как эту строчку применять, потому что я пишу ее вроде в качестве фильтра(если xsl накладывать на xml) так ведь? то мне пишет что не знает он такой функции...

DR>
DR>substances/substance[-->contains(name<--,'x')]
DR>



Хм... странно. функция contains определена для XSLT 1.0 и должна поддерживаться всеми парсерами. Xalan знает ее...
Ah! The infinite wonders of Abyss! If there's anything you don't like — you'll find it here. (c) Tanar'ri saying
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.