XML Guruがアノマリーに答えるのを探しています。私は運が少しでも複数のWebページをチェックしました。xml:すべてすべてが必要なのか何もないのか?
私は、xsを持つ複雑なデータ型を持っている:
<xs:complexType name="EffectRecord">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:all minOccurs="0" maxOccurs="1">
<xs:element name="P1Name" type="xs:string"/>
<xs:element name="P2Name" type="xs:string"/>
<xs:element name="P3Name" type="xs:string"/>
<xs:element name="BasedOnStat" type="xs:string"/>
</xs:all>
<xs:attribute name="EffectName" type="xs:string" use="required"/>
<xs:attribute name="Description" type="xs:string" use="required"/>
<xs:attribute name="CostFormula" type="xs:string" use="required"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
私はこのように後で私のスキーマ内のタイプを使用します:
xs:element name="World">
<xs:complexType>
<xs:all>
<xs:element name="Statistics">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="Statistic" type="StatRecord"/>
</xs:sequence>
</xs:complexType>
<xs:key name="StatKey">
<xs:selector xpath="World/Statistics"/>
<xs:field xpath="@Name"/>
</xs:key>
<xs:keyref refer="StatKey" name="StatRef">
<xs:selector xpath="EffectRecord"/>
<xs:field xpath="BasedOnStat"/>
</xs:keyref>
</xs:element>
<xs:element name="Effects">
<xs:complexType>
<xs:sequence maxOccurs="unbounded" minOccurs="0">
<xs:element name="Effect" type="EffectRecord"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
その中のすべては、このようにminOccurs属性= 0に設定スキーマ駆動XMLエディタでこのスキーマを使用してドキュメントを作成しようとすると、次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<Statistics>
<Statistic Name="Strength" Abbreviation="STR" Cost="3"/>
<Statistic Name="Toughness" Abbreviation="TOU" Cost="2"/>
</Statistics>
<Effects>
<Effect EffectName="foo" Description="A foo" CostFormula="P1*2">
</Effect>
</Effects>
しかし、これは「効果」は完了していないエラーに要素の内容を生成します。 '{P2Name、P3Name、BasedOnStat}'のいずれかが必要です。
<?xml version="1.0" encoding="UTF-8"?>
<Statistics>
<Statistic Name="Strength" Abbreviation="STR" Cost="3"/>
<Statistic Name="Toughness" Abbreviation="TOU" Cost="2"/>
</Statistics>
<Effects>
<Effect EffectName="foo" Description="A foo" CostFormula="P1*2">
<P1Name></P1Name>
</Effect>
</Effects>
なぜこれらの要素のうちの1つを含めることは、彼らのすべてが含まれていなければならない意味するのでしょうか?これは、xs:allの私が見つけた決定のどれとも一致しません。私が望むのは、すべてのサブ要素がオプションであるが、たかだか1回だけであることである。
本当にありがとうございました。ここで私の頭を画面に押しつけています。