xml - 使用 xsl 删除字符

标签 xml xslt xslt-1.0

我需要使用 xsl 1.0

从字符串值中删除以下字符

*,/,\, #, %, !, @, $, (, ), &

我想出了以下几点:

translate(translate(translate(string(//xpath/@value),'.',''),'/',''),',','')

在上述方法中,我将不得不多次复制相同的代码(每个字符一次)。

如何在不重复代码的情况下实现相同的目标?

谢谢:-)

最佳答案

translate() 函数接受两个字符串作为它的第二个和第三个参数——而不仅仅是两个字符

translate(., $string1, '')

产生一个字符串,它是上下文(当前)节点的字符串值,其中删除了 $string1 中出现的任何字符。

因此您可以使用:

translate(expressionSelectingNode, "/\#%!@$()&", "")

删除第二个参数中包含的任何字符

当然,如果 translate() 函数在 XSLT 样式表中使用(或者,通常在 XML 文档中),一些特殊字符,例如 <& 必须分别转义为 &lt;&amp;

使用它非常强大,可以删除一组未知字符:

假设您想从任何字符串中删除所有非数字字符。我们事先不知道字符串中会出现哪些字符,因此我们不能只在 translate() 的第二个参数中枚举它们。但是我们仍然可以像这样删除所有这些未知字符:

translate(., translate(., '0123456789', ''), '')

内部 translate() 生成没有任何数字的字符串。

外部 translate() 从原始字符串中删除所有这些非数字字符(由内部 translate() 找到)——因此剩下的只是数字字符。

关于xml - 使用 xsl 删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13089002/

相关文章:

xml - 如何在Perl的LibXML findnodes中使用RegEx

xml - 在 GO 中解析 Xml 以获取标记中具有 ":"的属性

xml - 如何在 XSLT 中对元素进行分组

java - 如何使用 XSLT 从 XML 生成完整列表和选定的详细信息?

php - Javascript 警报返回值/事件

java - 提高 SQL 从 JDBC (SQL Server) 插入 XML 列的速度

xml - 使用 XSLT/XSL 解析具有相同名称的子元素的 XML

windows - 为什么 UiPath 检测到的 ctrlid 格式与其 XSLT 表示中记录的格式不同?

xslt - 匹配 XSLT 中的空格分隔值

xml - 需要 XSL 帮助