【问题标题】:XSLT matches() function not found未找到 XSLT 匹配()函数
【发布时间】:2012-06-13 13:04:45
【问题描述】:

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

“matches ()”的 Visual Studio 2008 是未知的 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>

【问题讨论】:

  • 从 XSLT 2.0 开始支持 matches()。 Windows 的默认 XSLT 解析器仅支持 1.0 版标准。

标签: c# xml xslt


【解决方案1】:

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 处理器之一。

【讨论】:

    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2018-05-26
    相关资源
    最近更新 更多