Выберите значение атрибута первого узла предка

Требуется HTML:

<table>
 <thead>
  <tr>
   <th>1</th>
   <th>2</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>a</td>
   <td>b</td>
  </tr>
  <tr>
   <td>
    <table>
     <tr>
      <td>thisWidth</td>
     </tr>
    </table>
   </td>
  </tr>
 </tbody>
</table>

XML:

<row type='header'>
 <column width='150'>1</column>
 <column>2</column>
 <column type='tableintable' />
</row>
<row type='data'>
 <column>a</column>
 <column>b</column>
 <column>thisWidth</column>
</row>

Все работает так, как я хочу, я только хочу установить ширину элемента <td> в HTML. Это должна быть ширина первого столбца заголовка XML.
Прямо сейчас я использую это:

<xsl:attribute name="width"><xsl:value-of select="//row[@type='header']/@width[position() = 1]" /></xsl:attribute>

Это не работает. Как я могу выбрать значение нужного столбца?


person Grafit    schedule 08.12.2014    source источник


Ответы (1)


Попробуйте это выражение XPath

<xsl:attribute name="width">
    <xsl:value-of select="//row[@type='header']/column[position() = 1]/@width" />
</xsl:attribute>
person dfsq    schedule 08.12.2014
comment
Хотели бы вы сделать это так //row[1][@type='header']/column[position() = 1]/@width, чтобы гарантировать, что будет выбрана только первая строка в случае, если имеется более одной строки «заголовка». - person Bensonius; 09.12.2014