我需要做的是创建一个基于工作表的引用,如果工作表是否已创建(我已经完成)。 我试图做的是以下,
<Worksheet ss:Name="RELATÓRIO">
<Table>
<ss:Column ss:Width="300"/>
<xsl:for-each select="RELATORIO/MODULO">
<xsl:choose>
<xsl:when test="NAME='ObtemIdentificacao_P'">
<xsl:variable name="cnt">
<xsl:value-of select="position() + 1"/>
</xsl:variable>
<Row ss:Index="$cnt">
<Cell ss:Index="1" ss:StyleID="sLink" ss:HRef="concat('#Identificacao!A',$cnt)">
<Data ss:Type="String">IDENTIFICAÇÃO</Data>
</Cell>
</Row>
</xsl:when>
<xsl:when test="NAME='ObtemSumarioSNC_P'">
<xsl:variable name="cnt">
<xsl:value-of select="position() + 1"/>
</xsl:variable>
<Row ss:Index="$cnt">
<Cell ss:Index="1" ss:StyleID="sLink" ss:HRef="concat('#Sumario!A',$cnt)">
<Data ss:Type="String">SUMÁRIO</Data>
</Cell>
</Row>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</Table>
</Worksheet>
我正在使用完全相同的xsl:when
来检查“MODULO是否存在我只是使用/来回到XML文件的开始并再次运行它,但这一次实际上做了一些事情XML。
不幸的是,这种方式不起作用。这可能与concat
或variable
检查NAME
的循环工作,我已经可以创建所有工作表并显示我想要的信息,我只需要能够创建对创建的工作表的引用。我只需要它们是简单的可点击文本,以不同的行显示。
希望你能给我一些启示和感谢!
答案 0 :(得分:0)
而不是ss:HRef="concat('#Identificacao!A',$cnt)"
我认为您需要ss:HRef="#Identificacao!A{$cnt}"
,而不是ss:Index="$cnt"
只需ss:Index="{$cnt}"
。
你也可以缩短
<xsl:variable name="cnt">
<xsl:value-of select="position() + 1"/>
</xsl:variable>
到
<xsl:variable name="cnt" select="position() + 1"/>