【发布时间】:2012-03-15 22:27:01
【问题描述】:
我有以下 XML 文件(它实际上是 SQL 服务器报告服务 RDL 文件)。我想按位置将TablixCell 中的<Value> 替换为Fields 中的<DataField>。即“order date1”和“prod id1”应分别替换为“order_date”和“prod_id”。
最好可以使用 XQuery 在 SQL Server 2008 中完成。如果没有,Xslt 很好。
<Fields>
<Field Name="order_date">
<DataField>order_date</DataField>
<rd:TypeName>System.DateTime</rd:TypeName>
</Field>
<Field Name="prod_id">
<DataField>prod_id</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
....
</Fields>
......
<TablixRows>
<TablixRow>
<Height>0.25in</Height>
<TablixCells>
<TablixCell>
......
<Value>order date1</Value>
......
</TablixCell>
<TablixCell>
.....
<Value>prod id1</Value>
.....
【问题讨论】:
-
你能解释更多关于你想要完成的事情吗?我最初的想法是您可以在 rdl 文件中查找和替换...但是您尝试使用 XQuery 的事实让我想知道是否有比在这个文件中替换字符串更大的目标。
-
是的,如果一个 XML 文件中只有几个字段,则查找和替换可以正常工作。但是,这 50 份报告中的每份报告都有数百列。
-
在提供的 XML 文件摘录中没有“prod_date”。摘录不是格式正确的 XML 文件,甚至不是格式正确的 XML 片段。请编辑并更正。
-
SQL Server 2008 是否支持 XQUF(XQuery 更新工具)扩展?如果是这样,使用 XQuery 的答案应该很简单。
-
根据您要完成的任务,Reporting Services 矩阵格式可以透视数据以创建任意列。
标签: sql-server xml xslt reporting-services xquery