私の目標は、要素のデータ型が親要素のデータ型と一致するように強制するRELAXNGコンパクトスキーマを作成することです。
私は現在次のスキーマを持っています:
start = Tickmarks
Tickmarks = element tickmarks {
attribute from { xsd:float | xsd:date },
attribute to { xsd:float | xsd:date },
Tick*
}
Tick = element tick {
attribute value { xsd:float | xsd:date },
attribute label { text }
}
私が欲しいのは、Tickmarks / @ fromがfloatである場合、Tickmarks / Tick /@valueもfloatでなければならないドキュメントを記述するスキーマです。
したがって、基本的に次のテストを満たす必要があります。
有効
<tickmarks from="1" to="10">
<tick value="3" label="3"/>
<tick value="7" label="7"/>
</tickmarks>
有効
<tickmarks from="2000-01-01" to="2006-01-01">
<tick value="2002-01-01" label="2002"/>
<tick value="2004-01-01" label="2004"/>
</tickmarks>
無効
<tickmarks from="2000-01-01" to="2006-01-01">
<tick value="10" label="10"/>
<tick value="20" label="20"/>
</tickmarks>
無効
<tickmarks from="1" to="10">
<tick value="2002-01-01" label="2002"/>
<tick value="2004-01-01" label="2004"/>
</tickmarks>
これはRELAXNGコンパクトで可能ですか?