我正在使用 xslt 过滤器从 Calc 工作表中导入/导出数据。是否可以引用特定的单元格地址?例如,如果我们要从单元格 B2 中导出数据,我们如何在 export xslt 中引用这个单元格地址?
问问题
282 次
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 教程,可以帮助您入门。此外,关于XPath和XSLT的 W3 Schools 参考资料也不是最差的。
于 2013-09-29T19:28:03.747 回答