精炼元素的基础是什么?

What is the base of a refined element?

考虑逻辑片段:

Patient (Profile A)
   identifier (sliced on system) 0..*
      myclinicnbr (slice 1) 0..1
      yourclinicnbr (slice 2) 0..*

然后:

Patient (Profile B, base is A)
   identifier (sliced on system) 0..2
      myclinicnbr (slice 1) (no diff)
      yourclinicnbr (slice 2) 0..*

在 B 中,有效基数是:

问题是:

我认为我们没有说过切片的基数必须是父级的真子集。每次引入新切片时,这样做都需要大量笨拙的数学运算——添加一个 minOccurs = 1 切片可以很容易地强制减少一堆其他 0..n 切片的最大值。期望实例必须满足基本元素和切片的约束,所以如果你有一个 0..3 元素和一堆 0..* 切片,你不能有一个包含超过重复 3 次,不管切片可能指示 0..* 的事实。所以实现行为并不混乱。但是,从文档的角度来看,它可能会造成混淆,并且在某些情况下可能会导致软件混淆。

我倾向于将切片基数是否为元素基数的结构数学子集留给配置文件设计者。在某些情况下,这会很容易并且值得。在其他情况下,这可能比努力证明的更痛苦。如果您认为我们需要在这方面更严格,欢迎提出有理由的更改提案。