Пример #1
0
    def startElement(self, name, attrs: AttributesNSImpl):
        self.parser_path.append(name)
        xpath = '/' + ('/'.join(self.parser_path))
        copy_path = list(self.parser_path)
        node_name = ('_'.join(self.parser_path))

        curr_schema = self.schema.get(xpath)  # type: OrderedDict
        if curr_schema is None:
            fc_ = FeedColumn(
                type="TEXT",
                search_path=xpath,
                path=copy_path,
                name=name,
                display_name=node_name
            )
            curr_schema = self.schema.setdefault(xpath, fc_)

        if curr_schema:
            attrs_names = attrs.getNames()
            if attrs_names:
                for attr_name in attrs_names:
                    attr_xpath = xpath + "/@" + attr_name
                    attr_node = self.schema.get(attr_xpath)
                    if attr_node is None:
                        fc_ = FeedColumn(
                            type="TEXT",
                            search_path=attr_xpath,
                            path=copy_path,
                            name=attr_name,
                            display_name=node_name + "_" + attr_name
                        )
                        self.schema.setdefault(attr_xpath, fc_)
Пример #2
0
    def write_binding(self, name, val):
        assert self._resultStarted

        attr_vals = {
            (None, u'name'): unicode(name),
        }
        attr_qnames = {
            (None, u'name'): u'name',
        }
        self.writer.startElementNS((SPARQL_XML_NAMESPACE, u'binding'),
                                   u'binding',
                                   AttributesNSImpl(attr_vals, attr_qnames))

        if isinstance(val, URIRef):
            self.writer.startElementNS((SPARQL_XML_NAMESPACE, u'uri'), u'uri',
                                       AttributesNSImpl({}, {}))
            self.writer.characters(val)
            self.writer.endElementNS((SPARQL_XML_NAMESPACE, u'uri'), u'uri')
        elif isinstance(val, BNode):
            self.writer.startElementNS((SPARQL_XML_NAMESPACE, u'bnode'),
                                       u'bnode', AttributesNSImpl({}, {}))
            self.writer.characters(val)
            self.writer.endElementNS((SPARQL_XML_NAMESPACE, u'bnode'),
                                     u'bnode')
        elif isinstance(val, Literal):
            attr_vals = {}
            attr_qnames = {}
            if val.language:
                attr_vals[(XML_NAMESPACE, u'lang')] = val.language
                attr_qnames[(XML_NAMESPACE, u'lang')] = u"xml:lang"
            elif val.datatype:
                attr_vals[(None, u'datatype')] = val.datatype
                attr_qnames[(None, u'datatype')] = u'datatype'

            self.writer.startElementNS(
                (SPARQL_XML_NAMESPACE, u'literal'), u'literal',
                AttributesNSImpl(attr_vals, attr_qnames))
            self.writer.characters(val)
            self.writer.endElementNS((SPARQL_XML_NAMESPACE, u'literal'),
                                     u'literal')

        else:
            raise Exception("Unsupported RDF term: %s" % val)

        self.writer.endElementNS((SPARQL_XML_NAMESPACE, u'binding'),
                                 u'binding')
Пример #3
0
 def write_header(self, allvarsL):
     self.writer.startElementNS(
         (SPARQL_XML_NAMESPACE, u'head'),
         u'head', AttributesNSImpl({}, {}))
     for i in range(0, len(allvarsL)):
         attr_vals = {
             (None, u'name'): text_type(allvarsL[i]),
         }
         attr_qnames = {
             (None, u'name'): u'name',
         }
         self.writer.startElementNS(
             (SPARQL_XML_NAMESPACE, u'variable'),
             u'variable', AttributesNSImpl(attr_vals, attr_qnames))
         self.writer.endElementNS((SPARQL_XML_NAMESPACE,
                                   u'variable'), u'variable')
     self.writer.endElementNS((SPARQL_XML_NAMESPACE, u'head'), u'head')
Пример #4
0
    def _attributes(self, **attributes):
        values, qnames = {}, {}
        for name, value in attributes.iteritems():
            name = unicode(name)
            ns_name = (None, name)
            qnames[ns_name] = name
            values[ns_name] = value

        return AttributesNSImpl(values, qnames)
Пример #5
0
 def write_header(self, allvarsL):
     self.writer.startElementNS((SPARQL_XML_NAMESPACE, "head"), "head",
                                AttributesNSImpl({}, {}))
     for i in range(0, len(allvarsL)):
         attr_vals = {
             (None, "name"): str(allvarsL[i]),
         }
         attr_qnames = {
             (None, "name"): "name",
         }
         self.writer.startElementNS(
             (SPARQL_XML_NAMESPACE, "variable"),
             "variable",
             AttributesNSImpl(attr_vals, attr_qnames),
         )
         self.writer.endElementNS((SPARQL_XML_NAMESPACE, "variable"),
                                  "variable")
     self.writer.endElementNS((SPARQL_XML_NAMESPACE, "head"), "head")
Пример #6
0
    def write_script (self, src) :

        attrs = AttributesNSImpl({(NS_MAP['h'], 'type'):'application/x-javascript',
                                  (NS_MAP['h'], 'src'):src},
                                  {});
        
        self.xml.startElementNS((NS_MAP['h'], 'script'), None, attrs)
        self.xml.characters(" ")
        self.xml.endElementNS((NS_MAP['e'], 'script'), None)
Пример #7
0
 def __init__(self, output, encoding='utf-8'):
     writer = XMLGenerator(output, encoding)
     writer.startDocument()
     writer.startPrefixMapping(u'sparql',SPARQL_XML_NAMESPACE)
     writer.startPrefixMapping(u'xml', XML_NAMESPACE)
     writer.startElementNS((SPARQL_XML_NAMESPACE, u'sparql'), u'sparql', AttributesNSImpl({}, {}))
     self.writer = writer
     self._output = output
     self._encoding = encoding
Пример #8
0
    def write_style (self, src) :

        attrs = AttributesNSImpl({(NS_MAP['h'], 'type'):'text/css',
                                  (NS_MAP['h'], 'media'):'screen'},
                                  {});
        
        self.xml.startElementNS((NS_MAP['h'], 'style'), None, attrs)
        self.xml.characters("@import \"%s\";" % src)
        self.xml.endElementNS((NS_MAP['e'], 'style'), None)
Пример #9
0
 def start_element(self, qname, attrs={}):
     name = self.resolve_namespace(qname)
     attr_vals = OrderedDict()
     attr_qnames = OrderedDict()
     for attr_qname, attr_val in attrs.items():
         attr_name = self.resolve_namespace(attr_qname)
         attr_vals[attr_name] = attr_val
         attr_qnames[attr_name] = attr_qname
     attrs_ns = AttributesNSImpl(attr_vals, attr_qnames)
     self._g.startElementNS(name, qname, attrs_ns)
Пример #10
0
    def write_toolbar (self) :

        tb_attrs = AttributesNSImpl({(NS_MAP['h'], 'class'):'toolbar'},
                                  {});

        title_attrs = AttributesNSImpl({(NS_MAP['h'], 'id'):'pageTitle'},
                                       {});
        
        back_attrs = AttributesNSImpl({(NS_MAP['h'], 'id'):'backButton',
                                       (NS_MAP['h'], 'class'):'button',
                                       (NS_MAP['h'], 'href'):'#'},
                                      {});
                                      
        self.xml.startElementNS((NS_MAP['h'], 'div'), None, tb_attrs)
        self.xml.startElementNS((NS_MAP['h'], 'h1'), None, title_attrs)
        self.xml.endElementNS((NS_MAP['h'], 'h1'), None)        
        self.xml.startElementNS((NS_MAP['h'], 'a'), None, back_attrs)        
        self.xml.endElementNS((NS_MAP['h'], 'a'), None)
        self.xml.endElementNS((NS_MAP['h'], 'div'), None)        
Пример #11
0
    def write_categories(self, subjects):

        for tag in subjects:
            attrs = AttributesNSImpl(
                {
                    (NS_MAP['e'], 'type'): 'name',
                    (NS_MAP['e'], 'content'): tag
                }, {})

            self.xml.startElementNS((NS_MAP['e'], 'category'), None, attrs)
            self.xml.endElementNS((NS_MAP['e'], 'category'), None)
Пример #12
0
 def __init__(self, output, encoding="utf-8"):
     writer = XMLGenerator(output, encoding)
     writer.startDocument()
     writer.startPrefixMapping("", SPARQL_XML_NAMESPACE)
     writer.startPrefixMapping("xml", XML_NAMESPACE)
     writer.startElementNS((SPARQL_XML_NAMESPACE, "sparql"), "sparql",
                           AttributesNSImpl({}, {}))
     self.writer = writer
     self._output = output
     self._encoding = encoding
     self._results = False
Пример #13
0
	def startTag(self, name, attr={}, body=None, namespace=None):
		attr_vals = {}
		attr_keys = {}
		for key, val in attr.iteritems():
			key_tuple = (namespace, key)
			attr_vals[key_tuple] = val
			attr_keys[key_tuple] = key
		attr2 = AttributesNSImpl(attr_vals, attr_keys)
		self.g.startElementNS((namespace, name), name, attr2)
		if body:
			self.g.characters(body)
		return
Пример #14
0
 def write_results_header(self, orderBy, distinct):
     attr_vals = {
         (None, u'ordered'): unicode(orderBy and 'true' or 'false'),
         (None, u'distinct'): unicode(distinct and 'true' or 'false'),
     }
     attr_qnames = {
         (None, u'ordered'): u'ordered',
         (None, u'distinct'): u'distinct'
     }
     self.writer.startElementNS(
         (SPARQL_XML_NAMESPACE, u'results'), u'results',
         AttributesNSImpl(attr_vals, attr_qnames))
Пример #15
0
    def __generate_group(self, name, tagNames):
        """Generates group with references to allowed element."""

        self.__doc.startElementNS((XSD_NS, u'group'), u'xsd:group',
                                  AttributesNSImpl({(None, 'name'): name}, {}))

        self.__doc.startElementNS((XSD_NS, u'choice'), u'xsd:choice',
                                  AttributesNSImpl({}, {}))

        for tagName in tagNames:
            self.__doc.startElementNS((XSD_NS, u'element'), u'xsd:element',
                                      AttributesNSImpl(
                                          {
                                              (None, 'ref'): ':'.join(tagName),
                                              (None, 'minOccurs'): '0',
                                              (None, 'maxOccurs'): 'unbounded'
                                          }, {}))
            self.__doc.endElementNS((XSD_NS, u'element'), u'xsd:element')

        self.__doc.endElementNS((XSD_NS, u'choice'), u'xsd:choice')
        self.__doc.endElementNS((XSD_NS, u'group'), u'xsd:group')
Пример #16
0
 def write_import(self, file):
     attr_vals = {
         (None, 'file'): file,
     }
     attr_names = {
         (None, 'file'): 'file',
     }
     attrs = AttributesNSImpl(attr_vals, attr_names)
     self.file.write(self.indent_level)
     self.xmlout.startElementNS((None, 'import'), 'import', attrs)
     self.xmlout.endElementNS((None, 'import'), 'import')
     self.file.write('\n')
Пример #17
0
 def write_importdir(self, dir):
     attr_vals = {
         (None, 'dir'): dir,
     }
     attr_names = {
         (None, 'dir'): 'dir',
     }
     attrs = AttributesNSImpl(attr_vals, attr_names)
     self.file.write(self.indent_level)
     self.xmlout.startElementNS((None, 'import'), 'import', attrs)
     self.xmlout.endElementNS((None, 'import'), 'import')
     self.file.write('\n')
Пример #18
0
def writeLink(x, namespace, localname, rel, type, href):
    rel = AttributesNSImpl(
        {
            (None, "rel"): rel,
            (None, "href"): href,
            (None, "type"): type
        }, {
            (None, "rel"): "rel",
            (None, "href"): "href",
            (None, "type"): "type"
        })
    x.startElement(namespace, localname, rel)
    x.endElement()
Пример #19
0
    def __generate_element(self, tagName, className, classInfo,
                           attributeGroups, elementGroup):
        """Generates an definition of XSD element.
        
        @param   tagName     tuple produced by __parse_tag_name
        @param   className   name of widget class
        @param   classInfo   dictionary with class information
        @param   attributeGroups   array with all attribute groups which this class includes (simply all inheritance chain)
        @param   elementGroup   array with all allowed child elements
        """

        self.__doc.startElementNS(
            (XSD_NS, u'element'), u'xsd:element',
            AttributesNSImpl({(None, 'name'): tagName[1]}, {}))

        self.__doc.startElementNS((XSD_NS, u'annotation'), u'xsd:annotation',
                                  AttributesNSImpl({}, {}))
        self.__doc.startElementNS(
            (XSD_NS, u'documentation'), u'xsd:documentation',
            AttributesNSImpl({}, {}))

        self.__doc.characters(classInfo.get('info', ''))

        self.__doc.endElementNS((XSD_NS, u'documentation'),
                                u'xsd:documentation')
        self.__doc.endElementNS((XSD_NS, u'annotation'), u'xsd:annotation')

        self.__doc.startElementNS((XSD_NS, u'complexType'), u'xsd:complexType',
                                  AttributesNSImpl({}, {}))

        #generate references for allowed child elements
        self.__doc.startElementNS((XSD_NS, u'sequence'), u'xsd:sequence',
                                  AttributesNSImpl({}, {}))

        for group in elementGroup:
            self.__doc.startElementNS(
                (XSD_NS, u'group'), u'xsd:group',
                AttributesNSImpl({(None, 'ref'): ":".join(group)}, {}))
            self.__doc.endElementNS((XSD_NS, u'group'), u'xsd:group')

        self.__doc.endElementNS((XSD_NS, u'sequence'), u'xsd:sequence')

        #generate attribute group
        for attrGroupName in attributeGroups:
            #TODO fix namespace of the generated group
            self.__doc.startElementNS(
                (XSD_NS, u'attributeGroup'), u'xsd:attributeGroup',
                AttributesNSImpl({(None, 'ref'): "qx:%s" % attrGroupName}, {}))

            self.__doc.endElementNS((XSD_NS, u'attributeGroup'),
                                    u'xsd:attributeGroup')

        self.__doc.endElementNS((XSD_NS, u'complexType'), u'xsd:complexType')
        self.__doc.endElementNS((XSD_NS, u'element'), u'xsd:element')
Пример #20
0
    def __generate_attribute_group(self, className, classInfo):
        """Generate an attribute group based on given classInfo for each class.
        Includes class property in group if it's not overriden from base class 
        (in other case it will be added for base class).
        """

        self.__doc.startElementNS(
            (XSD_NS, u'attributeGroup'), u'xsd:attributeGroup',
            AttributesNSImpl({(None, 'name'): className}, {}))

        #generate attrubute group only if class has any properties
        if classInfo.has_key('properties'):
            properties = classInfo['properties']
            for propName, prop in properties.iteritems():
                #include property only if it's not overriden from base class
                if not prop.get('overriddenFrom'):
                    self.__doc.startElementNS(
                        (XSD_NS, u'attribute'), u'xsd:attribute',
                        AttributesNSImpl({(None, 'name'): propName}, {}))

                    self.__doc.startElementNS((XSD_NS, u'annotation'),
                                              u'xsd:annotation',
                                              AttributesNSImpl({}, {}))
                    self.__doc.startElementNS((XSD_NS, u'documentation'),
                                              u'xsd:documentation',
                                              AttributesNSImpl({}, {}))

                    self.__doc.characters(prop.get('info', ''))

                    self.__doc.endElementNS((XSD_NS, u'documentation'),
                                            u'xsd:documentation')
                    self.__doc.endElementNS((XSD_NS, u'annotation'),
                                            u'xsd:annotation')
                    self.__doc.endElementNS((XSD_NS, u'attribute'),
                                            u'xsd:attribute')

        self.__doc.endElementNS((XSD_NS, u'attributeGroup'),
                                u'xsd:attributeGroup')
Пример #21
0
def write_codebook(tags, output):
    output.startElementNS(
        (None, 'CodeBook'),
        'CodeBook',
        AttributesNSImpl({(None, 'origin'): 'Taguette %s' % __version__},
                         {(None, 'origin'): 'origin'}),
    )
    output.startElementNS(
        (None, 'Codes'),
        'Codes',
        AttributesNSImpl({}, {}),
    )
    for tag in tags:
        guid = uuid.uuid5(TAGUETTE_NAMESPACE, tag.path)
        guid = str(guid).upper()
        output.startElementNS(
            (None, 'Code'),
            'Code',
            AttributesNSImpl(
                {
                    (None, 'guid'): guid,
                    (None, 'name'): tag.path,
                    (None, 'isCodable'): 'true'
                }, {
                    (None, 'guid'): 'guid',
                    (None, 'name'): 'name',
                    (None, 'isCodable'): 'isCodable'
                }),
        )
        output.endElementNS((None, 'Code'), 'Code')
    output.endElementNS((None, 'Codes'), 'Codes')
    output.startElementNS(
        (None, 'Sets'),
        'Sets',
        AttributesNSImpl({}, {}),
    )
    output.endElementNS((None, 'Sets'), 'Sets')
    output.endElementNS((None, 'CodeBook'), 'CodeBook')
Пример #22
0
def start_tag(doc, name, attr=None, body=None, namespace=None):
    """Wrapper to start an xml tag."""
    if attr is None:
        attr = {}
    attr_vals = {}
    attr_keys = {}
    for key, val in attr.iteritems():
        key_tuple = (namespace, key)
        attr_vals[key_tuple] = val
        attr_keys[key_tuple] = key
    attr2 = AttributesNSImpl(attr_vals, attr_keys)
    doc.startElementNS((namespace, name), name, attr2)
    if body:
        doc.characters(body)
Пример #23
0
    def write_extref (self, link, title) :

        pattern = re.compile("\[\[(.*)\]\[(.*)\]\]")
        matches = pattern.findall(title)

        if len(matches) :
            link  = matches[0][0]
            title = matches[0][1]            
            
        attrs = AttributesNSImpl({(NS_MAP['xlink'], 'href'):link,
                                  (NS_MAP['xlink'], 'title'):title},
                                 {});
        
        self.xml.startElementNS((NS_MAP['e'], 'extref'), None, attrs)
        self.xml.endElementNS((NS_MAP['e'], 'extref'), None)
Пример #24
0
 def _edgePathRef(self, xml, offset):
     element = self._svgName('use')
     xml.ignorableWhitespace('\n  ')
     attrs = AttributesNSImpl(
         {
             self.XLINK_HREF_ATTR: '#' + self.EDGE_PATH_ID,
             self.X_ATTR: str(offset)
         }, {
             self.XLINK_HREF_ATTR:
             self.XLINK_PREFIX + ':' + self.XLINK_HREF_ATTR[1],
             self.X_ATTR:
             self.X_ATTR[1]
         })
     xml.startElementNS(element, None, attrs)
     xml.endElementNS(element, None)
Пример #25
0
    def handle_start_tag(self,name,attrs):
        old_ns={} # Reset ns_map to these values when we leave this element
        del_ns=[] # Delete these prefixes from ns_map when we leave element

        # attrs=attrs.copy()   Will have to do this if more filters are made

        # Find declarations, update self.ns_map and self.ns_stack
        for (a,v) in attrs.items():
            if a[:6]=="xmlns:":
                prefix=a[6:]
                if string.find(prefix,":")!=-1:
                    self.parser.report_error(1900)

                #if v=="":
                #    self.parser.report_error(1901)
            elif a=="xmlns":
                prefix=""
            else:
                continue

            if self.ns_map.has_key(prefix):
                old_ns[prefix]=self.ns_map[prefix]
            if v:
                self.ns_map[prefix]=v
            else:
                del self.ns_map[prefix]

            if not self.rep_ns_attrs:
                del attrs[a]

        self.ns_stack.append((old_ns,del_ns))
        
        # Process elem and attr names
        cooked_name = self.__process_name(name)
        ns = cooked_name[0]

        rawnames = {}
        for (a,v) in attrs.items():
            del attrs[a]
            aname = self.__process_name(a, is_attr=1)
            if attrs.has_key(aname):
                self.parser.report_error(1903)         
            attrs[aname] = v
            rawnames[aname] = a
        
        # Report event
        self._cont_handler.startElementNS(cooked_name, name,
                                          AttributesNSImpl(attrs, rawnames))
Пример #26
0
 def write_layers(self, map):
     for layer in map.getLayers():
         cellgrid = layer.getCellGrid()
         attr_vals = {
             (None, 'id'):
             layer.getId(),
             (None, 'grid_type'):
             cellgrid.getType(),
             (None, 'x_scale'):
             str(cellgrid.getXScale()),
             (None, 'y_scale'):
             str(cellgrid.getYScale()),
             (None, 'rotation'):
             str(cellgrid.getRotation()),
             (None, 'x_offset'):
             str(cellgrid.getXShift()),
             (None, 'y_offset'):
             str(cellgrid.getYShift()),
             (None, 'z_offset'):
             str(cellgrid.getZShift()),
             (None, 'pathing'):
             self.pathing_val_to_str(layer.getPathingStrategy()),
             (None, 'transparency'):
             str(layer.getLayerTransparency()),
             (None, 'layer_type'):
             str(self.layer_type_to_str(layer)),
             (None, 'layer_type_id'):
             str(layer.getWalkableId()),
         }
         attr_names = {
             (None, 'id'): 'id',
             (None, 'grid_type'): 'grid_type',
             (None, 'scaling'): 'scaling',
             (None, 'rotation'): 'rotation',
             (None, 'x_offset'): 'x_offset',
             (None, 'y_offset'): 'y_offset',
             (None, 'z_offset'): 'z_offset',
             (None, 'pathing'): 'pathing',
             (None, 'layer_type'): 'layer_type',
             (None, 'layer_type_id'): 'layer_type_id',
         }
         attrs = AttributesNSImpl(attr_vals, attr_names)
         self.startElement('layer', attrs)
         self.write_instances(layer)
         self.write_lights(layer)
         self.endElement('layer')
Пример #27
0
    def __start_schema(self):
        """Generates schema header."""

        self.__doc.startPrefixMapping(u'xsd', XSD_NS)
        self.__doc.startPrefixMapping(u'qx', QX_NS)
        self.__doc.startPrefixMapping(u'qxt', QXT_NS)

        shemaattr = AttributesNSImpl(
            {
                (None, 'targetNamespace'):
                "http://www.qxtransformer.org/qooxdoo/0.8",
                (None, 'elementFormDefault'): 'qualified',
                (None, 'attributeFormDefault'): 'unqualified'
            }, {})

        self.__doc.startElementNS((XSD_NS, u'schema'), u'xsd:schema',
                                  shemaattr)
Пример #28
0
    def write_map(self):
        assert self.state == self.SModel, "Declaration of <map> not at the top level."

        attr_vals = {
            (None, 'id'): self.map.getId(),
            (None, 'format'): MAPFORMAT,
        }
        attr_names = {
            (None, 'id'): 'id',
            (None, 'format'): 'format',
        }
        attrs = AttributesNSImpl(attr_vals, attr_names)
        self.startElement('map', attrs)
        self.state = self.SMap
        self.write_imports(self.map, self.importList)
        self.write_layers(self.map)
        self.write_camera(self.map)
        self.endElement('map')
Пример #29
0
    def write_camera(self, map):
        cameralist = map.getCameras()

        for cam in cameralist:
            if cam.getLocationRef().getMap().getId() == map.getId():
                celldimensions = cam.getCellImageDimensions()
                viewport = cam.getViewPort()

                attr_names = {
                    (None, 'id'): 'id',
                    (None, 'zoom'): 'zoom',
                    (None, 'tilt'): 'tile',
                    (None, 'rotation'): 'rotation',
                    (None, 'ref_layer_id'): 'ref_layer_id',
                    (None, 'ref_cell_width'): 'ref_cell_width',
                    (None, 'ref_cell_height'): 'ref_cell_height',
                }

                attr_vals = {
                    (None, 'id'): cam.getId(),
                    (None, 'zoom'): str(cam.getZoom()),
                    (None, 'tilt'): str(cam.getTilt()),
                    (None, 'rotation'): str(cam.getRotation()),
                    (None, 'ref_layer_id'):
                    cam.getLocation().getLayer().getId(),
                    (None, 'ref_cell_width'): str(celldimensions.x),
                    (None, 'ref_cell_height'): str(celldimensions.y),
                }

                # add a viewport entry if the cam isn't full sized
                if not (viewport == self.engine.getRenderBackend().getArea()):
                    attr_names[(None, 'viewport')] = 'viewport'
                    attr_vals[(None, 'viewport')] = '%d,%d,%d,%d' % (
                        viewport.x, viewport.y, viewport.w, viewport.h)

                colors = cam.getLightingColor()
                if colors[0] < 1.0 or colors[1] < 1.0 or colors[2] < 1.0:
                    attr_names[(None, 'light_color')] = 'light_color'
                    attr_vals[(None, 'light_color')] = '%f,%f,%f' % (
                        colors[0], colors[1], colors[2])
                attrs = AttributesNSImpl(attr_vals, attr_names)
                self.startElement('camera', attrs)
                self.endElement('camera')
Пример #30
0
    def write_html (self) :

        for prefix, uri in NS_MAP.items() :
            self.xml.startPrefixMapping(prefix, uri)
        
        self.xml.startDocument()

        lang = {}
        
        if self.isset_notempty(self.data, 'language') :
            lang = AttributesNSImpl({(NS_MAP['x'], 'lang'):self.data['language']},
                                                       {});

        self.xml.startElementNS((NS_MAP['h'], 'html'), None, lang)

        self.write_head()
        self.write_body()
        
        self.xml.endElementNS((NS_MAP['h'], 'html'), None)        
        self.xml.endDocument()        
Пример #31
0
def start_tag(doc, name, attr=None, body=None, namespace=None):
    """Wrapper to start an xml tag."""
    if attr is None:
        attr = {}
        dct_type = dict
    elif isinstance(attr, OrderedDict):
        dct_type = OrderedDict
    else:
        dct_type = dict

    attr_vals = dct_type()
    attr_keys = dct_type()
    for key, val in attr.items():
        key_tuple = (namespace, key)
        attr_vals[key_tuple] = val
        attr_keys[key_tuple] = key
    attr2 = AttributesNSImpl(attr_vals, attr_keys)
    doc.startElementNS((namespace, name), name, attr2)
    if body:
        doc.characters(body)
Пример #32
0
    def test_nsattrs_wattr(self):
        attrs = AttributesNSImpl({(ns_uri, "attr") : "val"},
                                 {(ns_uri, "attr") : "ns:attr"})

        self.assertEqual(attrs.getLength(), 1)
        self.assertEqual(attrs.getNames(), [(ns_uri, "attr")])
        self.assertEqual(attrs.getQNames(), ["ns:attr"])
        self.assertEqual(len(attrs), 1)
        self.assertTrue((ns_uri, "attr") in attrs)
        self.assertEqual(list(attrs.keys()), [(ns_uri, "attr")])
        self.assertEqual(attrs.get((ns_uri, "attr")), "val")
        self.assertEqual(attrs.get((ns_uri, "attr"), 25), "val")
        self.assertEqual(list(attrs.items()), [((ns_uri, "attr"), "val")])
        self.assertEqual(list(attrs.values()), ["val"])
        self.assertEqual(attrs.getValue((ns_uri, "attr")), "val")
        self.assertEqual(attrs.getValueByQName("ns:attr"), "val")
        self.assertEqual(attrs.getNameByQName("ns:attr"), (ns_uri, "attr"))
        self.assertEqual(attrs[(ns_uri, "attr")], "val")
        self.assertEqual(attrs.getQNameByName((ns_uri, "attr")), "ns:attr")
Пример #33
0
def test_nsattrs_wattr():
    attrs = AttributesNSImpl({(ns_uri, "attr") : "val"},
                             {(ns_uri, "attr") : "ns:attr"})

    return attrs.getLength() == 1 and \
           attrs.getNames() == [(ns_uri, "attr")] and \
           attrs.getQNames() == ["ns:attr"] and \
           len(attrs) == 1 and \
           attrs.has_key((ns_uri, "attr")) and \
           attrs.keys() == [(ns_uri, "attr")] and \
           attrs.get((ns_uri, "attr")) == "val" and \
           attrs.get((ns_uri, "attr"), 25) == "val" and \
           attrs.items() == [((ns_uri, "attr"), "val")] and \
           attrs.values() == ["val"] and \
           attrs.getValue((ns_uri, "attr")) == "val" and \
           attrs.getValueByQName("ns:attr") == "val" and \
           attrs.getNameByQName("ns:attr") == (ns_uri, "attr") and \
           attrs[(ns_uri, "attr")] == "val" and \
           attrs.getQNameByName((ns_uri, "attr")) == "ns:attr"