我有一个很大的XSL FO文件。
在此文件中,我嵌套了多个fo:table对象,并且没有通过唯一的id属性来标识所有这些对象,以便通过其唯一的ID搜索每个对象。 每个fo:table在开始时都有一个注释,其中包含唯一的ID,但是此ID并不总是相同的,即使对于同一张表,每次也不同。无论如何,我知道如何通过分析始终相同的文件结构来搜索此注释。
现在,我有了所需的注释对象,但现在面临以下问题:我需要立即在该注释之后获取第一个对象,在这种情况下,是第一个fo:table对象。那我该怎么办呢?
<!-- begin table FOPTable { id: 1005 cur_size: 0.0 prv_size: 3.25 prev: 1004 cols: 1 locks: 3 flow:null } -->
<fo:table font-size="8pt" font-family="sans-serif" table-layout="fixed"> <fo:table-column column-width="14.35cm" />
<fo:table-body>
<fo:table-row>
<fo:table-cell padding-top="2.0pt" padding-right="2.0pt" font-family="sans-serif" font-size="8pt"> <fo:block text-align="end">LINE 1</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding-top="2.0pt" padding-right="2.0pt" font-family="sans-serif" font-size="8pt">
<fo:block text-align="end">LINE 2</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
答案 0 :(得分:0)
从注释模板中,选择fo:table
:
following-sibling::*[1]
要选择fo:table
fo:table[preceding-sibling::comment()[1][contains(., 'id: 1005')]
(请注意,这仅在fo:table
的父节点上起作用。XPath选择的内容还取决于您评估XPath的上下文(除非XPath以/
或{开头{1}},就是)。