用于合并相邻元素的docx上的XSLT

时间:2011-08-29 14:45:33

标签: xml xslt docx

我有一套MS Word docx格式的面试成绩单,我想将其转换为我自己的自定义xml架构:

我的文字doc中的一段似乎是这样的:

Jon:这是我的采访。 现在我在喊现在我再次正常说话。

在我的自定义架构中应该如下所示:

<para speaker="jon">
    <content>This is my interview.</content>
    <content emphasis="true">Now I am shouting!</content>
    <content>Now I am speaking normally again.</content>
</para>

在docx xml中,我希望在所有其他情况下将相邻的w:r元素合并为单个元素。

非常感谢任何帮助。

由于

斯瓦米萨

2 个答案:

答案 0 :(得分:1)

您的示例与您的问题不符,但要回答“如何合并相邻元素w / xslt”这一问题,请使用示例w:r,并假设已在范围内声明了“w”名称空间前缀:

<xsl:template match="w:r[1]">
  <w:r>
    <xsl:copy-of select="@*|node()" />
    <xsl:copy-of select="following-sibling::w:r/node()" />
    <!-- assuming you don't care about attributes on adjacent w:r elements -->
  </w:r>
</xsl:template>

<xsl:template match="w:r" />

您也可以执行此w / xslt2分组操作,如果您的案例比此简单示例更复杂,您可能需要查看这些操作。

答案 1 :(得分:1)

此处为完整代码。感谢MarkLogic Blog!

http://www.xqzone.com/blog/smallchanges/2007-12-18