xslt返回第一次出现的列

时间:2010-08-10 10:21:52

标签: xml xslt

我有一个看起来像

的xml文档
<book>xxxxxxxxxxx</book>
<record>
  <field>
    <column>Title</column>
    <value>HF80</value>
  </field>
  <field>
    <column>page</column>
    <value>97</value>
  </field>

..... ...

我需要将“列”标题打印为表格行。我可以在表中获得所有记录,但不知道如何去做。

我需要的输出如下: - tr td Title / td td Page / td / tr

指针欢迎.. 0

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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>