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)
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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)