How to write schema files for autoyast

Martin Vidner, mvidner@suse.cz

RNY, which stands for Relax NG for YaST, is a slight modification of the compact syntax of the Relax NG schema language.

You should understand it from the following example. It should roughly remind you of C structs.

# the syntax is Relax NG for YaST, RNY

nis_domain =
  STRING  nis_domain

nis_servers = 
  LIST nis_servers {
    STRING nis_server*
  }

nis_broadcast =
  BOOLEAN nis_broadcast

nis =
  MAP nis {
    BOOLEAN start_nis? &
    BOOLEAN nis_by_dhcp? &
    nis_domain? &		# may be set by dhcp
    nis_servers? &
    nis_broadcast? &
    LIST nis_other_domains {
      MAP nis_other_domain {
        nis_domain &		# here it is mandatory
        nis_servers? &
        nis_broadcast?
      }*
    }? &
    BOOLEAN nis_broken_server? &
    BOOLEAN nis_local_only? &
    STRING nis_options? &

    BOOLEAN start_autofs?
  }

Simple data types: BOOLEAN, INTEGER, STRING, SYMBOL. Complex data types: LIST, MAP.

LIST

The initial line must have the form "LIST name {". The brace must be on the same line as LIST and only a comment can follow it.

You can specify whether the list can be empty or not by using * or +:

LIST can_be_empty {
  STRING item*
}
LIST cannot_be_empty {
  STRING item+
}

MAP

Join the members of the map by &. Mark optional members by ?.

More info

How to name the file, how to install it, test it...