def install_def(self, name, dstmt, def_map, interleave=False): """Install definition `name` into the appropriate dictionary. `dstmt` is the definition statement ('typedef' or 'grouping') that is to be mapped to a RELAX NG named pattern '<define name="`name`">'. `def_map` must be either `self.local_defs` or `self.global_defs`. `interleave` determines the interleave status inside the definition. """ delem = SchemaNode.define(name, interleave=interleave) delem.attr["name"] = name def_map[name] = delem if def_map is self.global_defs: self.gg_level += 1 self.handle_substmts(dstmt, delem) if def_map is self.global_defs: self.gg_level -= 1
def add_identity(self, ident): """Add `id_stmt` and all derivates to `self.identities`. `ident` must be a fully qualified identity name. """ def trname(iname): return "__" + iname.replace(":","_") if ident in self.identities: return parent = SchemaNode.define(trname(ident)) self.identities[ident] = parent if self.identity_deps[ident]: parent = SchemaNode.choice(parent, occur=2) SchemaNode("value", parent, ident).attr["type"]="QName" for i in self.identity_deps[ident]: SchemaNode("ref", parent).attr["name"]=trname(i) self.add_identity(i)
def install_def(self, name, dstmt, def_map, interleave=False): """Install definition `name` into the appropriate dictionary. `dstmt` is the definition statement ('typedef' or 'grouping') that is to be mapped to a RELAX NG named pattern '<define name="`name`">'. `def_map` must be either `self.local_defs` or `self.global_defs`. `interleave` determines the interleave status inside the definition. """ delem = SchemaNode.define(name, interleave=interleave) delem.attr["name"] = name def_map[name] = delem if def_map is self.global_defs: self.gg_level += 1 self.handle_substmts(dstmt, delem) if def_map is self.global_defs: self.gg_level -= 1
def add_identity(self, ident): """Add `id_stmt` and all derivates to `self.identities`. `ident` must be a fully qualified identity name. """ def trname(iname): return "__" + iname.replace(":", "_") if ident in self.identities: return parent = SchemaNode.define(trname(ident)) self.identities[ident] = parent if self.identity_deps[ident]: parent = SchemaNode.choice(parent, occur=2) SchemaNode("value", parent, ident).attr["type"] = "QName" for i in self.identity_deps[ident]: SchemaNode("ref", parent).attr["name"] = trname(i) self.add_identity(i)
def install_def(self, name, dstmt, interleave=False): """Install definition `name` representing `dstmt`.""" delem = SchemaNode.define(name, interleave=interleave) delem.attr["name"] = name self.defs[name] = delem self.handle_substmts(dstmt, delem)
def install_def(self, name, dstmt, interleave=False): """Install definition `name` representing `dstmt`.""" delem = SchemaNode.define(name, interleave=interleave) delem.attr["name"] = name self.defs[name] = delem self.handle_substmts(dstmt, delem)