有关Calc的信息,请参阅xslt导入/导出过滤器中的特定单元格

时间:2013-09-29 11:26:19

标签: xslt filter openoffice-calc

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

1 个答案:

答案 0 :(得分:0)

我不知道Openoffice或他们的xslt过滤器函数,我可以告诉你,你可能需要一个相当简单的XPath来引用一个特定的Cell数据 - 我怀疑它会像调用{{1}一样简单除非他们为你提供了一些自定义的xslt函数(我假设他们已经把你放在一个原始的XSLT环境中)。

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

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

getCell('B2')

访问单元格B2数据的绝对XPath看起来像<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>

但是上面是绝对路径,在XSLT中,我们经常编写相对xpath,因为我们处理文档。想象一下,您所在的模板在ooo_calc_export/ooo_sheet/ooo_row[@num='2']/secondCell/text()节点上匹配,并且您希望将Cell B2的数据存储在变量中供以后使用。考虑这个例子:

ooo_calc_export

现在假设你想要一个模板在单元格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>

这是good tutorial on XSLT,可以帮助您入门。此外,XPathXSLT上的W3学校参考文献并不是最差的。