【发布时间】:2015-02-16 05:21:25
【问题描述】:
我有一个 Word XML 文档,它是一个报告模板。在文档中放置真实数据的地方(在报告生成时)有数据标识符。
问题是:我应该使用什么 xpath 表达式将用给定数据标识符指定的表格行(即包含一个内部带有给定文本的单元格)放入 <xsl:for-each> 元素?
文档中的表格单元格文本使用元素 <w:t> 嵌套到 <w:r> 中进行描述,然后嵌套到 <w:p>、<w:tc>、<w:tr> 中,最后嵌套到 <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 和match=w:tr[contains(.//w:t,'dataIdentifier')] 和Xalan 来查找和处理这样的表行,但不幸的是它只找到那些<w:tr> 元素在第一个位置有<w:t>,即它不起作用对于这样的结构:
<w:tbl>
<w:tr>
...
<w:t>some text</w:t>
...
...
<w:t>dataIdentifier</w:t>
...
</w:tr>
</w:tbl>
什么是正确的 XPath 表达式,它将检查所有位置的 <w:tr> 兄弟姐妹?
附:由于系统设计,我仅限于 XSLT 1.0 =(
【问题讨论】: