summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanilo Šegan <danilo@src.gnome.org>2006-03-31 23:54:34 +0000
committerDanilo Šegan <danilo@src.gnome.org>2006-03-31 23:54:34 +0000
commitd5539eee56326e6db664c119a356d45856ba89a7 (patch)
tree2aa627a410f42e30b3a33be315af1b3416ec16e2
parent8f95f231130ca01862a60c96d558cc534c805379 (diff)
downloadgnome-doc-utils-d5539eee56326e6db664c119a356d45856ba89a7.tar.gz
Fix attribute handling.
-rw-r--r--xml2po/ChangeLog7
-rwxr-xr-xxml2po/xml2po.py14
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