如何阅读XSD元素的模型

时间:2013-09-29 15:50:49

标签: xml xsd

我是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)

1 个答案:

答案 0 :(得分: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*)

允许 <{1}}

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

(a1)
(a2)

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

(a1,a2)