版本1.0中的xslt analyze-string替代方案

时间:2014-01-04 20:31:42

标签: xml regex xslt xslt-2.0

所以我的XSLT 2.0看起来像这样:

<xsl:analyze-string select="creation_date" regex="([0-9]{2})\.([0-9]{2})\.([0-9]{4})-([0-9]{2}):([0-9]{2})">
    <xsl:matching-substring>
        <xsl:value-of select="regex-group(3)"/>
        <xsl:text>-</xsl:text>
        <xsl:value-of select="regex-group(2)"/>
        <xsl:text>-</xsl:text>
        <xsl:value-of select="regex-group(1)"/>
        <xsl:text>T</xsl:text>
        <xsl:value-of select="regex-group(4)"/>
        <xsl:text>:</xsl:text>
        <xsl:value-of select="regex-group(5)"/>
        <xsl:text>:00.000+01:00</xsl:text>
    </xsl:matching-substring>
</xsl:analyze-string>

我怎么能在版本1.0中做类似的事情?

1 个答案:

答案 0 :(得分:1)

您可以像在例如

中一样提取子字符串
<xsl:variable name="s" select="creation_date"/>

        <xsl:value-of select="substring($s, 7, 4)"/>
        <xsl:text>-</xsl:text>
        <xsl:value-of select="substring($s, 4, 2)"/>
        <xsl:text>-</xsl:text>
        <xsl:value-of select="substring($s, 1, 2)"/>
        <xsl:text>T</xsl:text>
        <xsl:value-of select="substring($s, 12, 2)"/>
        <xsl:text>:</xsl:text>
        <xsl:value-of select="substring($s, 15, 2)"/>
        <xsl:text>:00.000+01:00</xsl:text>

这样你就会得到提取的子串,但是没有检查它们是由数字组成的。