                     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:

    ///
    func imageAttachmentToNodes(_ attachment: ImageAttachment) -> [Node] {
        var attributes = [Attribute]()
        if let attribute = imageSourceAttribute(attachment) {
            attributes.append(attribute)
        }

        if let attribute = imageClassAttribute(attachment) {
            attributes.append(attribute)
        }



    /// Extracts the src attribute from an ImageAttachment Instance.
    ///
    private func imageSourceAttribute(from attachment: ImageAttachment) -> StringAttribute? {
        guard let source = attachment.url?.absoluteString else {
            return nil
        }
