JSON 到 XSD 限制
今后,HROpen 项目团队将在 JSON 中制定标准,JSON 将自动转换为 XML。这意味着某些 JSON 架构构造无法在生成的 XSD 中覆盖。本节介绍 XML 的限制,以及在转换期间如何处理这些限制。
高冲击力
没有合适的方法在 XSD 中呈现此类构造,因此需要另一种方法。
- 任何一个 /一个。XSD 中根本没有这样的条件关键字。最近的一个是 ,但它只能用于简单类型。
union
中等影响
生成的 XSD 将错过 JSON 架构强制实施的一些验证逻辑,但对对象实例来说,具有足够的描述性。
-
小财产。生成的 XML 架构将完全错过此限制。
-
附加属性。这更像是扩展验证,使用我们的扩展策略,第三方可以轻松地提供自己的架构,这将全面描述使用的其他属性。
-
依赖项。这主要可用于 JSON 架构,以说明在使用一个属性的情况下,您还需要另一个属性。生成的 XSD 根本不会强制实施此逻辑。
低影响
不管怎样, 几乎从未在 Json 架构中使用过。很容易避免。
-
多位限制。数字值的表示方式,该值可被特定数字除除。
-
混合类型数组。JSON 架构允许定义混合类型数组,例如第一个元素是字符串,第二个元素是整数,等等。
-
负验证。例如,不是说该元素是 XXX 或 LY 类型,而是状态元素不是字符串。负面限制通常可以通过严格的选择来重写。
-
最大属性。我们的目标是保持HROpen计划"开放",因此我们极不可能在我们的类型上施加这样的限制。
-
附加问题。我们的数组类型将由单个重复类型组成,因此我们不会使用此关键字。
-
模式属性。不需要,因为我们可以按属性定义限制属性(如果需要),并且对于我们定义的属性没有"建议名称"。
继承和构成
我们已经决定不需要强制属性排序,因此禁止使用内部 HROpen 对象定义,并且仅对数组使用。它被 替换为 ,但此关键字有严重的限制:sequence
all
-
不能具有基类型和继承类型。这基本上排除了任何使用和生成的 XSD 方案,只需再次说明来自 JSON 架构中组合类型的所有属性。
all
extension
-
all
只允许 1。由于这一事实,为了接近JSON架构表示,我们以与JSON架构相同的方式模拟所有数组 - 使用数组包装器,并在其内包含单个元素。maxOccurs
sequence
-
restriction
要求我们再次引用所有必需的属性,因为受限对象必须是基一的子集,因此使用 时改为完全重新组合。restriction