將編頁報告匯出為 XML (報表產生器)
適用於: Microsoft 報表產生器 (SSRS) Power BI Report Builder SQL Server Data Tools 中的報表設計師
XML 轉譯延伸模組會傳回 XML 格式的分頁報表。 報表 XML 的結構描述為報表特有的,且僅包含資料。 XML 轉譯延伸模組不會轉譯配置資訊,也不會維持分頁。 此延伸模組所產生的 XML 可以匯入資料庫中 (當做 XML 資料訊息使用),或傳送到自訂應用程式。
注意
您可以在 Microsoft 報表產生器、Power BI Report Builder,以及 SQL Server Data Tools 的報表設計師中,建立及修改編頁報告定義 (.rdl) 檔案。
報表項目
下表描述報表項目轉譯的方式。
項目 | 轉譯行為 |
---|---|
報告 | 轉譯成 XML 文件的最上層元素。 |
資料區域 | 轉譯成元素中的元素做為其容器。 資料區包含資料表、矩陣和清單,可將資料顯示為文字和圖表、資料橫條、走勢圖、量測計,以及將資料視覺化的指標。 |
群組和詳細資料區段 | 每一個執行個體會轉譯成元素中的元素做為其容器。 |
文字方塊 | 轉譯成其容器中的屬性或元素。 |
矩形 | 轉譯成其容器中的元素。 |
矩陣資料行群組 | 轉譯成資料列群組中的元素。 |
對應 | 轉譯成元素中的元素做為其容器。 地圖圖層是地圖的子元素,每一個地圖圖層都包含其地圖成員的元素和地圖成員屬性。 |
圖表 | 轉譯成元素中的元素做為其容器。 數列是圖表的子元素,而類別目錄是數列的子元素。 轉譯每個圖表值的所有圖表標籤。 標籤和值都會當做屬性加入。 |
資料橫條 | 轉譯成元素中的元素做為其容器,類似圖表。 資料橫條通常不包含階層或標籤,只包含值。 |
走勢圖 | 轉譯成元素中的元素做為其容器,類似圖表。 走勢圖通常不包含階層或標籤,只包含值。 |
量測計 | 轉譯成元素中的元素做為其容器。 以標尺的最小值與最大值、範圍的開始值與結束值,以及指標的值當做屬性轉譯為單一元素。 |
指標 | 轉譯成元素中的元素做為其容器,類似量測計。 以作用中的狀態名稱、可用的狀態以及資料值當做屬性,轉譯成單一元素。 |
使用 XML 轉譯延伸模組轉譯的報表也遵從下列規則:
XML 元素和屬性會依其顯示在報表定義中的順序轉譯。
會忽略分頁。
不會轉譯頁首和頁尾。
不會轉譯無法透過切換使其顯示的隱藏項目。 會轉譯一開始可見的項目和可透過切換使其可見的隱藏項目。
Images, lines, and custom report items 都會忽略。
資料類型
文字方塊元素或屬性會根據文字方塊所顯示的值,指派 XSD 資料類型。
如果所有文字方塊值為 | 指派的資料類型為 |
---|---|
Int16、 Int32、 Int64、 UInt16、 UInt32、 UInt64、 Byte、 SByte | xsd:integer |
十進位 (或 十進位 和任何整數或位元組資料類型) | xsd:decimal |
浮點數 (或 十進位 和任何整數或位元組資料類型) | xsd:float |
雙精度 (或 十進位 和任何整數或位元組資料類型) | xsd:double |
DateTime 或 DateTime Offset | xsd:dateTime |
時間 | xsd:string |
布林值 | 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>&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)。 元素或屬性 (attribute) 的名稱來自於 TextBox.DataElementName
RDL 屬性 (property)。
圖表、資料橫條和走勢圖
圖表、資料橫條和走勢圖都會以 XML 轉譯。 資料是有結構的。
量測計與標記
量測計與指標都會以 XML 轉譯。 資料是有結構的。
子報表
子報表會轉譯成元素。 元素名稱擷取自 DataElementName
RDL 屬性。 報表的 TextBoxesAsElements
屬性設定會覆寫子報表的這個設定。 命名空間與 XSLT 屬性不會加入到子報表元素中。
矩形
矩形會轉譯成元素。 元素名稱擷取自 DataElementName RDL 屬性。
自訂報表項目
轉譯延伸模組看不到 CustomReportItems
(CRI)。 如果報表中有自訂報表項目,轉譯延伸模組會將其轉譯為傳統的報表項目。
影像
不會轉譯影像。
線條
不會轉譯線條。
資料表、矩陣和清單
資料表、矩陣和清單會轉譯成元素。 元素的名稱來自於 Tablix DataElementName
RDL 屬性。
資料列和資料行
資料行會在資料列中轉譯。
Tablix 邊角
不會轉譯邊角。 只會轉譯邊角的內容。
Tablix 資料格
Tablix 資料格會轉譯成元素。 元素名稱擷取自資料格的 DataElementName
RDL 屬性。
自動小計
不會轉譯 Tablix 自動小計。
群組內沒有重複的資料列與資料行項目
群組內沒有重複的項目 (例如,標籤、小計和總計) 會轉譯為元素。 元素的名稱來自於 TablixMember.DataElementName
RDL 屬性。
TablixMember.DataElementOutput
RDL 屬性控制是否要轉譯非重複的項目。
如果沒有提供 Tablix 成員的 DataElementName
屬性,系統會以下列格式動態產生非重複項目的名稱:
RowX:對於非重複的資料列,其中的 X 是目前父系中是以零為基礎的資料列索引。
ColumnY:對於非重複的資料行,其中的 Y 是目前父系中以零為基礎的資料行索引。
非重複的標頭會轉譯為群組內沒有重複之資料列或資料行的子系。
如果非重複的成員沒有對應的 Tablix 資料格,就不會被轉譯。 如果是跨越一個以上資料行的 Tablix 資料格,可能會出現這個結果。
群組內重複的資料列與資料行
群組內重複的資料列與資料行會根據 Tablix.DataElementOutput
規則來轉譯。 元素名稱擷取自 DataElementName
屬性。
群組內每個唯一的值都會轉譯為群組的子元素。 元素名稱擷取自 Group.DataElementName
屬性。
如果 DataElementOutput
屬性值等於「輸出」,重複項目的標頭就會轉譯為詳細資料元素的子系。
自訂格式和 XSL 轉換
使用 XSL 轉換 (XSLT),幾乎可以將 XML 轉譯延伸模組所產生的 XML 檔案轉換成任何格式。 此功能可用來產生現有的轉譯延伸模組已不支援的資料格式。 在嘗試建立您自己的轉譯延伸模組之前,請考慮使用 XML 轉譯延伸模組和 XSLT。
重複的名稱
如果在相同的範圍內有重複的資料元素名稱,轉譯器會顯示一個錯誤訊息。
XSLT 轉換
XML 轉譯器可以將伺服器端的 XSLT 轉換套用到原始 XML 資料。 套用 XSLT 時,轉譯器會輸出轉換的內容,而非輸出 XML 原始資料。 轉換會在伺服器上,而非用戶端上進行。
系統會在報表定義檔案中,以報表的 DataTransform
屬性定義要套用到輸出的 XSLT。 或者,也可以以 XSLT DeviceInfo 參數指定。
如果設定其中一個值,就會在每次使用 XML 轉換器時進行轉換。 使用訂閱時,必須在 RDL DataTransform
屬性中定義 XSLT。
如果有同時透過 DataTransform
定義屬性和裝置資訊設定指定 XSLT 檔案,會先出現在 DataTransform
中指定的 XSLT,接著出現由裝置資訊設定所設定的 XSLT。
裝置資訊設定
您可以變更此轉譯器的某些預設設定,方法是,變更裝置資訊設定,包括以下設定:
套用至 XML 的轉換 (XSLT)。
XML 文件的 MIME 類型。
是否套用格式字串至資料。
是否縮排 XML 輸出。
是否包含 XML 結構描述名稱。
XML 文件的編碼。
XML 文件的副檔名。
如需詳細資訊,請參閱 XML 裝置資訊設定。