java xsl 自定义函数_xslt函数扩展之用自定义函数(C#,VB,JavaScript)

xslt作为扩展标记语言,其自身系统函数有限,远远满足不了我们的需求,要用xslt处理xml,必须要对数据做些处理(如果可以,我还是不会选择xslt)。

今天就用xslt来处理文本中html标记为例,来讲讲如何利用xslt来执行自定义函数。

我们来看看利用这个xml文本生成报表:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngView Code

现在客户要求在生成的报表中没有html标记,即是不能用disable-output-escaping="yes"来直接执行html标记,或许要说可以用xslt系统函数translate()来做字符匹配,但是我们要匹配的标记何其之多,而且很多标记未知,对于translate()来说又不支持正则,所以我觉得用xslt来写自定义函数来执行replace将html替换为空。

要使用xslt自定义函数,我们必须要引用函数命名空间:

961ddebeb323a10fe0623af514929fc1.png

下面要定义自定义函数就可以用我们指定的工具前缀来定义(必须指明implements-prefix=我们自定义的前缀名)

View Code

//javascript function

// C# Function

// VB Function

]]>

48304ba5e6f9fe08f3fa1abda7d326ab.png

// C# Function

// VB Function]]>

48304ba5e6f9fe08f3fa1abda7d326ab.png

有了这些基础知识我们就可以来写我们自定义的函数来去掉文本中的html标记了,先来看看我们的C#函数:

View Code

// C# Function

public static string NoHTML(string Htmlstring)

{

Htmlstring = Regex.Replace(Htmlstring, @"]*>", "", RegexOptions.IgnoreCase);

return Htmlstring;

}

]]>

48304ba5e6f9fe08f3fa1abda7d326ab.png

public static string NoHTML(string Htmlstring)

{

Htmlstring = Regex.Replace(Htmlstring, @"]*>", "", RegexOptions.IgnoreCase);

return Htmlstring;

}]]>

48304ba5e6f9fe08f3fa1abda7d326ab.png

VB函数:

View Code

Function ReplaceBreakLineInExcelChar(str)

Dim pattern As String = ""

Dim regex As New Regex(pattern)

str = regex.Replace(str, "")

ReplaceBreakLineInExcelChar=str

End Function

]]>

48304ba5e6f9fe08f3fa1abda7d326ab.png

Dim pattern As String = ""

Dim regex As New Regex(pattern)

str = regex.Replace(str, "")

ReplaceBreakLineInExcelChar=str

End Function]]>

48304ba5e6f9fe08f3fa1abda7d326ab.png

javascript函数:

View Code

function replaceHTML(str)

{

return str.replace(/].*?>/g,'');

}

]]>

48304ba5e6f9fe08f3fa1abda7d326ab.png

{

return str.replace(/].*?>/g,'');

}]]>

48304ba5e6f9fe08f3fa1abda7d326ab.png

函数现在写好了,我们来看看这三种函数分别是怎么调用的:

最后要注意的是在调用vb和javascript函数的时候,一定要注意参数类型转换,如果不转换默认传递的是 XPathArrayIterator 对象。所以我们在传递前用string()函数处理下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值