XSLT

2011-12-30 11 views
1

で、このXMLを変換するために、どのようにXMLファイルには、このXMLは、その中に埋め込まれたいくつかのリンクを持つテキストの段落を表しXSLT

<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> 

がどのように私はXSLTで、このような変換を行うことができます。

私は次のようになりますHTMLに変換する必要がありますか?

答えて

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>