See if this helps
select
MainLock.Process.value('@id', 'varchar(100)') AS LockID,
OwnerList.Owner.value('@id', 'varchar(200)') AS ProcessId,
MainLock.Process.value('local-name(.)','varchar(100)') AS LockType,
MainLock.Process.value('@objectname','sysname') AS ObjectName,
OwnerList.Owner.value('@mode', 'varchar(10)') AS LockMode
from @DeadlockGraph.nodes('/deadlock-list/deadlock/resource-list') AS Lock(list)
OUTER APPLY Lock.list.nodes('(pagelock,keylock,ridlock,objectlock,exchangeEvent)') AS MainLock(Process)
OUTER APPLY MainLock.Process.nodes('owner-list/owner') AS OwnerList(Owner)
;
____________________________________________________
Deja View - The strange feeling that somewhere, sometime you've optimised this query before
How to get the best help on a forum
http://www.sqlservercentral.com/articles/Best+Practices/61537