XSL: объединение текста с результатами обработки тегов - PullRequest
0 голосов
/ 09 января 2012

У меня есть тег, который может содержать сочетание текста и тегов XML для обработки.Предполагая, что для тегов я определил xsl: templates, как мне построить xsl так, чтобы результатом преобразования были фрагменты текста и результаты замены тегов в том же порядке, в котором они были в исходном документе?

Вот исходный код xml:

<diagnosis>
    Line 1
    Line 2
    <terminology code="1234"/>
    Line 3
</diagnosis>

Вывод должен выглядеть примерно так:

Line 1 Line 2 Description1234 Line 3

Description1234 является результатом поиска кода 1234. Сейчас яЯ не беспокоюсь о том, как это будет сделано, просто как соединить все это вместе.

1 Ответ

1 голос
/ 10 января 2012

Я не уверен, как <terminology/> отображается на «Описание», поэтому я предположил следующее:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:template match="/">
    <xsl:apply-templates/>
    <!-- Final newline -->
    <xsl:text>
</xsl:text>
  </xsl:template>
  <xsl:template match="terminology">
    <!-- Spaces are added at the front and... -->
    <xsl:text> Description</xsl:text>
    <xsl:value-of select="@code"/>
    <!-- at the end of attribute -->
    <xsl:text> </xsl:text>
  </xsl:template>
  <xsl:template match="text()">
    <!-- Strip all white space, specifically the newlines -->
    <xsl:value-of select="normalize-space(.)"/>
  </xsl:template>
</xsl:stylesheet>

Вот что я получаю, когда запускаю ваш пример XML ('so.xml') через xsltproc:

~ zacharyyoung$ xsltproc so.xsl so.xml
Line 1 Line 2 Description1234 Line 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...