I know the definition of difference between XML attribute starting with `@` and `?`. The first one refers to global style attribute, while the second one applies to the same attribute within the concrete style. In short.

However, I am still not firm on when to use one or another qualifier. Namely, what is the difference between 

```
android:textAppearance="?android:attr/textAppearanceLarge"
android:textAppearance="@android:style/TextAppearance.Large"

```

This is the same attribute, right?!

Then, why there is

```
android:textColor="@android:color/black"

```

and **there is not** anything like 

```
android:textColor="?android:color/black" (or similar variance)

```

Lastly, is the usage of `?` the same as using an attribute from `DeviceDefault` group?

I hope someone will be able to clarify these things for me. I am sure I am over-complicating things and that is why I need clarification.