私はXSDスキーマと闘争しています。私は、ノード内の要素の1つだけがcetrainの芸術作品を持つことができ、他の要素に影響を与えないという制限を設けたいと考えています。XMLスキーマ - 要素の1つのみが属性を持つことができます
あなたに有効および無効なXMLファイルの例を与えることは良いだろう:
有効なXML
タグsomeone
がattriubte @id
が含まれている必要があり、そのうちの一つだけが持っている光栄されるだろうcaptain
値の@status
属性です。
<node>
<someone id="01">Alex</someone>
<someone id="02">Amanda</someone>
<someone id="03" status="captain">Bob</someone>
<someone id="04">Costa</someone>
</node>
無効なXML
以下のものは無効です。 @status
で2つの方法を持つ方法はありません。
<node>
<someone id="01" status="captain">Alex</someone>
<someone id="02">Amanda</someone>
<someone id="03" status="captain">Bob</someone>
<someone id="04">Costa</someone>
</node>
もない可能@id
をスキップします。
<node>
<someone status="captain">Alex</someone>
<someone id="01">Amanda</someone>
<someone id="02">Costa</someone>
</node>
私の実際のXSD
私はこれまでxsd
ファイルの以下の部分を持っている、しかし私は、上記の制限を適用する方法は考えています。
<xsd:complexType name="nodeType">
<xsd:sequence>
<xsd:element name="someone" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="id" type="idType" use="required"/>
</xsd:complexType>
私は助けを感謝しています。私はschematronを使ってより良い仕事をしてくれると思っていますが、実際にはそれほど経験はありません。
ありがとう、それは私が探していたものです。好奇心をそそるだけのこと:Schematronで同じことをする方法はありますか? –
はい、schematronの表現力は同じです。しかし、私は構文を覚えていないので、私はそれを使用して以来、長い時間です。 –
どうかありがとうございました。) –