Strange thing with sp_xml_preparedocument. Why it not take value from name_x tag ?
declare @pXml nvarchar(max)
set @pXml = '<item>
<name_x>_x</name_x>
<name_1x>_1x</name_1x>
<name_y>_y</name_y>
</item>'
DECLARE @hDoc INT
EXEC sp_xml_preparedocument @hDoc OUTPUT, @pXml
SELECT name_x, name_1x, name_y
FROM OPENXML(@hDoc, '/item', 2)
WITH
(
name_x NVARCHAR(5),
name_1x NVARCHAR(5),
name_y NVARCHAR(5)
) xDoc
EXEC sp_xml_removedocument @hDoc