Re: prep.xsl

James Clark <[email protected]>
Newsgroups gmane.text.xml.relaxng.general
Message-ID <[email protected]>
Cheng-Chang Wu wrote:

> My program can still not handle all of the relaxng
> constructs, but it can already read the relaxng file I
> am using in my project.
> 
> I've had problems to determine the nullability of ref
> element. In section 4.19 of the specification it says
> one can replace the expandable ref element with its
> definition. THIS MUST NOT RESULT IN A LOOP. I can't
> grasp this well.

Typically, an implementation represents each type of pattern by an 
object.  The schema is thus initially a tree of objects. At a convenient 
point, the implementation typically resolves references: it checks that 
there's a define for each ref and makes each ref pattern point directly 
to that define, and each grammar becomes just a reference to its start 
pattern. At this stage, you have a directed graph of objects.  This 
graph may have cycles (where every cycle passes through a ref pattern). 
  What your implementation has to do is check that every cycle passes 
through an element pattern.  You can do this by having a recursive 
function with a single depth parameter that walks the  graph, recording 
at each ref node the depth at which it last visited the  node, and 
incrementing the depth when it passes through an element node.
See com.thaiopensource.relaxng.impl.RefPattern.checkRecursion() in Jing.

James
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.