我注意到多行字符串不是有效xsd:string
的。根据XML 1.1 规范,xsd:string
只能包含匹配的字符[\u1-\uD7FF]|[\uE000-\uFFFD]|[\u10000-\u10FFFF]
,而换行符不匹配。在 JavaScript 中:
/[\u1-\uD7FF]|[\uE000-\uFFFD]|[\u10000-\u10FFFF]/.test("\n");
// returns false
鉴于此,多行字符串的有效 XSD 数据类型是什么?
我注意到多行字符串不是有效xsd:string
的。根据XML 1.1 规范,xsd:string
只能包含匹配的字符[\u1-\uD7FF]|[\uE000-\uFFFD]|[\u10000-\u10FFFF]
,而换行符不匹配。在 JavaScript 中:
/[\u1-\uD7FF]|[\uE000-\uFFFD]|[\u10000-\u10FFFF]/.test("\n");
// returns false
鉴于此,多行字符串的有效 XSD 数据类型是什么?
XML 1.1 规范实际上说的是
Char ::= [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
而且我看不到任何人都可以将其解读为不包括#xA。
换行符是 \u000A,它在允许的范围内。
尽管您的正则表达式没有任何问题,但您的测试是问题所在。
编辑:根据Mozilla正则表达式文档,Unicode 转义需要 4 个十六进制数字。我怀疑您的问题是您在测试中包含了更高的飞机。我没有检查 ECMA 规范,但我可以相信这会导致您的正则表达式出现问题。