我检查了2009年的答案:xsd - validating values from external dictionary file说不适用,但它只适用于XSD1.0,而不适用于1.1。
我已经遵循了答案中的链接,但它们没有帮助(我可以看到)。这位Validation Layer with interdependency checks说,在顶部插入schematron是可行的,但我们真的希望避免这种情况(还有另一种技术,我也从未使用过,我们正在处理潜在的大量数据)。
我们需要做一些事情,比如“检查这个值是有效的英国邮政编码”。
那么,XSD可以在验证时对此进行“标注”吗?
发布于 2015-02-16 15:55:34
您不需要为此使用“callout”。
在XSD1.0和XSD1.1中,xsd:enumeration
是强制某个值必须是预定义值集的成员的一种简单而常见的方法。枚举可以在它们自己的文件中定义,并可以included or imported到XSD中。
xsd:pattern
正则表达式提供了通用性上的提升。如果你想走这条路,请看UK Postcode Regex (Comprehensive)。同样,XSD 1.0和1.1都可以工作。
发布于 2015-02-16 21:35:04
按照官方说法,XSD1.1断言中使用的XPath表达式不允许使用doc()函数,该函数提供对外部文档的访问;这是因为WG并不热衷于文档有效性应该取决于实例文档和模式之外的其他因素的想法。在实践中,可能有(依赖于实现的)方法来解决这个问题。当然,使用Saxon XSD1.1处理程序,您的断言可以调用Java扩展函数,而Java扩展函数可以做它们喜欢做的任何事情。
https://stackoverflow.com/questions/28541565
复制