                     break
                 }
 
-                let source = StringAttribute(name: "href", value: url.absoluteString)
-                let node = ElementNode(type: .a, attributes: [source])
+                let representation = attributes[LinkFormatter.htmlRepresentationKey] as? HTMLElementRepresentation
+                let node = representation?.toNode() ?? ElementNode(type: .a)
+                node.updateAttribute(named: "href", value: url.absoluteString)
+
                 block(node)
 
             case NSStrikethroughStyleAttributeName:
-                let node = ElementNode(type: .strike)
+                let representation = attributes[StrikethroughFormatter.htmlRepresentationKey] as? HTMLElementRepresentation
+                let node = representation?.toNode() ?? ElementNode(type: .strike)
+
                 block(node)
 
             case NSUnderlineStyleAttributeName:
-                let node = ElementNode(type: .u)
+                let representation = attributes[UnderlineFormatter.htmlRepresentationKey] as? HTMLElementRepresentation
+                let node = representation?.toNode() ?? ElementNode(type: .u)
+
                 block(node)
 
             case UnsupportedHTMLAttributeName:


    /// Extracts the class attribute from an ImageAttachment Instance.
    ///
    func imageClassAttribute(_ attachment: ImageAttachment) -> StringAttribute? {
        var style = String()
        if attachment.alignment != .center {
            style += attachment.alignment.htmlString()

                    break
                }

                if font.containsTraits(.traitBold) {
                    let representation = attributes[BoldFormatter.htmlRepresentationKey] as? HTMLElementRepresentation
                    let node = representation?.toNode() ?? ElementNode(type: .b)
                    
                    block(node)
                }

                if font.containsTraits(.traitItalic) {
                    let representation = attributes[ItalicFormatter.htmlRepresentationKey] as? HTMLElementRepresentation
                    let node = representation?.toNode() ?? ElementNode(type: .i)

                    block(node)
                }

