XSLT, получение значений не в порядке - PullRequest
0 голосов
/ 13 октября 2011

У меня есть такой XML

    <row>
        <col>1</col>
        <col>name1</col>
        <col>link1</col>
        <col>junk1</col>
        <col>value1</col>
    </row>
    <row>
       <col>2</col>
       <col>name2</col>
       <col>link2</col>
       <col>junk2</col>
       <col>value2</col>
    </row>

как мне написать XSLT, чтобы получить этот вывод?третий столбец в каждой строке содержит ссылку, и четвертое значение не нужно печатать в выходных данных

    <tr>
        <td>1<td>
        <td><a href="link1">name1</a></td>
        <td>value1<td>
    </tr>
    <tr>
        <td>2<td>
        <td><a href="link2">name2</a></td>
        <td>value<td>
    </tr>

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Просмотр вашего XSLT поможет понять, почему вы получаете несортированный вывод.Но в любом случае попробуйте <xsl:sort select="col/text()"/>.

0 голосов
/ 13 октября 2011

Следующий XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html" indent="yes"/>

   <xsl:template match="/table">
      <xsl:copy>
         <xsl:apply-templates select="row">
            <xsl:sort select="col[1]"/>
         </xsl:apply-templates>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="row">
      <tr>
         <td>
            <xsl:value-of select="col[1]"/>
         </td>
         <td>
            <a href="{col[3]}">
               <xsl:value-of select="col[2]"/>
            </a>
         </td>
         <td>
            <xsl:value-of select="col[5]"/>
         </td>
      </tr>
   </xsl:template>
</xsl:stylesheet>

При применении к следующему входному XML

<table>
    <row> 
        <col>1</col> 
        <col>name1</col> 
        <col>link1</col> 
        <col>junk1</col> 
        <col>value1</col> 
    </row> 
    <row> 
       <col>2</col> 
       <col>name2</col> 
       <col>link2</col> 
       <col>junk2</col> 
       <col>value2</col> 
    </row> 
</table>

будет производить следующий вывод

<table>
   <tr>
      <td>1</td>
      <td>
         <a href="link1">name1</a>
      </td>
      <td>value1</td>
   </tr>
   <tr>
      <td>2</td>
      <td>
         <a href="link2">name2</a>
      </td>
      <td>value2</td>
   </tr>
</table>

Обратите внимание на использованиеШаблоны значений атрибутов (AVT) для установки атрибута href для тега a :

<a href="{col[3]}">

Вы также можете покончить с xsl: sort если вы хотите, чтобы порядок строк в выходных данных был таким же, как порядок во входном XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...