question 1: yes, PHP is a good choice for this.
question 2: yes, XSLT would need to load the entire XML file. If your XML is huge, you're right that's not a great solution.
ASP is really no different than PHP. XSLT transformation is a little faster in ASP C#.NET, only if the stylesheet is compiled... but for selecting nodes with XPATH they're pretty much equivalent. Since you're more comfortable with PHP, that sounds like the best path for you.
You might want to consider using a relational database rather than an XML file. If you're receiving the data as XML, you can write a script that parses it and updates your database. It's a bit more work, but I'll guarantee SQL will find products faster than a complex XPATH expression.
Welcome to WebmasterWorld!