当前位置:  开发笔记 > 前端 > 正文

在XSLT中使用RegEx

如何解决《在XSLT中使用RegEx》经验,为你挑选了1个好方法。

我需要解析Visual Studio自动生成的XML文档来创建报告.我决定使用XSLT,但我很新,需要帮助.常用模板是:


  
    
      Some text
     
  

我想隔离名称以某些单词开头的成员,例如P:Interfaces.Core.我决定在select语句中使用RegExp.



    
        
            
                

Interfaces list:


为什么我收到错误:

命名空间http://www.w3.org/TR/xpath-functions不包含任何函数>

我哪里错了?我在示例中找到了这样的代码,包括w3c.org!



1> Dimitre Nova..:

如果您使用Visual Studio X执行转换,其中X不大于2008,则将由XSLT 1.0处理器(.NET XslCompiledTransformXslTransform)处理.XSLT 1.0使用XPath 1.0,而不是XPath 2.0及其F&O(功能和操作),它仅在去年成为W3推荐标准.

您有两种选择:

    使用兼容的XSLT 2.0处理器.如果您希望保留在.NET平台中,那么一个合适的选择是Saxon.NET

    只需使用XPath 1.0功能 starts-with(),这足以解决当前的问题.
    表达式:starts-with(., 'P:Interfaces')被评估以true()如果上下文节点的字符串值与字符串开始"P:接口"和false()其他.

另一个可能对这种类型的处理有用的Xpath 1.0函数就是函数contains().

ends-with()可以通过以下方式在XPath 1.0中模拟Xpath的2.0函数:

ends-with(s1, s2)==== substring(s1,string-length(s1) - string-length(s2)+1)= s2

其中" ==="表示"等同于".

这里我们还使用了XPath 1.0函数substring()string-length().

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有