Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3daab98

Browse files
committed
Make DOM work right with namespaces, probably
1 parent61c7700 commit3daab98

File tree

2 files changed

+17
-24
lines changed

2 files changed

+17
-24
lines changed

‎src/html5lib/treebuilders/dom.py‎

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,34 +22,30 @@ def getDomModule(DomImplementation):
2222

2323
defgetDomBuilder(DomImplementation):
2424
Dom=DomImplementation
25-
infoset_filter=ihatexml.InfosetFilter()
2625
classAttrList:
2726
def__init__(self,element):
2827
self.element=element
2928
def__iter__(self):
3029
returnself.element.attributes.items().__iter__()
3130
def__setitem__(self,name,value):
32-
self.element.setAttribute(infoset_filter.coerceAttribute(name),
33-
infoset_filter.coerceCharacters(value))
31+
self.element.setAttribute(name,value)
3432
defitems(self):
35-
return [(infoset_filter.fromXmlName(item[0]),item[1])foritemin
33+
return [(item[0],item[1])foritemin
3634
self.element.attributes.items()]
3735
defkeys(self):
38-
return [infoset_filter.fromXmlName(item)foritemin
39-
self.element.attributes.keys()]
36+
returnself.element.attributes.keys()
4037
def__getitem__(self,name):
41-
name=infoset_filter.toXmlName(name)
4238
returnself.element.getAttribute(name)
4339

4440
def__contains__(self,name):
4541
ifisinstance(name,tuple):
4642
raiseNotImplementedError
4743
else:
48-
returnself.element.hasAttribute(infoset_filter.toXmlName(name))
44+
returnself.element.hasAttribute(name)
4945

5046
classNodeBuilder(_base.Node):
5147
def__init__(self,element):
52-
_base.Node.__init__(self,element.localName)
48+
_base.Node.__init__(self,element.nodeName)
5349
self.element=element
5450

5551
namespace=property(lambdaself:hasattr(self.element,"namespaceURI")
@@ -60,7 +56,6 @@ def appendChild(self, node):
6056
self.element.appendChild(node.element)
6157

6258
definsertText(self,data,insertBefore=None):
63-
data=infoset_filter.coerceCharacters(data)
6459
text=self.element.ownerDocument.createTextNode(data)
6560
ifinsertBefore:
6661
self.element.insertBefore(text,insertBefore.element)
@@ -91,17 +86,14 @@ def setAttributes(self, attributes):
9186
forname,valueinattributes.items():
9287
ifisinstance(name,tuple):
9388
ifname[0]isnotNone:
94-
qualifiedName= (name[0]+":"+
95-
infoset_filter.coerceAttribute(
96-
name[1]))
89+
qualifiedName= (name[0]+":"+name[1])
9790
else:
98-
qualifiedName=infoset_filter.coerceAttribute(
99-
name[1])
91+
qualifiedName=name[1]
10092
self.element.setAttributeNS(name[2],qualifiedName,
10193
value)
10294
else:
10395
self.element.setAttribute(
104-
infoset_filter.coerceAttribute(name),value)
96+
name,value)
10597
attributes=property(getAttributes,setAttributes)
10698

10799
defcloneNode(self):
@@ -161,7 +153,7 @@ def getFragment(self):
161153
return_base.TreeBuilder.getFragment(self).element
162154

163155
definsertText(self,data,parent=None):
164-
data=infoset_filter.coerceCharacters(data)
156+
data=data
165157
ifparent<>self:
166158
_base.TreeBuilder.insertText(self,data,parent)
167159
else:
@@ -210,11 +202,13 @@ def serializeElement(element, indent=0):
210202
i=0
211203
attr=element.attributes.item(i)
212204
whileattr:
213-
name=infoset_filter.fromXmlName(attr.localName)
205+
name=attr.nodeName
214206
value=attr.value
215207
ns=attr.namespaceURI
216208
ifns:
217-
name="%s %s"%(constants.prefixes[ns],name)
209+
name="%s %s"%(constants.prefixes[ns],attr.localName)
210+
else:
211+
name=attr.nodeName
218212
i+=1
219213
attr=element.attributes.item(i)
220214

@@ -241,21 +235,21 @@ def dom2sax(node, handler, nsmap={'xml':XML_NAMESPACE}):
241235
attr=node.getAttributeNode(attrname)
242236
if (attr.namespaceURI==XMLNS_NAMESPACEor
243237
(attr.namespaceURI==Noneandattr.nodeName.startswith('xmlns'))):
244-
prefix= (attr.localName!='xmlns'andattr.localNameorNone)
238+
prefix= (attr.nodeName!='xmlns'andattr.nodeNameorNone)
245239
handler.startPrefixMapping(prefix,attr.nodeValue)
246240
prefixes.append(prefix)
247241
nsmap=nsmap.copy()
248242
nsmap[prefix]=attr.nodeValue
249-
delattributes[(attr.namespaceURI,attr.localName)]
243+
delattributes[(attr.namespaceURI,attr.nodeName)]
250244

251245
# apply namespace declarations
252246
forattrnameinnode.attributes.keys():
253247
attr=node.getAttributeNode(attrname)
254248
ifattr.namespaceURI==Noneand':'inattr.nodeName:
255249
prefix=attr.nodeName.split(':')[0]
256250
ifnsmap.has_key(prefix):
257-
delattributes[(attr.namespaceURI,attr.localName)]
258-
attributes[(nsmap[prefix],attr.localName)]=attr.nodeValue
251+
delattributes[(attr.namespaceURI,attr.nodeName)]
252+
attributes[(nsmap[prefix],attr.nodeName)]=attr.nodeValue
259253

260254
# SAX events
261255
ns=node.namespaceURIornsmap.get(None,None)

‎src/html5lib/treewalkers/dom.py‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
_=gettext.gettext
55

66
import_base
7-
87
fromhtml5lib.constantsimportvoidElements
98

109
classTreeWalker(_base.NonRecursiveTreeWalker):

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp