2010-08-10 4 views
0

У меня есть документ XML, который выглядит каквозвращение первого XSLT вхождения колонки

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

..... ...

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

Выход я должен был бы выглядеть следующим образом: - тр тд Заголовок/TD тд страница/тд/тр

указатели приветствуются .. O

+0

Думаю, вам следует разместить лучший образец ввода. Кроме того, существует ли только один элемент 'record'? – 2010-08-10 17:32:56

ответ

0

Что-то вроде этого?

<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> 
0

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

<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> 
Смежные вопросы