SQL Server: GROUP BY de dos niveles con salida XML

Tengo una tabla de datos jerárquicos que trato de seleccionar como un único valor XML agrupado:

Columnas:Id, Type, SubType, SubSubType

Data de muestra:

Id  Type                    Subtype                    SubSubType
1   Product Documentation   Brochures                  Functional Brochures
2   Product Documentation   Brochures                  Fliers
3   Product Documentation   Data Sheets and Catalogs   Data Sheets
4   Product Documentation   Data Sheets and Catalogs   Catalogs
5   Other Documentation     Other classification       User Guides

Para los datos anteriores, me gustaría mostrar el siguiente xml:

<AllTypes>
    <Type name="Product Documentation">
        <SubType name="Brochures">
            <SubSubType name="Functional Brochures"/>
            <SubSubType name="Fliers"/>
        </SubType>
        <SubType name="Data Sheets and Catalogs">
            <SubSubType name="Data Sheets"/>
            <SubSubType name="Catalogs"/>
        </SubType>
    </Type>
    <Type name="Other Documentation">
        <SubType name="Other classification">
            <SubSubType name="User Guides"/>
        </SubType>
    </Type>
</AllTypes>

es decir, una única estructura xml que contiene todas las filas de la tabla anterior, agrupadas por la primera columna (Tipo) y agrupadas por la segunda columna (Subtipo).

Respuestas a la pregunta(2)

Su respuesta a la pregunta