[Nml-wg] RNC questions

Freek Dijkstra Freek.Dijkstra at sara.nl
Mon Jun 20 10:36:11 CDT 2011


Hi,

Today, I was trying to create and improve an example topology file based
on the RNC schema.

Unfortunately, the current RNC schemata do not validate when used with a
stricter parser. We tried last week with Jing-Trang, and that gave no
errors. Today, I tried with http://validator.nu/ and got a few more errors.

Could someone answer my noob questions on RNC? (Either on-list or off-list).

1) What is the difference between
    Lifetime =
      element lifetime {
        StartTime,
        (EndTime | Duration)?
      }
and
    Lifetime =
      element lifetime {
        StartTime
        & (EndTime | Duration)?
      }
and which one should I use? The goal is a lifetime element with a start
element (defined in the StartTime rule) and optionally an end OR
duration element (respectively defined in the EndTime and Duration rules).

2) I read on http://relaxng.org/compact-tutorial-20030326.html that the
order is relevant in RNC. Thus
<location><latitude>51.5155</latitude><longitude>-0.0922</longitude></location>
is different from
<location><longitude>-0.0922</longitude><latitude>51.5155</latitude></location>.
Is there a way to specify in the RNC schema that this order is
irrelevant in the XML?

3) The NML Group is -by it's current definition- recursive: A group is a
NML NetworkObject, and a Group can contain NML NetworkObjects, thus
including other groups. I have a problem with such recursive definitions
in RNC. At least the validator complains about patterns defined later on
in the document. Can't I do that, or am I just doing something wrong
(I'm happy to provide offlist the URLs of RNC schema and example
topology file I'm currently working on, so you can see the errors for
yourself)

4) In the current RNC schema, extensibility was ensured using the
"anyElement" rule. E.g.
    BasePortContent =
      NetworkObject
      & element capacity { xsd:float }?
      & anyElement*
Unfortunately, the validator complained about this. When checking a
document, it is unclear if a "location" element should be parsed
according the second rule (element capacity { xsd:float }?) or third
rule (anyElement*). When reading about this, it was suggested to remove
the anyElement* from the BasePortContent, since it is possible to still
add new allowed element in the following method:
    BasePortContent =
      NetworkObject
      & element capacity { xsd:float }?
  # later extension:
    BasePortContent &=
      element my_extension { xsd:string }?

I have some more questions, but these were the most important ones. If
some RNC expert could help me out or point me in the right way, GREAT!

Freek


More information about the nml-wg mailing list