Извлечение открытого текста из XML со встроенными ссылками с использованием XSLT - PullRequest
2 голосов
/ 03 ноября 2011

Я пытаюсь извлечь текст из XML, подобный следующему:

<p>This is a paragraph <a href='http://link.com'>with an embedded link</a> with more text afterwards</p>

Я хотел бы, чтобы извлеченный текст поддерживал URL в абзаце, например так:

This is a paragraph with an embedded link (http://link.com) with more text afterwards

Достаточно просто извлечь текст:

<xsl:value-of select="p"/> и URL: <xsl:value-of select="p/a/@href"/>, но я изо всех сил пытаюсь придумать способвстроить URL в извлеченный текст, используя XSLT.

Есть какие-нибудь идеи о том, как это можно сделать?

Если не существует простого способа сделать это, я могу в итоге либо выполнить некоторую предварительную обработку текста, чтобы встроить URL, и просто использоватьXSLT для извлечения всего текста оттуда.

1 Ответ

4 голосов
/ 03 ноября 2011
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" indent="yes"/>

  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="text()">
    <xsl:value-of select="."/>
  </xsl:template>

  <xsl:template match="a">
    <xsl:value-of select="."/>

    <xsl:value-of select="concat(' (', @href, ')')"/>
  </xsl:template>

</xsl:stylesheet>

Шаблон <xsl:template match="text()"> соответствует текстовым узлам и просто выводит их.

Шаблон <xsl:template match="a"> выводит содержимое элемента a и его значение (@href).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...