2011-03-18 58 views
2

作爲工作任務的一部分,我正在考慮將Crystal報表中的簡單列表導出爲單獨的xml文件,每行一個。在Crystal Reports 2008中使用XSLT 2.0標籤

這份名單是員工基本信息,即名字,姓氏等

使用Crystal Reports 2008和XSLT地讀了起來,我已經成功地編寫放置每個員工在自己的元素與孩子轉變元素詳述其信息。

但是,我試圖使用xsl:result-document命令,但Crystal Reports似乎並不喜歡它。我的XSLT文件在SAXON中工作正常,並將xml分割成單獨的文件,但Crystal完全忽略標籤內的所有內容,只顯示標題信息。

有沒有其他人有類似的問題?

我知道result-document標籤在XSLT 2.0中可用,所以我猜測Crystal Reports 2008中的處理器只適用於XSLT 1.0?如果有的話,我可以強制它使用XSLT 2.0?

感謝您的時間, 本

下面是我的XSLT文件:

<?xml version='1.0' ?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:b="urn:crystal-reports:schemas:report-detail"> 

    <xsl:template match="/b:CrystalReport"> 
    <Report> 
     <xsl:for-each select="b:Details"> 
     <xsl:variable name="empnumber" select="b:Section/b:Field[@Name='EmployeeNumber1']/b:Value"/> 
     <xsl:result-document href="{$empnumber}.xml"> 
      <Employee> 
      <xsl:attribute name="ID"> 
       <xsl:value-of select="b:Section/b:Field[@Name='EmployeeNumber1']/b:Value"/> 
      </xsl:attribute> 
      <FirstName> 
       <xsl:value-of select="b:Section/b:Field[@Name='FirstName1']/b:Value"/> 
      </FirstName> 

      <Surname> 
       <xsl:value-of select="b:Section/b:Field[@Name='Surname1']/b:Value"/> 
      </Surname> 

      <Test> 
       <xsl:value-of select="$empnumber" /> 
      </Test> 

      </Employee> 
     </xsl:result-document> 
     </xsl:for-each> 
    </Report> 
    </xsl:template> 
</xsl:stylesheet> 

回答

1

,所以我將是正確的猜測 處理器在Crystal Reports 2008只 作品用XSLT 1.0 ?如果是這樣的話,我可以強制它與XSLT 2.0一起使用嗎?

簡而言之:沒有。但是,有些產品允許連接到第三方處理器。雖然我不知道Crystal Reports的這個選項。而且,結果文檔是一個非常複雜的指令,不容易通過擴展功能來實現。

想想更多:你不是簡單地使用.NET來做轉換嗎?開箱即用,.NET僅支持XSLT 1.0(儘管過去有承諾)。因爲可以從做的是從Crystal Reports中導出XML,並使用XSLT 2.0處理器對其進行轉換。撒克遜已使用IKVM移植到.NET。

+0

嗨亞伯,你的快速反應歡呼,但不是我所希望的!我設法從Crystal Reports中導出XML,然後使用在其sourceforge頁面(http://saxon.sourceforge.net/#F9.3HE)上找到的.NET版本的Saxon對其進行轉換。這給了我所需的結果,但希望能夠從Crystal完成這一切,以便它可以通過Crystal Reports和我們的Business Objects Enterprise服務器實現自動化。儘管感謝您的幫助! – 2011-03-18 15:13:19

+0

@Ben:儘管早在2007年,微軟仍然沒有采用XSLT 2.0,但他們表示會這樣做。在他們這樣做之前,解決方法是必要的......:S – Abel 2011-03-23 13:02:21