我的目標是擁有一個RELAX NG緊湊模式,它強制元素的數據類型與父元素的數據類型相匹配。RELAX NG基於其他元素的條件數據類型
目前,我有以下模式:
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 }
}
我想是描述文檔的架構,其中通過如果刻度線/ @從一個浮動,刻度線/刻度/ @值也必須是浮動。
所以基本上它應滿足以下測試:
VALID
<tickmarks from="1" to="10">
<tick value="3" label="3"/>
<tick value="7" label="7"/>
</tickmarks>
VALID
<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>
這可能與RELAX NG緊湊?
這不是你的目標更準確的措辭? 「*我的目標是制定一個模式,強制元素的屬性與該元素的父元素的另一個屬性具有相同的數據類型*」 – mzjn