Как добиться этой структуры таблицы с помощью xslt - PullRequest
0 голосов
/ 18 сентября 2009

Я сталкиваюсь с одной проблемой при написании одного xslt:

XML:

<students>
    <studentDetails tag="to" id="1" fname="AA"/>
    <studentDetails tag="mo" id="2" fname="BB"/>
</students>

написание xslt мне нужно конвертировать в HTML:

<table>
   <tr>
      <th>to</th>
      <th>mo</th>
   </tr>
   <tr>
      <td>1</td>
      <td>2</td>
   </tr>
   <tr>
      <td>AA</td>
      <td>BB</td>
   </tr>
</table>

Теперь, как написать этот xslt?

Я пытался

<xsl:template match="students">
  <table>
      <tr>
         <xsl:apply-templates select="studentDetails"/>
      </tr>
   </table>
</xsl:template>

<xsl:template match="studentDetails">
   <th>
      <xsl:call-template name="zz">
         <xsl:with-param name="child-name" select="'tag'"/>
      </xsl:call-template>
   </th>
   <td></td>
</xsl:template>

<xsl:template name="zz">
   <xsl:param name="child-name"/>
   <xsl:value-of select="@*[name() = $child-name]"/>
</xsl:template>

за его работу, но тогда моя логика не работает. Может кто-нибудь подсказать, как его кодировать.

Ответы [ 2 ]

3 голосов
/ 18 сентября 2009

Это даст вам требуемый вывод:

    <xsl:template match="students">
        <table>
            <tr>
                <xsl:for-each select="studentDetails">
                    <th><xsl:value-of select="@tag"/></th>
                </xsl:for-each>
            </tr>
            <tr>
                <xsl:for-each select="studentDetails">
                    <td><xsl:value-of select="@id"/></td>
                </xsl:for-each>
            </tr>
            <tr>
                <xsl:for-each select="studentDetails">
                    <td><xsl:value-of select="@fname"/></td>
                </xsl:for-each>
            </tr>                       
        </table>
    </xsl:template>
1 голос
/ 18 сентября 2009

Это не работает? Из того, что вы написали, это выглядит как то, что вы ищете?

<xsl:template match="/">
    <table>
      <tr>
        <th>to</th>
        <th>mo</th>
      </tr>
      <xsl:for-each select="/students/studentDetails">
        <tr>
          <td><xsl:value-of select="./@to" /></td>
          <td><xsl:value-of select="./@mo" /></td>
          <td><xsl:value-of select="./@fname" /></td>
        </tr>
      </xsl:for-each>
    </table>
</xsl:template>
* 1003 P.S *. Написано с моей головы, поэтому не может быть идеальным синтаксисом ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...