XSLT на docx для объединения смежных элементов - PullRequest
0 голосов
/ 29 августа 2011

У меня есть набор стенограмм интервью в формате MS Word docx, которые я хочу преобразовать в свою собственную XML-схему:

Абзац в моем слове doc выглядит так:

Джон: Это мое интервью. Теперь я кричу Теперь я снова говорю нормально.

и в моей пользовательской схеме должно выглядеть так:

<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 ]

1 голос
/ 30 августа 2011

Полный код здесь. Спасибо блогу MarkLogic!

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

1 голос
/ 30 августа 2011

Ваш пример на самом деле не соответствует вашему вопросу, но он отвечает на вопрос "как объединить смежные элементы 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" />

Вы также можете сделать это с помощью операций группировки x / xslt2, которые вы, возможно, захотите рассмотреть, если ваш случай более сложный, чем в этом простом примере.

...