Xml 在XSD架构验证中防止相同的重复n次数字
总体目标是防止美国电话号码中出现相同的重复数字。 请参见以下示例数据:Xml 在XSD架构验证中防止相同的重复n次数字,xml,validation,xsd,Xml,Validation,Xsd,总体目标是防止美国电话号码中出现相同的重复数字。 请参见以下示例数据: 0000000000-不合法 7777-不合法 9549867899-合法 3051234567-合法 我试图在XSD验证中使用正则表达式模式。 特别是一种消极的前瞻性方法。 不幸的是,XML模式(XSD)正则表达式是有限的。 下面的正则表达式^(?(\d)\1{9,})在其他地方执行此任务,但在XSD模式中不起作用。XSD模式有其自己的相当受限的正则表达式方言,其中不包括前瞻 我能想到的唯一办法就是做得相当笨拙 0[0
- 0000000000-不合法
- 7777-不合法
- 9549867899-合法
- 3051234567-合法
下面的正则表达式
^(?(\d)\1{9,})
在其他地方执行此任务,但在XSD模式中不起作用。XSD模式有其自己的相当受限的正则表达式方言,其中不包括前瞻
我能想到的唯一办法就是做得相当笨拙
0[0-9-[0]]|1[0-9-[1]]|2[0-9-[2]]|3[0-9-[3]]|....
只有当字符串包含一对不同的数字时,该操作才会成功。我不明白为什么正确的手机#无法根据建议的解决方案进行验证。正在运行自定义验证引擎Saxonica 9.4.0.6验证程序。。。ANIZeros.xml第8行第24列的/root[1]/r[1]/ANI[1]处出现验证错误:元素第1)条Java内置验证(Xalan Java 2.7.0)的内容“3051234567”。file:///d:/Temp/QuickWins/IDT/ANIZeros.xml:8,24:(错误)cvc模式有效:值“3051234567”对于模式“0[0-9-[0]]| 1[0-9-[1]| 2[0-9-[2]| 3[0-9-[3]| 4[0-9-[4]| 5[0-9-[5]| 6[0-9-[6]| 7[0-9-[7]| 8[0-9-[8]| 9-[0-9-[9]1249]| Anype]1249-[0-9]1249-[0-9]|对于U'.]。file:///d:/Temp/QuickWins/IDT/ANIZeros.xml:1924:(错误)cvc模式(错误)cvc模式(错误)cvc模式(错误)cvc模式(错误)cvc模式(错误)cvc模式(错误)cvc模式(错误)cvc模式(错误)cvc模式(错误)cvc模式有效:价值“0000000000”是没有方面方面有效的方面方面有效的方面有效的方面有效的方面(价值“0000000000”是没有方面方面有效的方面有效的方面有效的方面,就模式“0[0[0[0[0[0[0[0-0-0-0-0-0-0-9-9-[0-9-[0-9-[0[0-9-[1][1[1]1]1]1]1]1]1]]]);2[0-9-0-9-9-[0-9-[0-9-[0-9-[0-9-[9[1]1]3[0-9-[0-9-[0-9-[2]3 9]*)在图案的开头和结尾。@MichaelKay,这很聪明。我认为它无法修复总位数(因为不同位数前后的位数是相关的),但当然,您可以通过显式长度facet.Java内置验证(XalanJava2.7.0)来实现这一点。file:///d:/Temp/QuickWins/ANIZeros.xml:8,24:(错误)cvc模式有效:值“3051234567”对于模式“.*0[0-9-[0]]| 1[0-9-[1]| 2[0-9-[2]]| 3[0-9-[3]| 4[0-9-[4]| 5[0-9-[5]| 6[0-9-[6]| 7[0-9-[7]]| 8[0-9-[8]| ANI[0-9-[9].]。file:///d:/Temp/QuickWins/ANIZeros.xml:19,24:(错误)cvc模式有效:值“0000000000”对于模式“.*0[0-9-[0]]| 1[0-9-[1]| 2[0-9-[2]| 3[0-9-[3]]| 4[0-9-[4]| 5[0-9-[5]| 6[0-9-[6]| 7[0-9-[7]| 8[0-9-[8]| 9-[9].[0-9-[4].[9-[9].]对于ANype]。