the context element
Posted: Thu Aug 09, 2007 12:21 am
As far as I can tell, the spec doesn't describe the context element. Does it qualify the next mode to use based on the name of an element within the section being validated?
I thought this might work (allow p to be validated by b.rnc instead of a.rnc):
a.rnc:
namespace a = "http://a"
start = doc
doc = element a:doc { sec }
sec = element a:sec { p }
p = element a:p { text }
b.rnc:
namespace a = "http://a"
start = p
p = element a:p { quote }
quote = element a:quote { text }
an.nvdl
<rules xmlns="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://a">
<anyNamespace>
<validate schema="a.rnc" schemaType="application/x-rnc">
<context path="p">
<mode>
<anyNamespace>
<validate schema="b.rnc" schemaType="application/x-rnc">
<mode><anyNamespace><reject/></anyNamespace></mode>
</validate>
</anyNamespace>
</mode>
</context>
</validate>
</anyNamespace>
</rules>
test.xml:
<doc xmlns="http://a">
<sec>
<p>
<quote>Floop</quote>
</p>
</sec>
</doc>
If I use oxygen to validate, it says unknown element quote from namespace http://a.
I thought this might work (allow p to be validated by b.rnc instead of a.rnc):
a.rnc:
namespace a = "http://a"
start = doc
doc = element a:doc { sec }
sec = element a:sec { p }
p = element a:p { text }
b.rnc:
namespace a = "http://a"
start = p
p = element a:p { quote }
quote = element a:quote { text }
an.nvdl
<rules xmlns="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://a">
<anyNamespace>
<validate schema="a.rnc" schemaType="application/x-rnc">
<context path="p">
<mode>
<anyNamespace>
<validate schema="b.rnc" schemaType="application/x-rnc">
<mode><anyNamespace><reject/></anyNamespace></mode>
</validate>
</anyNamespace>
</mode>
</context>
</validate>
</anyNamespace>
</rules>
test.xml:
<doc xmlns="http://a">
<sec>
<p>
<quote>Floop</quote>
</p>
</sec>
</doc>
If I use oxygen to validate, it says unknown element quote from namespace http://a.