find_op_local_identifier (OpenID)

    # File lib/openid/consumer/discovery.rb, line 243
      def self.find_op_local_identifier(service_element, type_uris)
        # Find the OP-Local Identifier for this xrd:Service element.
        #
        # This considers openid:Delegate to be a synonym for xrd:LocalID
        # if both OpenID 1.X and OpenID 2.0 types are present. If only
        # OpenID 1.X is present, it returns the value of
        # openid:Delegate. If only OpenID 2.0 is present, it returns the
        # value of xrd:LocalID. If there is more than one LocalID tag and
        # the values are different, it raises a DiscoveryFailure. This is
        # also triggered when the xrd:LocalID and openid:Delegate tags are
        # different.

        # XXX: Test this function on its own!

        # Build the list of tags that could contain the OP-Local
        # Identifier
        local_id_tags = []
        if type_uris.member?(OPENID_1_1_TYPE) or
            type_uris.member?(OPENID_1_0_TYPE)
          # local_id_tags << Yadis::nsTag(OPENID_1_0_NS, 'openid', 'Delegate')
          service_element.add_namespace('openid', OPENID_1_0_NS)
          local_id_tags << "openid:Delegate"
        end

        if type_uris.member?(OPENID_2_0_TYPE)
          # local_id_tags.append(Yadis::nsTag(XRD_NS_2_0, 'xrd', 'LocalID'))
          service_element.add_namespace('xrd', Yadis::XRD_NS_2_0)
          local_id_tags << "xrd:LocalID"
        end

        # Walk through all the matching tags and make sure that they all
        # have the same value
        local_id = nil
        local_id_tags.each { |local_id_tag|
          service_element.each_element(local_id_tag) { |local_id_element|
            if local_id.nil?
              local_id = local_id_element.text
            elsif local_id != local_id_element.text
              format = 'More than one %s tag found in one service element'
              message = sprintf(format, local_id_tag)
              raise DiscoveryFailure.new(message, nil)
            end
          }
        }

        return local_id
      end