Xpoint
   [напомнить пароль]

Вывод данных из тегов

Метки: [без меток]
2014-12-03 13:22:09 [обр] Анара[досье]

Есть XML-файл:

<Root>
  <Row>
     <Column1>123<Column1>
     <Column2>
        <xsl:template match="par[@name='KEY1']/@value">
        <xsl:template match="par[@name='KEY2']/@value">
        <xsl:template match="par[@name='KEY3']/@value">
      <Column2>
  </Row>
  <Row>
     <Column1>124<Column1>
     <Column2>
        <xsl:template match="par[@name='KEY4']/@value">
        <xsl:template match="par[@name='KEY5']/@value">
        <xsl:template match="par[@name='KEY6']/@value">
        <xsl:template match="par[@name='KEY7']/@value">
        <xsl:template match="par[@name='KEY8']/@value">
     <Column2>
  </Row>
  <Row>
     <Column1>125<Column1>
     <Column2>
        <xsl:template match="par[@name='KEY9']/@value">
        <xsl:template match="par[@name='KEY10']/@value">
        <xsl:template match="par[@name='KEY11']/@value">
        <xsl:template match="par[@name='KEY12']/@value">
     <Column2>
  </Row>
 ...
</Root>

Нужно получить на выходе:

123 'KEY1' 'KEY2' 'KEY3'
124 'KEY4' 'KEY5' 'KEY6' 'KEY7' 'KEY8' 
125 'KEY9' 'KEY10' 'KEY11' 'KEY12'

Пишу XSLT:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
  <xsl:output encoding='windows-1251' indent='yes' method='text' version='1.0'></xsl:output>
                               <xsl:template match="Root">
                               <xsl:for-each select="Row">
                                           <xsl:value-of select="Column1"/>
                                           <xsl:text>   </xsl:text>
                               <xsl:variable name="q" select="Column2"/>
                               <xsl:variable name="w" select="substring-after($q,'xsl:template match=&quot;par[@name=')"/>
                                            <xsl:value-of select="substring-before($w,']/@value')"/>
                                            <xsl:text>&#xA;</xsl:text>
                               </xsl:for-each>
                               </xsl:template>
</xsl:stylesheet>

Получаю следующий результат:

123 'KEY1'
124 'KEY4'
125 'KEY9'

Как доработать XSLT, чтобы получать искомые полные данные из тега <Column2> для каждого <Column1>?

Заранее спасибо!

спустя 1 день 12 часов [обр] Jared(0/26)[досье]

Анара[досье], ваше выковыривание этих KEYN оберунть в еще один for-each. Как-то так примерно:

<xsl:for-each select="Row">
   ....
   <xsl:for-each select="Column2/*">
      <!-- выдергиваем нужное из @match -->
   </xsl:for-each>
   ....
</xsl:for-each>

А вообще, что бы ни говорили, иногда для простых вещей XML проще обработать парой регулярок.

Powered by POEM™ Engine Copyright © 2002-2005