Re: [xml] Correct behaviour of RelaxNG interleave



* Pavol Rusnak wrote:
I would like to ask, what is the correct behaviour of RelaxNG
interleave? Suppose we have the following example:

The specification http://relaxng.org/spec-20011203.html#IDA2Z0R or 
http://books.xmlschemata.org/relaxng/relax-CHP-6-SECT-7.html should
answer this. It seems you have found a bug in libxml2-2.6.27.

blueA = element blueA { empty }
blueB = element blueB { empty }
redA  = element redA { empty }
redB  = element redB { empty }

blue = blueA? & blueB?
red  = redA? & redB?

profile_current = blue & red
start = element profile {
  profile_current
}

Then is the following XML valid?

<profile>
 <blueA/><redA/><blueB/><redB/>
</profile>

Yes it is. Your test case somewhat simplified:

  a = element a { empty }
  b = element b { empty }
  c = element c { empty }
  d = element d { empty }
  
  e = a & b
  f = c & d
  
  start = element root { e & f }

along with

  <root><a/><c/><b/><d/></root>

MSV and Jing will correctly validate this document, but the current
version of libxml2 rejects it. If you want some other behavior, you
cannot use <interleave> directly.
-- 
Björn Höhrmann · mailto:bjoern hoehrmann de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/ 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]