xslt查找变量

时间:2016-07-01 14:42:02

标签: variables xslt position

我有一个全局变量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>

1 个答案:

答案 0 :(得分:0)

  

我的想法是检查每个<Cell_>是否存在名称   变量并使用其位置来访问原始数据。

显然你想使用index-of()功能。