0

我正在使用 xslt 过滤器从 Calc 工作表中导入/导出数据。是否可以引用特定的单元格地址?例如,如果我们要从单元格 B2 中导出数据,我们如何在 export xslt 中引用这个单元格地址?

4

1 回答 1

0

在不太了解 Openoffice 或其 xslt 过滤器功能的情况下,我可以告诉您,您可能需要一个相当简单的 XPath 来引用特定 Cell 的数据——我怀疑它会像调用一样简单,getCell('B2')除非他们为您提供了一些自定义 xslt 函数(我假设它们已将您置于原始 XSLT 环境中)。

无论如何,我认为这个问题可能更多是关于 XSLT 和 xpath,而不是关于 openoffice。考虑到这一点,我将制作我自己的示例 xml 和示例,希望这足以让您入门。

对于看起来像这样的输入 xml:

<ooo_calc_export>
    <ooo_sheet num="1" name="sheet1">
        <ooo_row num="2">
            <fisrtCell>Oh</firstCell>
            <secondCell>Hai</secondCell>
            <thirdCell>There</thirdCell>
        </ooo_row>
        <ooo_row num="3">
            <fisrtCell>Oh</firstCell>
            <secondCell>Hello</secondCell>
            <thirdCell>Back!</thirdCell>
        </ooo_row>
    </ooo_sheet>
</ooo_calc_export>

访问单元格 B2 数据的绝对 XPath 如下所示ooo_calc_export/ooo_sheet/ooo_row[@num='2']/secondCell/text()

但以上是绝对路径,在 XSLT 中,我们经常会在处理文档时编写相对 xpath。想象一下,您在一个与ooo_calc_export节点匹配的模板中,并且您想将 Cell B2 的数据存储在一个变量中以供以后使用。考虑这个例子:

<xsl:template match="/ooo_calc_export">

    <!-- a relative xpath does not being with a forward slash -->
    <xsl:variable name="B2" select="ooo_sheet/ooo_row[@num='2']/secondCell/text()" />
</xsl:template>

现在让我们假设您想要一个模板来匹配单元格 B2 节点本身:

<xsl:template match="ooo_row[@num='2']/secondCell">

    <!-- a relative xpath does not being with a forward slash -->
    <xsl:variable name="B2_text" select="text()" />

</xsl:template>

这是一个很好的 XSLT 教程,可以帮助您入门。此外,关于XPathXSLT的 W3 Schools 参考资料也不是最差的。

于 2013-09-29T19:28:03.747 回答