1

私は XML スキーマにまったく慣れていないので、基本を理解しようとしています。これがComplexTypeのモデルです。コンテンツ部分の読み方がわかりません。質問は、ComplexType に含めることができる要素です)。

<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>

次の記号または演算子は、complexType のモデル構文に含まれます。

?            = ( one or no of this element) 
*            = ( several or no of this element) 
no operator  = (  does mean one of this element) 
|            = ( is this e OR ? )

次の組み合わせを試しましたが、可能です:

annotation, simpleContent
simpleContent
annotation, complexContent
complexContent

次の組み合わせでは、シーケンスの代わりに、この要素、グループ、すべて、選択も配置できますか (そして、anyAttribut 要素を無視しました)

annotation,sequence,attributeA,attributeB,attributeGroupeA
sequence,attributeA,attributeB,attributeGroupeA
attributeA,attributeB,attributeGroupeA
attributeA
attributeGroupeA

この組み合わせ、attributeA、attributeB、attributeGroupeA を持つことが可能であることがわかります。これが、モデルの構文で理解できない私の概念のポイントです。

((attribute | attributeGroup)*, anyAttribute?))

|のせいで 以下の組み合わせはあってはならない記号

attributeA,attributeB,attributeGroupeA

私は何を間違って読んでいますか?

(attribute | attributeGroup)*

この構文は私にとって意味があります。私は次の組み合わせの可能性を持っています

attributeA,attributeB
attribute
attributeGroupeA,attriubteGroupeB
attributeGroupeA
4

1 に答える 1

0

または のいずれか(attribute | attributeGroup)を許可するものとしてお読みください。attributeattributeGroup

または(attribute | attributeGroup)*の 0 個以上を許可するものとしてお読みください。またはの別の発生の可能性に戻るたびに、いずれかを選択できます。したがって、この構成では、ゼロ以上の任意のシーケンス、または任意の順序を使用できますattributeattributeGroupattributeattributeGroupattributeattributeGroup

したがって、完全な XML スキーマ用語では、たとえば、次のType定義が BNF for でサポートされていcomplexTypeます。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           version="1.0">

  <xs:attributeGroup name="AttributeGroupXY1">
    <xs:attribute name="attributeX1"/>
    <xs:attribute name="attributeY1"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="AttributeGroupXY2">
    <xs:attribute name="attributeX2"/>
    <xs:attribute name="attributeY2"/>
  </xs:attributeGroup>

  <xs:complexType name="Type">
    <xs:attribute name="attributeA"/>
    <xs:attribute name="attributeB"/>
    <xs:attributeGroup ref="AttributeGroupXY1"/>
    <xs:attribute name="attributeC"/>
    <xs:attributeGroup ref="AttributeGroupXY2"/>
  </xs:complexType>

</xs:schema>
于 2013-09-29T14:35:42.100 に答える