"concerns about the name" ? Do you mean the last else if ? It might be sufficient to do it like this:

    if ( attributeData.type == ENUM__NodeType__JOINT ) {
      newNode->setType ( COLLADAFW::Node::JOINT );
      if ( attributeData.sid )
        newNode->setSid( (const char*) attributeData.sid );
      else if ( attributeData.id )
        newNode->setSid( (const char*) attributeData.id );
      else
        // create a warning message and do not assign a joint from the node (ignore the entry...)
    }

And ... since all attributes are declared as optional in the doc (1.4.1), either something is missing in the specification that clearly tells a JOINT node must have an id or a sid. Or JOINT Nodes without id/sid are legal and need to be handled somehow.

Otherwise i have no idea what you mean :(