You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求提供基于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)) &lt; 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:09:21