1

我对 XML Schema 完全陌生,并且正在尝试阅读我们为 xsd 元素所拥有的不同模型的语法。

例如,这是 CompleyType 的模型(语法)

<complexType
  abstract = Boolean : false 
  block = (#all | List of (extension | restriction))
  final = (#all | List of (extension | restriction))
  id = ID 
  mixed = Boolean : false
  name = NCName 
  {any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleContent | complexContent | ((group | all | 
choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
</complexType>

但是对我来说很难阅读,所以我会分解它并从几种语法和它的可能性开始,如果有人能检查它会很棒。

The Syntax (a1?,a2?)

这是否意味着我有这种可能性?(未证明)

(a1,a2)
(a1)
(a2)
(empty)

语法

(a1|a2)?

这是否意味着我有这种可能性?(我证明了)

(a1)
(a2)
(empty)

语法

(a1*,a2*)

这是否意味着我有这种可能性?(未证明)

(a1,a1,a2,a2)
(a2,a2)
(a1,a1)
(a1)
(a2)
(empty)

语法

(a1|a2)*

这是否意味着我有这种可能性?(已证明)上面的 (a1*,a2*) 是否具有相同的可能性?

(a1,a1,a2,a2)
(a2,a2)
(a1,a1)
(a1)
(a2)
(empty)

语法

(a1|a2)

这是否意味着我有这种可能性?(证明)

(a1)
(a2)

语法

(a1,a2)

这是否意味着我有这种可能性?(未证明)

(a1,a2)
4

1 回答 1

0

是的,(a1?,a2?)意味着一个可选的 a1 后跟一个可选的 a2 并且将允许您列出的所有示例:

(a1,a2)
(a1)
(a2)
(empty)

是的,(a1|a2)?表示可选的 a1 或 a2 并允许您列出的所有选项:

(a1)
(a2)
(empty)

不是(a1, a2)

是的,(a1*,a2*)意味着零个或多个 a1 后跟零个或多个 a2,并允许您列出的所有选项:

(a1,a1,a2,a2)
(a2,a2)
(a1,a1)
(a1)
(a2)
(empty)

是的,(a1|a2)*意味着零个或多个 a1 或 a2 以任何顺序排列。所以,是的,您列出的选项都是允许的:

(a1,a1,a2,a2)
(a2,a2)
(a1,a1)
(a1)
(a2)
(empty)

以及(a2, a1), 这是不允许(a1*, a2*)

是的,(a1|a2)表示 a1 或 a2 并允许您列出的所有选项:

(a1)
(a2)

是的,(a1,a2)表示 a1 后跟 a2 并允许您列出的可能性:

(a1,a2)
于 2013-09-29T17:02:01.467 回答