$products tanımının hemen öncesinde tanımladığınız değişkenin başında $ işareti yok sanırım.
Sevgili @mgsmus o kadar güzel bir örnek vermiş ki bundan daha güzel bir best practice yok sanırım.
Dilerseniz farklı bir yöntem olarak;
$products = Product::with('category')->get();
ile ürün ve kategorileri view dosyasına gönderip blade içinde bu işlemleri yapmayı deneyebilirsiniz.
Blade dosyanızın ilk satırı:
<?= '<'.'?'.'xml version="1.0" encoding="UTF-8"?>'."\n"; ?>
şeklinde olmalı yoksa tarayıcılar bunun xml olduğunu anlamayacaktır.
Örnek teşkil etmesi amacıyla laravel-sitemap paketini inceleyebilirsiniz.