【发布时间】:2012-12-17 15:47:21
【问题描述】:
我正在使用 xslt2.0 将一种 xml 格式转换为另一种 xml 格式。这是我的示例 xml 文档。
<w:document>
<w:body>
<w:p>Para1</w:p>
<w:p>Para2</w:p>
<w:p>Para3</w:p>
<w:p>Para4</w:p>
</w:body>
</w:document>
最初这是我的 xml 格式。所以,我通过下面给出的 xslt 中的函数处理了每个 <w:p> 元素...
<xsl:template match="document">
<Document>
<xsl:sequence select="mf:group(body/p, 1,count(//w:body//w:p)-1)"/>
</Document>
</xsl:template>
所以,在那个 xslt 函数中,我已经编写了如何重新格式化这些元素的代码。它工作正常......
但是现在,Xml 格式被重组如下...
<w:document>
<w:body>
<w:tbl><!--some text with children elements--></w:tbl>
<w:tbl><!--some text with children elements--></w:tbl>
<w:p>Para1</w:p>
<w:p>Para2</w:p>
<w:p>Para3</w:p>
<w:p>Para4</w:p>
</w:body>
</w:document>
所以,到目前为止,我必须以相同的顺序处理 和 元素.....
我想做的是,
如果我遇到元素,那么我必须调用下面给出的模板...
<xsl:template match="document">
<Document>
<xsl:for-each select="w:tbl">
<xsl:apply-templates select="w:tbl">
</xsl:apply-templates>
</xsl:for-each>
<xsl:sequence select="mf:group(body/p, 1,count(//w:body//w:p)-1)"/>
</Document>
</xsl:template>
<xsl:template match="w:tbl">
<!--xslt code here -->
</xsl:template>
但是当我尝试转换时,for-each 语句没有被执行...
所以,请指导我摆脱这个问题...
【问题讨论】:
标签: xslt xpath xslt-2.0 xpath-2.0