xml - Xform 输入字段中允许的字符限制

标签 xml regex xpath xforms orbeon

在我们的场景中,我们只需要允许以下列出的字符作为输入字段的输入

     alpha/numeric
/  - Slash
-  - Hyphen
(  - Open parenthesis
)  - Close parenthesis
.  - Period
,  - Comma
’  - Single Quote
+  - Plus sign
< - Less Than
> - Greater Than
? - Question Mark
  - Space

最佳答案

在 XPath 2.0 中,您可以使用正则表达式参数来设置 matches() 函数

在 XPath 1.0 中使用:

   string-length(translate(., $vallWantedChars, '')) = 0

仅当当前节点的字符串值不包含任何不需要的字符时,上述 XPath 表达式才为 true。您需要将 $allunwantedChars 替换为包含任何所需字符的字符串文字或表达式。

例如,它可以是:

concat($vAlpha, '0123456789', '/-().,+&lt;>? ', $vApos)

下面是 XSLT 中的说明(该解决方案仍然完全是 XPath 1.0,但本例中 XPath 处理器的托管语言是 XSLT 1.0):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="vAlpha" select=
"'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'"/>

<xsl:variable name="vApos">'</xsl:variable>
<xsl:template match="/">
 <xsl:variable name="vallWantedChars" select=
 "concat($vAlpha, '0123456789', '/-().,+&lt;>? ', $vApos)"/>

 <xsl:value-of select=
 "string-length(translate(., $vallWantedChars, '')) = 0"/>
</xsl:template>
</xsl:stylesheet>

当此转换应用于以下 XML 文档时:

<t>123^abc</t>

产生了想要的正确结果:

false

关于xml - Xform 输入字段中允许的字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5896696/

相关文章:

c# - 使用 JpegBitmapEncoder 将 WPF BitmapImage 与 Base64 相互转换,无法加载 JPG 文件

python - 正则表达式:字符类中的\Z

java - 错误 : java. lang.ClassCastException : org. jsoup.nodes.Document 无法转换为 org.w3c.dom.Node

java - 使用 XPath 提取和净化 XML 数据

xml - XPath表达式含义

从 xml 文件到 ListView 的 Android 字符串数组

xml - 使用 perl 解析大型 (100 Mb) XML 文件时出现 "Out of memory"

python - 如何使用python通过标签和嵌套标签从xml文件动态获取数据?

php - 从段落中找到匹配词的最有效方法

javascript - Javascript 中 (?<=exp) 的替代品?