                 case .italic: return [self.rawValue, "em"]
                 case .striketrough: return [self.rawValue, "strike"]
                 case .underline: return [self.rawValue, "u"]
-                case .link: return [self.rawValue, "a"]
+                case .link: return [self.rawValue]
                 }
             }
         }

    typealias TextNode = Libxml2.TextNode
    typealias RootNode = Libxml2.RootNode

    enum ElementTypes: String {
        case bold = "b"
        case italic = "em"

        case underline = "u"
        case link = "a"

        // Some HTML elements can have more than one valid representation so we list all possible variations here.
        var equivalentNames: [String] {
            get {
                switch self {
