使用XSLT从嵌入式链接中提取XML文本

时间:2011-11-03 04:24:21

标签: xml xslt xpath

我正在尝试从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"/>和网址:<xsl:value-of select="p/a/@href"/>,但我正在努力想办法使用XSLT将URL嵌入到提取的文本中。

关于如何做到这一点的任何想法?

如果没有简单的方法可以做到这一点,我可能最终要对文本进行一些预处理以嵌入URL,只使用XSLT从那里提取所有文本。

1 个答案:

答案 0 :(得分:4)

<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)值。