我有一个Word XML文档,它是一个报告模板。文档中的数据标识符位于放置实际数据的位置(在报告生成时)。
问题是:我应该使用什么xpath表达式将用给定数据标识符指定的表行(即包含内部给定文本的单元格)放入<xsl:for-each>
元素中?
文档中的表格单元格文本的元素<w:t>
嵌套在<w:r>
中,然后嵌入<w:p>
,<w:tc>
,<w:tr>
,最后导入{{ 1}}。所以结构看起来像这样:
<w:tbl>
目前我使用<w:tbl>
<w:tr>
<w:tc>
<w:p>
<w:r>
<w:t>dataIdentifier</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
和xsl:template
以及Xalan来查找和处理此类表行,但不幸的是,它只找到那些match=w:tr[contains(.//w:t,'dataIdentifier')]
元素的<w:tr>
元素位置,即它对这种结构不起作用:
<w:t>
什么是正确的XPath表达式,它将检查所有位置的<w:tbl>
<w:tr>
...
<w:t>some text</w:t>
...
...
<w:t>dataIdentifier</w:t>
...
</w:tr>
</w:tbl>
兄弟姐妹?
P.S。由于系统设计,我仅限于XSLT 1.0 =(
答案 0 :(得分:1)
此时我使用xsl:template 匹配= W:TR [含有(.//瓦特:吨, 'dataIdentifier')]
尝试改为:
<xsl:template match="w:tr[.//w:t[contains(., 'dataIdentifier')]]">
-
注意:如果知道w:t
的完整路径,最好明确说明:
<xsl:template match="w:tr[w:tc/w:p/w:r/w:t[contains(., 'dataIdentifier')]]">