我正在尝试从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从那里提取所有文本。
答案 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)
值。