找不到XSLT matches()函数

时间:2012-06-13 13:04:45

标签: c# xml xslt

我正在编写一个XSLT转换,我希望使用matches函数进行正则表达式匹配并替换。

Visual Studio 2008'match()'是一个未知的XSLT函数。

<xsl:when test="matches(normalize-space(.),'^([(]I[)])(.+)')">
                    <xsl:analyze-string select="normalize-space(.)" regex="^^([(]I[)])(.+)"
                        flags="x">
                        <xsl:matching-substring>
                            <xsl:variable name="paraNumber">
                                <xsl:value-of select="regex-group(1)"/>
                            </xsl:variable>
                            <xsl:variable name="text">
                                <xsl:value-of select="regex-group(2)"/>
                            </xsl:variable>
                            <span class="upper-I-double-bracket">
                                <xsl:value-of select="$paraNumber"/>
                            </span>
                            <xsl:value-of select="$text"/>
                        </xsl:matching-substring>
                    </xsl:analyze-string>
                </xsl:when>

1 个答案:

答案 0 :(得分:2)

Visual Studio(所有当前已知的版本)使用.NET XSLT 1.0处理器XslCompiledTransform或(VS2005之前的版本)旧的XslTransform。这些是XSLT 1.0处理器。

xsl:analyze-string仅受XSLT 2.0+支持,这解释了您收到的错误消息。

如果您需要在.NET环境中使用XSLT 2.0处理器,您可以选择专门为.NET开发的Saxon.NET或XQSharp XSLT 2.0处理器之一。