请求提供基于XSLT的字符串验证与字段非空检查示例
XSLT字符串验证与字段非空检查示例
一、字段非空检查
非空检查需要兼顾节点不存在、节点值为空字符串、节点值全是空白字符这几种场景,用normalize-space()函数可以一次性处理这些情况——它会去除字符串首尾的空白,并将中间连续的空白替换为单个空格,处理后如果结果为空字符串,就说明字段不符合非空要求。
示例代码
假设输入XML结构如下:
<user> <name></name> <email> </email> <phone>123456789</phone> </user>
用于非空检查的XSLT模板:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <validation-results> <!-- 检查name字段非空 --> <xsl:if test="normalize-space(user/name) = ''"> <error>name字段不能为空</error> </xsl:if> <!-- 检查email字段非空 --> <xsl:if test="normalize-space(user/email) = ''"> <error>email字段不能为空</error> </xsl:if> <!-- 检查phone字段非空 --> <xsl:if test="normalize-space(user/phone) = ''"> <error>phone字段不能为空</error> </xsl:if> </validation-results> </xsl:template> </xsl:stylesheet>
执行后输出:
<validation-results> <error>name字段不能为空</error> <error>email字段不能为空</error> </validation-results>
二、字符串规则验证
除了非空,还可以根据需求添加字符串长度、格式等验证规则,不同XSLT版本的实现略有差异:
1. 字符串长度检查(XSLT 1.0/2.0通用)
用string-length()函数获取处理后字符串的长度,配合比较运算符做判断:
<xsl:if test="string-length(normalize-space(user/phone)) < 8"> <error>phone字段长度不能少于8位</error> </xsl:if>
2. 简单格式检查(XSLT 1.0/2.0通用)
用contains()判断字符串是否包含指定字符,比如检查邮箱是否包含@:
<xsl:if test="not(contains(normalize-space(user/email), '@'))"> <error>email格式不正确,必须包含@符号</error> </xsl:if>
3. 正则格式检查(仅XSLT 2.0及以上)
XSLT 2.0及以上支持matches()函数,可以用正则表达式做更严谨的格式验证,比如标准邮箱格式:
<xsl:if test="not(matches(normalize-space(user/email), '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'))"> <error>email格式不正确</error> </xsl:if>
内容的提问来源于stack exchange,提问作者Hitoshi Mario Naga Mait
相关产品推荐
相关产品推荐

