2017-03-01 11 views
1

データを含むXMLノードがあります。これは、順序付けられていないリストに変わりたいです。ように:XMLデータをHTMLタグでラップするXSLT

<list><![CDATA[*Lorem ipsumdolor sit *consectetur adipiscing elit, * sed do eiusmod * tempor incididunt ut]]></list> 

アスタリスクのリスト要素を分離したいと思います。

だから出力は次のようになります。

<ul> 
    <li>Lorem ipsumdolor sit</li> 
    <li>consectetur adipiscing elit,</li> 
    <li>sed do eiusmod</li> 
    <li>tempor incididunt ut</li> 
</ul> 

私は最初の再帰的な文字列がデータに適用されたテンプレートを置き換える使用してみましたが、私は</li>タグで最後のまとめのトラブルを抱えていました。

答えて

1

この

<xsl:template match="list"> 
    <ul> 
     <xsl:call-template name="li"> 
      <xsl:with-param name="listdata" select="string(.)"/> 
     </xsl:call-template> 
    </ul> 
</xsl:template> 

<xsl:template name="li"> 
    <xsl:param name="listdata"/> 
    <xsl:variable name="lidata"> 
     <xsl:choose> 
      <xsl:when test="contains($listdata, '*')"> 
       <xsl:value-of select="normalize-space(substring-before($listdata, '*'))"/> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:value-of select="normalize-space($listdata)"/> 
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:variable> 
    <xsl:variable name="lidataremaindata" select="normalize-space(substring-after($listdata, '*'))"/> 
    <xsl:if test="normalize-space($lidata) != ''"> 
    <li> 
     <xsl:value-of select="$lidata"/> 
    </li> 
    </xsl:if> 
    <xsl:if test="normalize-space($lidataremaindata) != ''"> 
     <xsl:call-template name="li"> 
      <xsl:with-param name="listdata" select="$lidataremaindata"/> 
     </xsl:call-template> 
    </xsl:if> 
</xsl:template> 
+0

感謝をしてみてください、これは本当に素晴らしいソリューションです。 –

関連する問題