我有一个全局变量name="cats" as="element()*
。我用来创建变量的数据和我想要转换的数据都在文档树的不同部分
假设变量包含元素CellA,CellF和CellC(包含在<Item>
标记中)。
我的目标是使用表中的数据填充以下预定义结构,该表包含与<field>
每个<line>
一样多的单元格作为变量(并且顺序相同)。
<row>
<CellA> </CellA>
<CellB> </CellB>
<CellC> </CellC>
<CellD> </CellD>
<CellE> </CellE>
<CellF> </CellF>
</row>
我的想法是检查每个<Cell_>
,如果变量中存在名称,并使用其位置来访问原始数据。
不幸的是,我在循环浏览position()
时无法使用$cats
,因为我无法在此处访问<field>
。
另一种在其他地方提出的方法是计算$cats = Cell_
之前兄弟姐妹的数量。但是,该建议并非基于变量。而且(由于是一个新手)我无法弄清楚如何做到这一点
有可能这样做吗?还有其他办法吗?
如果不清楚,请告诉我。
其他信息
sourceXML
<body>
<line>
<field>data</field>
<field/>
<field/>
</line>
<line/>
...
</body>
targetXML (见上文)
XSLT
<xsl:variable name="cats" as="element()*">
<Item>CellA</Item>
<Item>CellF</Item>
<Item>CellC</Item>
</xsl:variable>
<xsl:for-each select="body/line">
<row>
<CellA>
*What to do here to fill it with data from source xml*
<xsl:variable name="pos" select="???"/>
<xsl:value-of select="field[$pos]"/>
</CellA>
<CellB>
</CellB>
...
</row>
答案 0 :(得分:0)
我的想法是检查每个
<Cell_>
是否存在名称 变量并使用其位置来访问原始数据。
显然你想使用index-of()
功能。