def escapedNode(elt, start, empty, ixEscape, ixResolveUris): if elt.namespaceURI in ixbrlAll: return '' # do not yield XML for nested facts if ixResolveUris: uriAttrs = htmlEltUriAttrs.get(elt.qname.localName, ()) else: uriAttrs = () s = ['<'] if not start and not empty: s.append('/') if ixEscape == "html" and elt.qname.namespaceURI == xhtml: s.append(elt.qname.localName) # force xhtml prefix to be default else: s.append(str(elt.qname)) if start or empty: if elt.localName == "object" and elt.get( "codebase"): # resolve codebase before other element names elt.set("codebase", resolveHtmlUri(elt, "codebase"), elt.get("codebase")) for n, v in sorted(elt.items(), key=lambda item: item[0]): if n in uriAttrs: v = resolveHtmlUri(elt, n, v).replace( " ", "%20" ) # %20 replacement needed for conformance test passing s.append(' {0}="{1}"'.format( qname(elt, n), v.replace("&", "&").replace('"', '"'))) if not start and empty: s.append('/') s.append('>') return ''.join(s)
def expectedInstanceLoaded(expectedInstance, outputInstanceToCompare): for f in expectedInstance.facts: if not f.isNumeric and f.text and "http://www.w3.org/1999/xhtml" in f.text: f.text = re.sub( "(<[^>]+)\s+xmlns=[\"']http://www.w3.org/1999/xhtml[\"']", r"\1", f.text) # fixup relative urls in fact footnotes for elt in expectedInstance.modelDocument.xmlRootElement.iterdescendants( tag="{http://www.w3.org/1999/xhtml}*"): for n in htmlEltUriAttrs.get(elt.localName, ()): v = elt.get(n) if v: v = resolveHtmlUri(elt, n, v).replace(" ", "%20") elt.set(n, v)
def escapedNode(elt, start, empty, ixEscape, ixResolveUris): if elt.namespaceURI in ixbrlAll: return '' # do not yield XML for nested facts if ixResolveUris: uriAttrs = htmlEltUriAttrs.get(elt.qname.localName, ()) else: uriAttrs = () s = ['<'] if not start and not empty: s.append('/') if ixEscape == "html" and elt.qname.namespaceURI == xhtml: s.append(elt.qname.localName) # force xhtml prefix to be default else: s.append(str(elt.qname)) if start or empty: for n,v in sorted(elt.items(), key=lambda item: item[0]): if n in uriAttrs: v = resolveHtmlUri(elt, n, v) s.append(' {0}="{1}"'.format(qname(elt,n), v.replace("&","&").replace('"','"'))) if not start and empty: s.append('/') s.append('>') return ''.join(s)