Regex XML模式(XSD)限制模式只允许ISO 646不变子集(即ASCII)?

Regex XML模式(XSD)限制模式只允许ISO 646不变子集(即ASCII)?,regex,xml,validation,unicode,xsd,Regex,Xml,Validation,Unicode,Xsd,有人知道为什么我的xsd限制不起作用吗 更新:我尝试了与下面完全相同的xsd,但在正则表达式中我将(和)更改为[和] 带有方括号的版本在我尝试的regex测试程序中工作得非常好,但是在XSD中产生了一个模式验证错误。是的,oXygen似乎在说,在其他有效的XSD中不允许使用[]包装的正则表达式 那么,是XML模式还是oXygen不支持方括号中的表达式呢 还是其他原因 相关(?)问题: 目的是仅验证符合以下两种内容模型的字符串: “标记化”: 及 (基本类型包括标记化)ASCII字符集: 只

有人知道为什么我的xsd限制不起作用吗

更新:我尝试了与下面完全相同的xsd,但在正则表达式中我将
更改为
[
]

带有方括号的版本在我尝试的regex测试程序中工作得非常好,但是在XSD中产生了一个模式验证错误。是的,oXygen似乎在说,在其他有效的XSD中不允许使用
[]
包装的正则表达式

那么,是XML模式还是oXygen不支持方括号中的表达式呢

还是其他原因

相关(?)问题:

目的是仅验证符合以下两种内容模型的字符串:

  • “标记化”:
  • 
    

  • (基本类型包括标记化)ASCII字符集:
  • 
    只能包含从“不变子集”中提取的非控制字符
    ISO 646标准(即ASCII)。
    
    如果要将字符串限制为可打印的ASCII字符, 您可以这样简单地表示Unicode范围:

    "[ -~]+"
    
    的范围有点复杂,因为它不是一个连续的序列:

    "[ -"%-?A-Z_a-z]+"
    

    在显式字符列表中,您很可能使用了不正确的转义字符,这会导致错误。

    如果要将字符串限制为可打印的ASCII字符, 您可以这样简单地表示Unicode范围:

    "[ -~]+"
    
    的范围有点复杂,因为它不是一个连续的序列:

    "[ -"%-?A-Z_a-z]+"
    

    在您的显式字符列表中,您很可能使用了不正确的转义字符,这导致了错误。

    我很想在这里为另一张海报提供答案,但未转义的
    只是问题的一半

    /
    也不能转义,因为我使用的是基于Saxon的XML编辑器(如上所述),它会对不需要转义的字符抛出错误


    这里的完整答案(关闭SE):

    我很想给这里的另一张海报提供答案,但未替换的
    只是问题的一半

    /
    也不能转义,因为我使用的是基于Saxon的XML编辑器(如上所述),它会对不需要转义的字符抛出错误


    这里的完整答案(关闭SE):

    来自Saxon的错误消息准确地告诉您出了什么问题:

    Schema processing failed: Syntax error at char 31 in regular expression: Escape character '/' not allowed
    
    也就是说,XSD 1.0中的正则表达式规则不允许“/”(因为“/”在正则表达式中并不特殊,它不需要转义,并且XSD不允许在这些情况下转义字符-这是一种保留字符以备将来使用的方法)

    现在我有一些问题要问你:

    • 你收到这个错误消息了吗

    • 如果没有,您是如何运行验证的

    • 如果你真的得到了它,你为什么要忽略它


    来自Saxon的错误消息准确地告诉您出了什么问题:

    Schema processing failed: Syntax error at char 31 in regular expression: Escape character '/' not allowed
    
    也就是说,XSD 1.0中的正则表达式规则不允许“/”(因为“/”在正则表达式中并不特殊,它不需要转义,并且XSD不允许在这些情况下转义字符-这是一种保留字符以备将来使用的方法)

    现在我有一些问题要问你:

    • 你收到这个错误消息了吗

    • 如果没有,您是如何运行验证的

    • 如果你真的得到了它,你为什么要忽略它


    两个观察结果:ASCII模式缺少空格(;),您不应该包含一个空的>()。更重要的是,应该可以将可打印的ASCII表示为“[ ;-~;]+”。我喜欢这个范围,但请注意,一个基本问题似乎是
    []
    ()
    -请参阅上面的更新!嗨@SMeyer-我试着用 ;(我想你在上面的评论中错过了一个x的x了你的评论吧?),但还是得到了XSD验证错误的x x了你的上面的评论,但是仍然得到了上面的评论中的一个x的x了你的评论,你的评论中的x了你的评论,但是你的评论中没有看到你的x的x了吗?),但是仍然得到了XSD的验证错误,但是仍然得到了XSD的x的验证错误:没有得到了你的x的x的验证错误。但是仍然得到了你的x的x的x-D的验证错误:没有得到了你的x的x-D的x-D的验证错误:没有得到了x的x的x的验证错误:没有得到了你的x-D的x-D的验证错误。但是仍然得到了你的x-D的x的x的x-D的验证错误:没有没有得到了你的x-D的x的x-D的验证错误:没有没有没有得到了你的x-D的x的x-D的我方周四周四周四的未未卡卡卡卡迪尼尼卡卡卡卡迪尼的未未卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡迪尼卡卡迪尼卡卡迪尼卡卡迪尼卡卡迪尼卡迪尼卡卡迪尼卡卡迪尼卡卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡卡迪尼卡迪尼卡卡卡卡迪尼卡卡卡迪尼卡迪尼卡卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼的| S | T | U | V | W | x | Y | Z])+“”不是有效的正则表达式。报告的错误是:“当前选项设置不支持此表达式”。@SMeyer我认为不需要在XML中转义空格,或者这是正则表达式吗?请参阅XML;我尝试过的正则表达式测试程序接受了文本空格。缺少x,很好。是的,空格没有我不必逃避。虽然这也不会造成伤害。我只是想弄清楚我说的是哪一个。有几个观察:ASCII模式缺少空格(;),不应该包含一个空的>()。更重要的是,应该可以将可打印的ASCII表示为“[ ;-~;]+“。我喜欢这个范围,但请注意一个基本问题似乎是
    []
    ()
    的对比-请参阅上面的更新!嗨@SMeyer-我试着用 ;(我想你在上面的评论中错过了一个x的x了你的评论吧?),但还是得到了XSD验证错误的x x了你的上面的评论,但是仍然得到了上面的评论中的一个x的x了你的评论,你的评论中的x了你的评论,但是你的评论中没有看到你的x的x了吗?),但是仍然得到了XSD的验证错误,但是仍然得到了XSD的x的验证错误:没有得到了你的x的x的验证错误。但是仍然得到了你的x的x的x-D的验证错误:没有得到了你的x的x-D的x-D的验证错误:没有得到了x的x的x的验证错误:没有得到了你的x-D的x-D的验证错误。但是仍然得到了你的x-D的x的x的x-D的验证错误:没有没有得到了你的x-D的x的x-D的验证错误:没有没有没有得到了你的x-D的x的x-D的我方周四周四周四的未未卡卡卡卡迪尼尼卡卡卡卡迪尼的未未卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡卡迪尼卡卡迪尼卡卡迪尼卡卡迪尼卡卡迪尼卡卡迪尼卡迪尼卡卡迪尼卡卡迪尼卡卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡卡迪尼卡迪尼卡卡卡卡迪尼卡卡卡迪尼卡迪尼卡卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼卡迪尼的| S | T | U | V | W | x | Y | Z])+“”不是有效的正则表达式。报告的错误是:“当前选项设置不支持此表达式”。@SMeyer我认为不需要在XML中转义空格,或者这是正则表达式吗?请参阅XML;我尝试过的正则表达式测试程序接受了文本空格。缺少x,很好。是的,空格没有不必转义。虽然也不会有什么坏处。我只是想弄清楚我说的是哪一个。谢谢!我检查了XML中转义字符的列表