我有一个关于XSLT 2.0转换和分析串组成的一个问题:如何在XSLT 2.0应用正则表达式与分析串组件正确
这是我到目前为止已经试过:
<!-->Template for properties<-->
<xsl:template match="UserValue">
<xsl:variable name="TITLE" select="./@title"/>
<xsl:variable name="VALUE" select="./@value"/>
<xsl:analyze-string select="$VALUE" regex="^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})$">
<xsl:matching-substring>
<Property>
<Title><xsl:value-of select="$TITLE"/></Title>
<Value>Date:<xsl:value-of select="regex-group(1)"/>Time:<xsl:value-of select="regex-group(2)"/></Value>
</Property>
</xsl:matching-substring>
<xsl:non-matching-substring>
<!-->Set title and value property<-->
<Property>
<Title><xsl:value-of select="$TITLE"/></Title>
<Value><xsl:value-of select="$VALUE"/></Value>
</Property>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
,我们在下面的格式日期时间字符串:YYYY-MM-DDTHH:MM:SS
我用^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})$
表达式提取两组。第一组包含日期,第二组包含时间,我想像样式表中那样添加它们。
现在发生的事情是,只有不匹配的子串块被执行,而不是匹配子串块。我也试过用xsl when元素和那里的匹配作品,但它不是我想要做的方式,而且我想使用regex-group()
函数,因为它完全符合我的需求。
我找不到我可能在这里完成的错误。先谢谢你!
请张贴最小但完整的XML输入样本来演示该问题。 –