xslt возвращает первое вхождение столбца - PullRequest
0 голосов
/ 10 августа 2010

У меня есть документ XML, который выглядит как

<book>xxxxxxxxxxx</book>
<record>
  <field>
    <column>Title</column>
    <value>HF80</value>
  </field>
  <field>
    <column>page</column>
    <value>97</value>
  </field>

..... ...

Мне нужно напечатать заголовок столбца в виде строки таблицы. Я могу получить все записи в таблице, но не знаю, как это сделать.

Вывод, который мне нужен, будет выглядеть так: tr td название / td td Page / td / tr

Указатели приветствуются .. О * +1010 *

Ответы [ 2 ]

0 голосов
/ 10 августа 2010

Это преобразование :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="record">
  <table border="1">
   <tr><xsl:apply-templates select="field/column"/></tr>
   <tr><xsl:apply-templates select="field/value"/></tr>
  </table>
 </xsl:template>

 <xsl:template match="column|value">
  <td><xsl:apply-templates/></td>
 </xsl:template>

 <xsl:template match="book/text()"/>
</xsl:stylesheet>

при применении к этому XML-документу (ваш предоставленный XML сделан правильно):

<books>
    <book>xxxxxxxxxxx</book>
    <record>
        <field>
            <column>Title</column>
            <value>HF80</value>
        </field>
        <field>
            <column>page</column>
            <value>97</value>
        </field>
    </record>
</books>

дает желаемый результат :

<table border="1">
   <tr>
      <td>Title</td>
      <td>page</td>
   </tr>
   <tr>
      <td>HF80</td>
      <td>97</td>
   </tr>
</table>
0 голосов
/ 10 августа 2010

Как то так?

<xsl:template match="/">
  <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <xsl:apply-templates select="root/record/field" />  
    </tr>
  </table>
</xsl:template>

<xsl:template match="/root/record/field">
  <td>
    <xsl:value-of select="./value" />
  </td>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...