обращение к элемента спска внутри узла

Alexandre

PHPПенсионер
обращение к элемента спска внутри узла

есть узел, который представляет список слов, разделенных запятой.
Код:
<city>Москва, Париж, Лондон, Нью-Йорк</city>
нужно составить такое xpath или еще что (<xsl:template>), чтоб можно было перебрать все элемента списка. Ну, например, преобразовать в следующую трансформацию
Код:
<city>Москва</city>
<city>Париж</city>
<city>Лондон</city>
<city>Нью-Йорк</city>
наиболее интересен вариант, чтоб это можно было использовать с ключами, например, чтоб можно сделать такую трансформацию
Код:
исходный xml 
<city>Москва, Париж, Лондон, Нью-Йорк</city>
<from name="Москва"  id=3 date="21.01.05" />
<from name="Москва"  id=2  date="25.04.05" />
<from name="Париж"  id=1 date="21.01.05" />
<from name="Париж"  id=4  date="27.04.05" />

надо
<city name="Москва" >прочие теги из  куска XML с  пометкой "Москва"
   <date  id=3 >21.01.05</date>
   <date  id=3 >25.04.05</date>
</city>
<city name="Париж">
   <date  id=1 >21.01.05</date>
   <date  id=4 >27.04.05</date>
</city>
....
 

inTox

вёбных дел мастер
рекурсия по условию contains(city,',') и откусывать по одному substring-before(city,',')

а аттрибуты писать в кавычках!
 

Alexandre

PHPПенсионер
рекурсия по условию contains(city,',')
для ключей я могу как-нибудь написать рекурсию???

-~{}~ 04.09.06 10:22:

Решение с использованием eXSLT
PHP:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:regexp="http://exslt.org/regular-expressions" extension-element-prefixes="regexp">
  <xsl:output type="text" /> 
 <xsl:template match="list">
  <xsl:copy-of select="c" /> 
  \n 
 <xsl:for-each select="regexp:match(c, '[\.-\w]+\b', 'g')">
  <xsl:value-of select="." /> <br>
  </xsl:for-each>
  </xsl:template>
  </xsl:stylesheet
-~{}~ 04.09.06 10:23:

tt
 
Сверху