如何使用XML Schema中的xs:restriction结合正则模式进行XSD约束?

2026-04-29 13:202阅读0评论SEO资源
  • 内容介绍
  • 相关推荐

本文共计841个文字,预计阅读时间需要4分钟。

如何使用XML Schema中的xs:restriction结合正则模式进行XSD约束?

在XML Schema(XSD)中,``元素使用的确实是XPath 2.0的正则子集。它不支持`\d`、`\w`等转义字符,也不支持量词(如`+`、`*`、`?`等)。此外,``元素内不应直接使用量词,除非是在``元素内部显式启用`flags`属性。

  • 必须用 [0-9] 替代 \d[a-zA-Z] 替代 \w
  • 量词只认 *(0次或多次)、+(1次或多次)、?(0或1次)、{n}{n,}{n,m} —— 但某些老解析器(如 .NET 4.0 前的 XmlSchemaSet)会忽略 {n,m}
  • 锚定行为特殊:pattern 默认是“全字符串匹配”,不需要显式加 ^$;加了反而可能出错

多个 xs:pattern 会做逻辑 AND,不是 OR

一个 xs:restriction 下写多个 xs:pattern,表示“必须同时满足所有正则”,不是“满足任一即可”。比如限制邮箱既要含 @,又要以 .com 结尾,两个 pattern 都得通过。

阅读全文

本文共计841个文字,预计阅读时间需要4分钟。

如何使用XML Schema中的xs:restriction结合正则模式进行XSD约束?

在XML Schema(XSD)中,``元素使用的确实是XPath 2.0的正则子集。它不支持`\d`、`\w`等转义字符,也不支持量词(如`+`、`*`、`?`等)。此外,``元素内不应直接使用量词,除非是在``元素内部显式启用`flags`属性。

  • 必须用 [0-9] 替代 \d[a-zA-Z] 替代 \w
  • 量词只认 *(0次或多次)、+(1次或多次)、?(0或1次)、{n}{n,}{n,m} —— 但某些老解析器(如 .NET 4.0 前的 XmlSchemaSet)会忽略 {n,m}
  • 锚定行为特殊:pattern 默认是“全字符串匹配”,不需要显式加 ^$;加了反而可能出错

多个 xs:pattern 会做逻辑 AND,不是 OR

一个 xs:restriction 下写多个 xs:pattern,表示“必须同时满足所有正则”,不是“满足任一即可”。比如限制邮箱既要含 @,又要以 .com 结尾,两个 pattern 都得通过。

阅读全文