对 XML 输出应用转换

更新日期: 2006 年 12 月 12 日

您可以使用 XML 呈现扩展插件生成 XML 文件,这些文件是在运行时报表导出操作过程中创建的。生成的 XML 文件随后可以通过 XSL 转换 (XSLT) 转换为几乎任意格式的文件。您可以使用 XML 呈现扩展插件和 XSLT 生成现有呈现扩展插件不支持的格式。

通常有三种情况需要使用 XSLT:

  • 数据传输   您可以将 Reporting Services 的 XML 输出转换为其他应用程序可以读取的另一种 XML 格式。
  • 文本呈现   您可以将 XML 报表转换为纯文本文件。根据报表数据,您可能会发现特殊字符(如“and”字符)将以 HTML 编码格式呈现(例如,&amp;)。若要避免对特殊字符进行 HTML 编码,请向 XSLT 文件添加以下方法属性:<xsl:output method="text" encoding="utf-8" media-type="text/plain"/>
  • HTML 呈现   您可以基于 XML 报表创建 HTML 或其他格式文档。

XML 呈现扩展插件生成的 XML 格式专用于报表。因此,您编写的 XSL 转换只能专用于报表。

ms159716.note(zh-cn,SQL.90).gif注意:
出于安全原因,Reporting Services 不支持使用嵌入式 Microsoft Visual Basic 代码编写的 XSL 转换。

示例

如果将下面的 XSL 代码保存为文件并上载到报表服务器,则可以用来将 Product Catalog 示例报表转换为纯文本格式的产品型号列表:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="text" encoding="utf-8" media-type="text/plain"/>
<xsl:strip-space elements="*"/> 

<xsl:template match="/">
  <xsl:text>Product Models</xsl:text>
  <xsl:text>&#xD;&#xA;</xsl:text>
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="Report">
  <xsl:for-each select="ProductTable/ProductTable_Group1_Collection/ProductTable_Group1">
    <xsl:text>&#xD;&#xA;</xsl:text>
    <xsl:value-of select="@Category"/>
    <xsl:for-each select="ProductTable_Group2_Collection/ProductTable_Group2">
      <xsl:text>&#xD;&#xA;    </xsl:text>
      <xsl:value-of select="@SubCategory"/>
      <xsl:for-each select="ProductTable_Group3_Collection/ProductTable_Group3">
        <xsl:text>&#xD;&#xA;        </xsl:text>
        <xsl:value-of select="@Model"/>
      </xsl:for-each>
    </xsl:for-each>
  </xsl:for-each>
  <xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>

若要转换该示例报表,可以使用用于运行报表的 URL 中的设备信息设置。例如,下面的 URL 可用来运行报表、应用转换并输出扩展名为 .txt 的文件。此示例假定存储上例中的 XSL 代码时使用 ProductModels.xsl 这一名称,而且在报表服务器上与 Product Catalog 报表存储在同一文件夹中:

https://localhost/reportserver?/AdventureWorks%20Sample%20Reports/Product+Catalog&rs:Command=Render&rs:Format=XML&rc:OmitSchema=True&rc:FileExtension=txt&rc:XSLT=ProductModels.xsl

并不是只能通过 Reporting Services 来使用 XSL 转换 XML 报表。您还可以在报表服务器中检索 XML,使用自己的应用程序应用 XSLT。

ms159716.note(zh-cn,SQL.90).gif注意:
此示例中所使用的 XSL 文件专用于 Product Catalog 示例报表。如果使用其他报表或 Product Catalog 报表已经更改,则可能无法正确转换该文件。

请参阅

概念

导出报表
为 XML 数据定义报表数据集
针对 XML 输出进行设计

其他资源

Using a URL to Access Report Server Items
AdventureWorks 报表示例

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

更改的内容:
  • 更正了 xml 呈现命令中的默认示例路径。

2005 年 12 月 5 日

新增内容:
  • 文本呈现警告。