xslt用<br/>替换模式

时间:2013-09-06 17:45:27

标签: regex replace xslt-2.0

原始输入:

  

课程注册。 2013年9月16日到期。

期望的输出:

class signup.<br />Expires 09/16/2013.

实际结果:

class signup <br />. Expires 09/16/2013.

尝试过的代码:

<xsl:analyze-string select="$fdesc" regex="[.]\s+\w+">
    <xsl:matching-substring>
        <br/> <xsl:value-of select="."/>
    </xsl:matching-substring>
    <xsl:non-matching-substring>
        <xsl:value-of select="."/>
    </xsl:non-matching-substring>
</xsl:analyze-string>

2 个答案:

答案 0 :(得分:1)

原始代码的问题是匹配的子字符串等于. Expires,而您在此之前插入<br/>

我对此进行了修改,因此匹配的子字符串现在为class signup,我之后立即插入<br />

这是我的尝试:

<xsl:analyze-string select="$fdesc" regex="[^.]+">
    <xsl:matching-substring>
        <xsl:value-of select="."/><br/> 
    </xsl:matching-substring>

    <xsl:non-matching-substring>
        <xsl:value-of select="."/>
    </xsl:non-matching-substring>
</xsl:analyze-string>

请告诉我任何问题。

答案 1 :(得分:0)

我解决了......

            <span class="ccb_form_description">
                <!-- xsl:value-of select="$fdesc" / -->
                <xsl:analyze-string select="$fdesc" regex="([.])(\s+)(\w+)">
                    <xsl:matching-substring>
                        <xsl:value-of select="regex-group(1)"/>
                        <br/>
                        <xsl:value-of select="regex-group(3)"/>
                    </xsl:matching-substring>
                    <xsl:non-matching-substring>
                        <xsl:value-of select="."/>
                    </xsl:non-matching-substring>
                </xsl:analyze-string>
            </span>

这给了我:

class signup.<br>Expires 09/16/2013.

...当没有空格且添加br标签的可能性较小时,只有一个句子以。结尾。