2012-10-21 12 views
3

我需要編寫一個報告iReportXML數據源有一個一對多的關係。如何使用一對多關係基於XML數據源製作報表?

我的主表是用戶列表,並且此表中的每一行都映射到角色表中的許多行。當我得到的信息爲一個XML文檔,它具有以下結構:

<results> 
    <user> 
    <name>John Smith</name> 
    <id>12345</id> 
    <roles> 
     <role> 
     <name>Reports on Self</name> 
     <id>50</id> 
     </role> 
     <role> 
     <name>Reports on Others</name> 
     <id>51</id> 
     </role> 
    </roles> 
    </user> 
    <user> 
    <name>Jane Doe</name> 
    <id>54321</id> 
    <roles> 
     <role> 
     <name>Reports on Any</name> 
     <id>53</id> 
     </role> 
     <role> 
     <name>Changes to Any</name> 
     <id>63</id> 
     </role> 
    </roles> 
    </user> 
</results> 

我需要的是對結果顯示,像這樣。我找到了關於如何做類似於子查詢的信息,但是我沒有直接連接到數據庫。我需要從XML文檔運行報告。

List of Users: 
12345  John Smith 
      Roles: 
       Reports on Self 
       Reports on Others 

54321  Jane Doe 
      Roles: 
       Reports on Any 
       Changes to Any 

請讓我知道如果你有任何想法如何做到這一點。

+0

我沒有時間來舉個例子,但你可以使用XSLT轉換爲HTML,這將允許您需要的格式。這裏是一個參考鏈接:http://www.w3schools.com/xml/xml_xsl.asp – N1tr0

回答

0

不幸的是,你不能僅僅使用XPath來詢問你的問題,因爲它僅用於查詢XML中的元素。但有了像XSLT這樣的東西,這是可能的。

使用您的文件上面,與下面的XSLT ...

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
<xsl:output method="text"/> 
<xsl:template match="/"> 
    <xsl:text>List of Users: 
    </xsl:text> 
    <xsl:apply-templates/> 
</xsl:template> 
<xsl:template match="user"> 
    <xsl:value-of select="id"/> 
    <xsl:text>  </xsl:text> 
    <xsl:value-of select="name"/> 
    <xsl:text> 
    </xsl:text> 
    <xsl:apply-templates select="roles"/> 
</xsl:template> 
<xsl:template match="roles"> 
    <xsl:text>   Roles: 
    </xsl:text> 
    <xsl:apply-templates/> 
</xsl:template> 
<xsl:template match="role"> 
    <xsl:text>    </xsl:text> 
    <xsl:value-of select="name"/> 
    <xsl:text> 
    </xsl:text> 
</xsl:template> 
</xsl:stylesheet> 

...你得到以下輸出:

List of Users: 
    12345  John Smith 
       Roles: 
        Reports on Self 
        Reports on Others 
    54321  Jane Doe 
       Roles: 
        Reports on Any 
        Changes to Any 
相關問題