Estilos de Android: Diferencia entre 'style = “@ android: style / XYZ”' y 'style = “? Android: attr / XYZ”'?

Estoy tratando de diseñar botones para parecerme a los que pregunto enBotones inferiores minimalistas de estilo ICS de ancho completo de AndroidVistas.

He tenido éxito, con el siguiente xml para cualquier persona interesada:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="bottom"
        android:divider="@android:drawable/divider_horizontal_dark"
        android:gravity="bottom"
        android:orientation="vertical"
        android:paddingTop="16dip"
        android:showDividers="beginning|end" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:measureWithLargestChild="true"
            android:orientation="horizontal"
            android:divider="@android:drawable/divider_horizontal_dark"
            android:showDividers="middle" >                             


            <Button
                android:id="@+id/cancel_button"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_weight="1"
                android:maxLines="2"
                android:text="@string/cancel_button" />

            <Button
                android:id="@+id/login_button"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_weight="1"
                android:filterTouchesWhenObscured="true"
                android:maxLines="2"
                android:text="@string/login_button" />

        </LinearLayout>
    </LinearLayout>

Una pregunta sin embargo. La asistencia de contenido de eclipse no tiene idea de lo que está sucediendo con la siguiente resolución de recursos:

style="?android:attr/buttonBarButtonStyle"

Estoy familiarizado con la resolución típica (de la que es consciente la asistencia de contenido de eclipse)

style=@android/style/...

... pero no tengo clara la diferencia entre los dos. Parece que algunos atributos de estilo aparecen en uno pero no en el otro. Por ejemplo, lo siguiente no se resuelve en nada:

style=@android:attr/buttonBarStyle

y tampoco lo hace esto:

style="@android:style/buttonBarStyle

Así que supongo dos preguntas aquí:

¿Por qué la diferencia en la sintaxis de referencia de recursos?¿Por qué la confusa categoría de estilos en una categoría attr?¿Para qué se usa nuevamente la categoría attr?

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta