def parse_attribute(str): open = find(str, '{') if open>=0: close = find(str, '}', open) if close>=0: nl = NodeList() nl.add(TextNode(encode_attribute_value(str[0:open]))) val = str[open+1:close] code = __builtin__.compile(val, val, "eval") nl.add(EncodedEvalNode(code, encode_attribute_value)) nl.add(parse_attribute(str[close+1:])) return nl return TextNode(encode_attribute_value(str))
def property(self, predicate, object, literal_object=0): (namespace, localName) = split_property(predicate) prefix = self.namespaces[namespace] # TODO: Is this what we want to do if object is None? if object==None or object=="": object = "" literal_object = 1 if literal_object: self.stream.write( " <%s:%s>%s</%s:%s>\n" % (prefix, localName, encode_character_data(object), prefix, localName) ) else: if self.baseURI and object[0:len(self.baseURI)+1]==self.baseURI+"#": object = object[len(self.baseURI):] self.stream.write( " <%s:%s rdf:resource=\"%s\"/>\n" % (prefix, localName, encode_attribute_value(object)) )
def subject_start(self, subject): self.stream.write( " <rdf:Description" ) if self.baseURI and subject[0:len(self.baseURI)+1]==self.baseURI+"#": self.stream.write( " rdf:ID=\"%s\">\n" % subject[len(self.baseURI)+1:]) else: self.stream.write( " rdf:about=\"%s\">\n" % encode_attribute_value(subject) )