我有一个格式为
的XML文件<paragraph> Some Free text goes here<LinkType1 href="link1" >LinkName1</LinkType1> Then some more text <LinkType2 href="link2" >LinkName2</LinkType2>Then some more text <LinkType1 href =link3" >LinkName3</LinkType1> and then some more text
</paragraph>
此XML表示一段文本,其中嵌入了一些链接。换句话说,它是本文中的文本和节点。
我需要将其转换为HTML,如下所示:
<p>
Some Free text goes here<a href="link1" target="_blank" >LinkName1</a> Then some more text <a href="link2" target="_blank" >LinkName2</a>Then some more text <a href =link3" target="_blank" >LinkName3</a> and then some more text
</p>
如何使用XSLT进行此类转换?
答案 0 :(得分:2)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="paragraph">
<p><xsl:apply-templates/></p>
</xsl:template>
<xsl:template match="*[starts-with(name(), 'LinkType')]">
<a href="{@href}" target="_blank" >
<xsl:value-of select="."/>
</a>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档(已更正为格式正确!):
<paragraph> Some Free text goes here
<LinkType1 href="link1" >LinkName1</LinkType1> Then some more text
<LinkType2 href="link2" >LinkName2</LinkType2>Then some more text
<LinkType1 href ="link3" >LinkName3</LinkType1> and then some more text
</paragraph>
生成想要的正确结果:
<p> Some Free text goes here
<a href="link1" target="_blank">LinkName1</a> Then some more text
<a href="link2" target="_blank">LinkName2</a>Then some more text
<a href="link3" target="_blank">LinkName3</a> and then some more text
</p>