这是我的xml文档。
<w:document xmlns:w="w">
<w:body>
<w:p>
<w:pPr><w:pStyle w:val="Heading1"/></w:pPr>
<w:r><w:t>Tables</w:t></w:r> <!-- Assume Current Node here -->
</w:p>
<w:tbl>
<w:tr>
<w:tc>
<w:p>
<w:r><w:t>row1col</w:t></w:r>
</w:p>
</w:tc>
<w:tc>
<w:p>
<w:r><w:t>row1co2</w:t></w:r>
</w:p>
</w:tc>
</w:tr>
<w:tr>
<w:tc>
<w:p>
<w:r><w:t>row2col1</w:t></w:r>
</w:p>
</w:tc>
<w:tc>
<w:p>
<w:r><w:t>row2col2</w:t></w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
<w:p>
<w:pPr><w:pStyle w:val="Normal"/></w:pPr>
<w:r><w:t>2nd table</w:t></w:r>
</w:p>
<w:tbl>
<w:tr>
<w:tc>
<w:p>
<w:r><w:t>row11col11</w:t></w:r>
</w:p>
</w:tc>
<w:tc>
<w:p>
<w:r><w:t>row11co12</w:t></w:r>
</w:p>
</w:tc>
</w:tr>
<w:tr>
<w:tc>
<w:p>
<w:r><w:t>row12col11</w:t></w:r>
</w:p>
</w:tc>
<w:tc>
<w:p>
<w:r><w:t>row12col12</w:t></w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
</w:body>
</w:document>
所以,我想将这个xml文件转换为给定的格式。
<Document>
<Heading1>
<title>Tables</title>
<table>
<paragraph>row1col1</paragraph>
<paragraph>row1col2</paragraph>
<paragraph>row2col1</paragraph>
<paragraph>row2col2</paragraph>
</table>
<paragraph>2nd Table</paragraph>
<table>
<paragraph>row11col11</paragraph>
<paragraph>row11col12</paragraph>
<paragraph>row12col11</paragraph>
<paragraph>row12col12</paragraph>
</table>
</Heading1>
</Document>
我已经做了几乎所有的事情,除了下面提到的case.Assume现在当前节点是第一个<w:p>
(在xml文档中提到)。所以,为了获取表项,我编码像
<xsl:choose>
<xsl:when test="following-sibling::w:tbl//w:p[w:r[w:t]]" >
<table>
<!--some code here -->
</table>
</xsl:when>
</xsl:choose>
但是,在这样做时,输出就像......
<table>
<paragraph>row1col1</paragraph>
<paragraph>row1col2</paragraph>
<paragraph>row2col1</paragraph>
<paragraph>row2col2</paragraph>
<paragraph>row11col11</paragraph>
<paragraph>row11col12</paragraph>
<paragraph>row12col11</paragraph>
<paragraph>row12col12</paragraph>
</table>
我想将每个表分组到单独的表节点中。我是如何做到的?请指导我摆脱这个问题...
答案 0 :(得分:2)
根据您的XSLT中的评论,它表明您位于 w:r 元素上,但您的XSLT代码段表明您确实位于 w:p 上元件。
假设您当前的节点 w:p ,如果您想获得其后的第一个 w:tbl 元素,您可以执行以下操作
<xsl:when test="following-sibling::w:tbl[1]//w:p[w:r[w:t]]" >
然而,听起来你只想找到第一个 w:tbl 元素,如果它紧跟在 w:p 之后(即<<>后面的第一个元素< strong> w:p 是 w:tbl 元素。在这种情况下,您可能希望执行以下操作
<xsl:when test="following-sibling::*[1][self::w:tbl]//w:p[w:r[w:t]]" >