diff options
author | Danilo Šegan <danilo@src.gnome.org> | 2006-03-31 23:54:34 +0000 |
---|---|---|
committer | Danilo Šegan <danilo@src.gnome.org> | 2006-03-31 23:54:34 +0000 |
commit | d5539eee56326e6db664c119a356d45856ba89a7 (patch) | |
tree | 2aa627a410f42e30b3a33be315af1b3416ec16e2 | |
parent | 8f95f231130ca01862a60c96d558cc534c805379 (diff) | |
download | gnome-doc-utils-d5539eee56326e6db664c119a356d45856ba89a7.tar.gz |
Fix attribute handling.
-rw-r--r-- | xml2po/ChangeLog | 7 | ||||
-rwxr-xr-x | xml2po/xml2po.py | 14 |
2 files changed, 17 insertions, 4 deletions
diff --git a/xml2po/ChangeLog b/xml2po/ChangeLog index fc378fb..e2207cd 100644 --- a/xml2po/ChangeLog +++ b/xml2po/ChangeLog @@ -1,5 +1,12 @@ 2006-04-01 Danilo Šegan <danilo@gnome.org> + Fix #317110. + + * xml2po.py (startTagForNode): fix attribute handling. + (replaceNodeContentsWithText): Use startTagForNode for starttag. + +2006-04-01 Danilo Šegan <danilo@gnome.org> + * xml2po.py (replaceNodeContentsWithText): Improve fix for #336765. 2006-03-31 Danilo Šegan <danilo@gnome.org> diff --git a/xml2po/xml2po.py b/xml2po/xml2po.py index ff9f684..72ab469 100755 --- a/xml2po/xml2po.py +++ b/xml2po/xml2po.py @@ -237,8 +237,11 @@ def startTagForNode(node): if node.properties: for p in node.properties: if p.type == 'attribute': - # FIXME: This part sucks - params += p.serialize('utf-8') + try: + nsprop = p.ns().name + ":" + p.name + except: + nsprop = p.name + params += " %s=\"%s\"" % (nsprop, p.doc.encodeEntitiesReentrant(p.content)) return result+params def endTagForNode(node): @@ -311,7 +314,7 @@ def replaceNodeContentsWithText(node,text): """Replaces all subnodes of a node with contents of text treated as XML.""" if node.children: - starttag = node.name #startTagForNode(node) + starttag = startTagForNode(node) endtag = endTagForNode(node) # Lets add document DTD so entities are resolved @@ -325,12 +328,16 @@ def replaceNodeContentsWithText(node,text): content = '<%s>%s</%s>' % (starttag, text, endtag) tmp = tmp + content.encode('utf-8') + newnode = None try: ctxt = libxml2.createDocParserCtxt(tmp) ctxt.replaceEntities(0) ctxt.parseDocument() newnode = ctxt.doc() except: + pass + + if not newnode: print >> sys.stderr, """Error while parsing translation as XML:\n"%s"\n""" % (text.encode('utf-8')) return @@ -342,7 +349,6 @@ def replaceNodeContentsWithText(node,text): free.unlinkNode() free = next - add = newelem.children if node: copy = newelem.copyNodeList() next = node.next |