Does a Sri Lankan national who holds a valid US visa need an airport transit visa to transit through an airport in Italy?
Citizens of some countries must have a Schengen airport transit visa to go through the airside zone of Schengen airports. This concerns the citizens of Sri Lanka, but also Afghanistan, Bangladesh, Democratic Republic of the Congo, Eritrea, Ethiopia, Ghana, Iran, Iraq, Nigeria, Pakistan, and Somalia.
For these citizens, exceptions exist if they hold a resident permit in some other country, namely the US, Canada, Andorra, Japan, or San Marino.
In your case, only the following US residence permits are accepted as valid forms to transit through the airport: form I-551, form I-327, a Resident Alien card, a permit to re-enter, or a valid temporary residence stamp in a valid passport.
If you have one of these documents, you will be allowed to TRANSIT through any Schengen airport (i.e. in Italy), but you should not leave the international zone (your origin and destination should be out of Schengen too).
If you plan to enter Italy or to fly to another Schengen country, you need a visa.
I hold a Sri lankan passport and I transited through Zurich last December. I had around a 9 hour transit. They did not ask me for a transit visa. I think it'll be fine as long as you have a booked flight ticket out of the country, alhough you cannot leave the transit waiting area.