Терминология XPATH / XSL для текста с вложенными узлами таким же образом, как использование жирным шрифтом и курсивом в HTML

0

Этот вопрос аналогичен: использование XSLT для создания XSL-FO с вложенными жирным/курсивом тегами

Тем не менее, я хочу знать, есть ли способ обрабатывать (ссылаться) текст, который находится вне вложенного элемента. Например, если я использую это:

<xsl:apply-templates select="." mode="handle-emphasis" />

Чтобы "вызвать" следующие шаблоны:

<xsl:template match="p/emphasis[@type='italic']" mode="handle-emphasis">
    <xsl:element name="i">
        <xsl:value-of select="text()" />
    </xsl:element>
</xsl:template>

<xsl:template match="p/emphasis[not(@type='italic')]" mode="handle-emphasis">
    <xsl:element name="b">
        <xsl:value-of select="text()" />            
    </xsl:element>
</xsl:template>

<xsl:template match="p/br" mode="handle-emphasis">

    <xsl:element name="br" />
</xsl:template>

Затем я могу успешно обрабатывать некоторые пользовательские теги, которые очень похожи на HTML полужирным и курсивом. Однако, если я создаю шаблон, который соответствует только "p", похоже, что шаблон не выполняется для текста, "вне" "жирного" и "курсивного" узлов.

Я, вероятно, пропустил что-то простое, но это сводит меня с ума. Любые идеи очень ценятся.

  • 1
    Публикуйте минимальные, но полные примеры кода для ввода XML, XSLT-кода, желаемого результата и ожидаемого результата, и мы надеемся, что сможем рассказать вам, как изменить код. Что касается вашего текущего кода, мне интересно, почему вы не пишете <i> вместо <xsl:element name="i"> и почему вы не продолжаете обработку внутри вашего шаблона, выполняя <xsl:apply-templates mode="handle-emphasis"/> вместо <xsl:value-of select="text()" /> .
  • 0
    Согласиться с @Martin: трудно понять, что именно вы пытаетесь сделать, без примеров.
Теги:
xpath
xslt
xpath-2.0

1 ответ

0
Лучший ответ

Похоже, вы хотели, чтобы у вас был шаблон, шаблон соответствия которого был p/text().

  • 0
    Именно так! Я не думал попробовать p / text ().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню