2013-02-19 57 views
0

您好我想創建一個HTML表格,其中顯示一列中的數字(年)和第二列中的數據。下面是我的xslt。我很困惑,因爲他們有相同的標籤。在XSLT腳本中感到困惑

<chapter> 
<row> 
     <entry> 
      <para>1984</para> 
     </entry> 
     <entry> 
      <para>International Business Companies Act passed into 
      law.</para> 
     </entry> 
    </row> 
    <row> 
     <entry> 
      <para>2004</para> 
     </entry> 
     <entry> 
      <para>BVI Business Companies Act passed into law, coming into 
      force on 1 January 2005.</para> 
     </entry> 
    </row> 
    <row> 
     <entry> 
      <para>2005</para> 
     </entry> 
     <entry> 
      <para>All three corporate statutes exist in parallel and it is 
      possible to incorporate companies under any of them.</para> 
     </entry> 
    </row> 
    <row> 
     <entry> 
      <para>2006</para> 
     </entry> 
     <entry> 
      <para>Incorporation provisions in the International Business 
      Companies Act and the Companies Act are repealed on 31 December 
      2005; the Acts remain in force but new companies may only be 
      incorporated under the BVI Business Companies Act.</para> 
     </entry> 
    </row> 
</chapter> 

感謝

回答

1

我假設您發佈的XML的前兩個元素包含<行>元素,並且所有行都被分組在一個名爲rows的父元素下。

如果其中一些假設是錯誤的,告訴我,我會糾正代碼。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output mode="html" indent="yes" omit-xml-declaration="yes"/> 

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

    <!-- I am assuming that the parent element for the set of row elements is 
     named rows. You can change this to match your XML --> 
    <xsl:template match="chapter"> 
     <table> 
      <tr> 
       <th>Year</th> 
       <th>Data</th> 
      </tr> 
      <xsl:apply-templates select="row" /> 
     </table> 
    </xsl:template> 

    <xsl:template match="row"> 
     <tr> 
      <xsl:apply-templates select="*" /> 
     </tr> 
    </xsl:template> 

    <xsl:template match="para"> 
     <td><xsl:value-of select="." /></td> 
    </xsl:template> 

</xsl:stylesheet> 

UPDATE:如果你只是想每一行的第一個條目/ para元素匹配,那麼你應該使用類似以下的模板:

<xsl:template match="entry[1]/para"> 
    <!-- Put your code here --> 
</xsl:template> 
+0

這是不是給一個表格O/p – 2013-02-19 10:04:15

+0

對不起,但我不知道你的意思與o/p。 如果我所做的假設是正確的,則輸出會生成一個HTML表格,具體取決於您的XML。你可以發佈你的完整XML嗎? – 2013-02-19 10:14:08

+0

對不起,我編輯了代碼。也請告訴我,是否有辦法只選擇第一個元素。 – 2013-02-19 11:03:57

0

下面是創建HTML table using XSLT的例子。該示例中使用的數據集與您的XML非常相似,只是將示例<book>標籤替換爲您的<row>標籤等。