作为工作任务的一部分,我正在将水晶报告中的一个简单的细节列表导出到单独的xml文件中,每一行一个。
该名单是基本的雇员信息,即姓名、姓氏等。
使用Crystal Reports 2008并快速阅读XSLT,我成功地编写了一个转换,将每个员工放入其自己的元素中,并包含详细说明其信息的子元素。
然而,我正在尝试使用xsl:命令,但是Crystal Reports似乎并不喜欢它。我的XSLT文件在SAXON中运行良好,并将xml拆分成单独的文件,但是Crystal完全忽略标记中的所有内容,只显示标题信息。
其他人也有类似的问题吗?
我知道结果文档标记是在XSLT2.0中提供的,所以我猜只适用XSLT1.0的水晶Reports 2008中的处理器是对的吗?如果是这样的话,我可以强制它使用XSLT2.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>发布于 2011-03-18 14:03:47
,所以我猜到2008年水晶报告中的处理器只适用于XSLT1.0吗?如果是这样的话,我可以强制它使用XSLT2.0吗?
简短的回答是:不。然而,有些产品允许连接到第三方处理器。不过,我不知道水晶报告的这个选项。此外,结果文档是一个足够复杂的指令,很难通过扩展函数来允许.
更多地考虑这一点:难道不是简单地使用.NET来进行转换吗?开箱即用,.NET只支持XSLT1.0(尽管过去有其他承诺)。因为您可以做的是从Crystal Reports导出XML并使用XSLT2.0处理器进行转换。Saxon已经使用IKVM移植到.NET。
https://stackoverflow.com/questions/5353054
复制相似问题