2016-11-08 12 views
0

私はこのようなXMLを持って、XSLT - 特定の文字

<doc> 
    <para>A brief 23 spell* of hea#vy rain* forc^%ed an early+ lunch* [email protected] nine</para> 
</doc> 

私は、テキスト内の各*現在からテキスト文字列を分割する必要がありますを使用して、分割文字列..

SO期待される出力があるべき、私は、XSLTのFO、次の書かれている私はそのためのロジック、

以下の書いた

<doc> 
    <para>A brief 23 spell</para> 
    <para>of hea#vy rain</para> 
    <para>forc^%ed an early+ lunch</para> 
    <para>[email protected] nine</para> 
</doc> 

rその、

<xsl:template match="para"> 
     <xsl:analyze-string select="text()" regex="[A-Za-z0-9_.]\*"> 
      <xsl:matching-substring> 
       <para> 
        <xsl:value-of select="."/> 
       </para> 
      </xsl:matching-substring> 
     </xsl:analyze-string> 
    </xsl:template> 

私はどのように私はxsltを使ってこれを行うことができますか?私は機能tokenize()となるだろう

答えて

1

個人の好み

概要:この機能は、セパレータとして$パターンに一致する部分文字列を処理する一連の文字列に$入力文字列を、壊し。セパレータ自体は返されません。

<xsl:template match="para"> 
    <xsl:for-each select="tokenize(.,'\*')"> 
    <para> 
     <xsl:sequence select="."/> 
    </para> 
    </xsl:for-each> 
</xsl:template> 

結果に:

<para>A brief 23 spell</para> 
<para> of hea#vy rain</para> 
<para> forc^%ed an early+ lunch</para> 
<para> [email protected] nine</para> 

ストリップに先頭と末尾の空白を使用:

<xsl:sequence select="normalize-space(.)"/>