1
我一直在嘗試將xsl應用於Analysis Service數據庫返回的結果集。 結果集看起來如下...排序後跟蹤位置
<Axis name="Axis1">
<Tuples>
<Tuple>
<Member Hierarchy="[Org].[Class1]">
<UName>[Org].[Class1].&[10629]</UName>
<Caption>Independent</Caption>
<LName>[Org].[Class1].[Ownership]</LName>
<LNum>2</LNum>
<DisplayInfo>65898</DisplayInfo>
<PARENT_UNIQUE_NAME>[Org].[Class1].&[2]</PARENT_UNIQUE_NAME>
</Member>
</Tuple>
<Tuple>
<Member Hierarchy="[Org].[Class1]">
<UName>[Org].[Class1].&[14331]</UName>
<Caption>A #5839</Caption>
<LName>[Org].[Class1].[Owner Region]</LName>
<LNum>3</LNum>
<DisplayInfo>65537</DisplayInfo>
<PARENT_UNIQUE_NAME>[Org].[Class1].&[10629]</PARENT_UNIQUE_NAME>
</Member>
</Tuple>
....
</Tuples>
</Axis>
<CellData>
<Cell CellOrdinal="0">
<FmtValue>Ownership</FmtValue>
</Cell>
<Cell CellOrdinal="1">
<ForeColor>0</ForeColor>
<FmtValue>73%</FmtValue>
</Cell>
<Cell CellOrdinal="2">
<ForeColor>0</ForeColor>
<FmtValue>68%</FmtValue>
</Cell>
<Cell CellOrdinal="3">
<ForeColor>0</ForeColor>
<FmtValue>70%</FmtValue>
</Cell>
<Cell CellOrdinal="4">
<ForeColor>0</ForeColor>
<FmtValue>59%</FmtValue>
</Cell>
<Cell CellOrdinal="5">
<FmtValue>Owner Region</FmtValue>
</Cell>
<Cell CellOrdinal="6">
<ForeColor>0</ForeColor>
<FmtValue>75%</FmtValue>
</Cell>
.....
</CellData>
上述每個元組具有相應的一組在CellData細胞。 因此,如果文件被順序解析,可以使用Tuple的position()
來收集相關的單元格。但是,如果元組使用xsl-sort,LNum屬性進行排序,並且使用for-each進行迭代,則元組的位置現在會更改,因此無法找到Tuple的相應單元格。
我該如何跟蹤基於UName的元組序號,以便我可以到達相關單元格。
我已經創造了UNAME作爲重點
<xsl:key name="tuples-by-uName" match="/xa:root/xa:Axes/xa:Axis/xa:Tuples/xa:Tuple" use="xa:Member/xa:UName" />
<xsl:key name="tuples-by-parentUName" match="/xa:root/xa:Axes/xa:Axis/xa:Tuples/xa:Tuple" use="xa:Member/xa:PARENT_UNIQUE_NAME" />
而且要遍歷使用像下面這樣的元組。
<xsl:for-each select="key('tuples-by-parentUName', $thisQuestion/xa:Member/xa:UName)">
<xsl:sort data-type="number" select="xa:Member/xa:LNum" order="descending"/>
這裏我需要Tuple的原始位置,所以我可以計算Cell的位置。
花了很多時間,但無法弄清楚這一點。
爲什麼'元組,byparentUName'被 「詢問」 用'UName'? – 2011-06-07 21:13:36