Exemple #1
0
    def xsd(self):
        base = self.xsd_complex_type()
        seq = base.new('sequence')

        for (key, sub) in sorted(self.mandatory.items()):
            if isinstance(sub, tuple):
                typ, desc = ExtType.instance(sub[0]), sub[1]
            else:
                typ, desc = ExtType.instance(sub), None

            x = seq.new("element", name=key, type="myxsd:" + typ.xsd_name())
            if desc:
                x.new('annotation').new('documentation').cdata(XMLNode.escape(desc))

        opt = seq.new('element', name='optionals')
        optseq = opt.new('complexType').new('sequence')
        for (key, sub) in sorted(self.optional.items()):
            if isinstance(sub, tuple):
                typ, desc = ExtType.instance(sub[0]), sub[1]
            else:
                typ, desc = ExtType.instance(sub), None

            elemname = self.capsify(key)
            x = optseq.new("element", name=elemname,
                           type="myxsd:" + typ.xsd_name(),
                           maxOccurs="1", minOccurs="0")
            if desc:
                x.new('annotation').new('documentation').cdata(XMLNode.escape(desc))

        return base
Exemple #2
0
    def xsd(self):
        base = self.xsd_complex_type()
        seq = base.new('sequence')

        for (key, sub) in sorted(self.mandatory.items()):
            if isinstance(sub, tuple):
                typ, desc = ExtType.instance(sub[0]), sub[1]
            else:
                typ, desc = ExtType.instance(sub), None

            x = seq.new("element", name=key, type="myxsd:" + typ.xsd_name())
            if desc:
                x.new('annotation').new('documentation').cdata(
                    XMLNode.escape(desc))

        opt = seq.new('element', name='optionals')
        optseq = opt.new('complexType').new('sequence')
        for (key, sub) in sorted(self.optional.items()):
            if isinstance(sub, tuple):
                typ, desc = ExtType.instance(sub[0]), sub[1]
            else:
                typ, desc = ExtType.instance(sub), None

            elemname = self.capsify(key)
            x = optseq.new("element",
                           name=elemname,
                           type="myxsd:" + typ.xsd_name(),
                           maxOccurs="1",
                           minOccurs="0")
            if desc:
                x.new('annotation').new('documentation').cdata(
                    XMLNode.escape(desc))

        return base
Exemple #3
0
 def xsd_complex_type(self):
     node = XMLNode('complexType', name=self.xsd_name())
     if self.desc:
         node.new('annotation').new('documentation').cdata(XMLNode.escape(self.desc))
     return node
Exemple #4
0
 def xsd_complex_type(self):
     node = XMLNode('complexType', name=self.xsd_name())
     if self.desc:
         node.new('annotation').new('documentation').cdata(
             XMLNode.escape(self.desc))
     return node