我有一个文本字符串 - " Parkering mva fri 30 stk 01.04.14 - 30.06.14",我想分别从字符串中获取日期。
我做的是:
<xsl:variable name="Letters">
<xsl:text>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</xsl:text>
</xsl:variable>
<xsl:variable name="S_Date">
<xsl:value-of select="translate(STRING_VALUE,$Letters,'')"/>
</xsl:variable>
<xsl:value-of select="normalize-space(substring-before($S_Date,'-'))"/>
这产生的输出为 - &#34; 30 01.04.14&#34;,我不想要30。我应该怎么做才能删除它。
答案 0 :(得分:1)
您可以尝试以下内容。这将提取与##。##。##。模式匹配的第一个单词(以空格分隔)。
XSLT 1.0
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="STRING_VALUE">Parkering mva fri 30 stk 01.04.14 - 30.06.14</xsl:param>
<xsl:template match="/">
<output>
<xsl:call-template name="first-date">
<xsl:with-param name="text" select="$STRING_VALUE"/>
</xsl:call-template>
</output>
</xsl:template>
<xsl:template name="first-date">
<xsl:param name="text"/>
<xsl:param name="word" select="substring-before(concat($text, ' '), ' ')"/>
<xsl:choose>
<xsl:when test="translate($word, '0123456789', '##########')='##.##.##'">
<xsl:value-of select="$word"/>
</xsl:when>
<xsl:when test="contains($text, ' ')">
<xsl:call-template name="first-date">
<xsl:with-param name="text" select="substring-after($text, ' ')"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>