匯出至 XML

XML 轉譯延伸模組會傳回 XML 格式的報表。報表 XML 的結構描述為報表特有的,且僅包含資料。XML 轉譯延伸模組不會轉譯配置資訊,也不會維持分頁。此延伸模組所產生的 XML 可以匯入資料庫 (當做 XML 資料訊息),或傳送到自訂應用程式。

下表描述報表項目轉譯的方式。

項目

轉譯行為

報表

轉譯成 XML 文件的最上層元素。

資料區域

轉譯成元素中的元素做為其容器。

群組和詳細資料區段

每一個執行個體會轉譯成元素中的元素做為其容器。

文字方塊

轉譯成其容器中的屬性或元素。

矩形

轉譯成其容器中的元素。

矩陣資料行群組

轉譯成資料列群組中的元素。

使用 XML 轉譯延伸模組轉譯的報表也遵從下列規則:

  • XML 元素和屬性會依其顯示在報表定義中的順序轉譯。

  • 會忽略分頁。

  • 不會轉譯頁首和頁尾。

  • 不會轉譯無法透過切換使其顯示的隱藏項目。會轉譯一開始可見的項目和可透過切換使其可見的隱藏項目。

  • Images, lines, and custom report items 都會忽略。

資料類型

文字方塊元素或屬性會根據文字方塊所顯示的值,指派 XSD 資料類型。

如果所有文字方塊值為

指派的資料類型為

Int16, Int32, Int64, UInt16, UInt32, UInt64, Byte, SByte

xsd:integer

Decimal (或 Decimal 及任何整數或位元組資料類型)

xsd:decimal

Float (或 Decimal 及任何整數或位元組資料類型)

xsd:float

Double (或 Decimal 及任何整數或位元組資料類型)

xsd:double

DateTime or DateTime Offset

xsd:dateTime

Time

xsd:string

Boolean

xsd:boolean

String, Char

xsd:string

其他

xsd:string

XML 特定的轉譯規則

下列幾節描述 XML 轉譯延伸模組如何在報表中解譯項目。

報表主體

報表會轉譯為 XML 文件的根元素。元素的名稱來自於 [屬性] 窗格中設定的 DataElementName 屬性。

XML 命名空間定義與結構描述參考屬性也包含在報表元素中變數會以粗體類型顯示:

<Report xmlns=”SchemaName” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”SchemaNameReportURL&amp;rc%3aSchema=true” Name=”ReportName”>

變數的值如下:

名稱

Report

Report.DataElementName

ReportURL

伺服器上,報表的 URLEncoded 絕對 URL。

SchemaName

Report.SchemaName.如果為 null,則是 Report.Name。如果使用 Report.Name,會先以 XmlConvert.EncodeLocalName 編碼。

ReportName

報表的名稱。

文字方塊

文字方塊會依據 DataElementStyle RDL 屬性 (Property) 而轉譯成元素或屬性 (Attribute)。元素或屬性的名稱來自於 TextBoxDataElementName RDL 屬性。

圖表

圖表會轉譯為 XML。圖表資料是有結構的。

子報表

子報表會轉譯成元素。元素的名稱來自於 DataElementName RDL 屬性。報表的 TextBoxesAsElements 屬性設定會覆寫子報表的這個設定。命名空間與 XSLT 屬性不會加入到子報表元素中。

矩形

矩形會轉譯成元素。元素的名稱來自於 DataElementName RDL 屬性。

自訂報表項目

轉譯延伸模組看不到 CustomReportItems (CRI)。如果報表中有自訂報表項目,轉譯延伸模組會將其轉譯為傳統的報表項目。

影像

不會轉譯影像。

線條

不會轉譯線條。

資料表、矩陣和清單

資料表、矩陣和清單會轉譯成元素。元素的名稱來自於 Tablix DataElementName RDL 屬性。

資料列與資料行

資料行會在資料列中轉譯。

Tablix 邊角

不會轉譯邊角。只會轉譯邊角的內容。

Tablix 資料格

Tablix 資料格會轉譯成元素。元素的名稱來自於資料格的 DataElementName RDL 屬性。

自動小計

不會轉譯 Tablix 自動小計。

群組內沒有重複的資料列與資料行項目

群組內沒有重複的項目 (例如,標籤、小計和總計) 會轉譯為元素。元素的名稱來自於 TablixMemberDataElementName RDL 屬性。

TablixMemberDataElementOutput RDL 屬性控制是否要轉譯非重複的項目。

如果沒有提供 Tablix 的 DataElementName 屬性,系統會以下列格式動態產生非重複項目的名稱:

RowX – 對於非重複的資料列,其中的 X 在目前的父系中是以零為基礎的資料列索引。

ColumnY – 對於非重複的資料行,其中的 Y 在目前的父系中是以零為基礎的資料行索引。

非重複的標頭會轉譯為群組內沒有重複之資料列或資料行的子系。

如果非重複的成員沒有對應的 Tablix 資料格,就不會被轉譯。如果是跨越一個以上資料行的 Tablix 資料格,可能會發生這個狀況。

群組內重複的資料列與資料行

群組內重複的資料列與資料行會根據 Tablix 來轉譯。DataElementOutput 規則。元素的名稱來自於 DataElementName 屬性。

群組內每個唯一的值都會轉譯為群組的子元素。元素的名稱來自於 GroupDataElementName 屬性。

如果 DataElementOutput 屬性值等於 [輸出],重複項目的標頭就會轉譯為詳細資料元素的子系。

自訂格式和 XSL 轉換

使用 XSL 轉換 (XSLT),幾乎可以將 XML 轉譯延伸模組所產生的 XML 檔案轉換成任何格式。此功能可用來產生現有的轉譯延伸模組已不支援的資料格式。在嘗試建立您自己的轉譯延伸模組之前,請考慮使用 XML 轉譯延伸模組和 XSLT。

重複的名稱

如果在相同的範圍內有重複的資料元素名稱,轉譯器會顯示一個錯誤訊息。

XSLT 轉換

XML 轉譯器可以將伺服器端的 XSLT 轉換套用到 XML 原始資料。套用 XSLT 時,轉譯器會輸出轉換的內容,而非輸出 XML 原始資料。轉換會在伺服器上,而非用戶端上進行。

系統會在報表定義檔案中,以報表的 DataTransform 屬性或以 XSLT DeviceInfo 參數,定義要套用到輸出的 XSLT。如果設定其中一個值,就會在每次使用 XML 轉換器時進行轉換。使用訂閱時,必須在 RDL DataTransform 屬性中定義 XSLT。

如果有同時透過 DataTransform 定義屬性和裝置資訊設定指定 XSLT 檔案,會先出現在 DataTransform 中指定的 XSLT,接著出現由裝置資訊設定所設定的 XSLT。

裝置資訊設定

您可以變更此轉譯器的某些預設值,方法是,變更裝置資訊設定,包括:

  • 套用至 XML 的轉換 (XSLT)。

  • XML 文件的 MIME 類型。

  • 是否套用格式字串至資料。

  • 是否縮排 XML 輸出。

  • 是否包含 XML 結構描述名稱。

  • XML 文件的編碼。

  • XML 文件的副檔名。

如需詳細資訊,請參閱<Reporting Services 裝置資訊設定>(英文)。