I tried the object_definition and it seems to work.
SELECT
object_id=s.object_id
,parent_name = CASE WHEN s.parent_id = 0 THEN 'DATABASE' ELSE QUOTENAME(OBJECT_SCHEMA_NAME(s.parent_id)) + '.' + QUOTENAME(OBJECT_NAME(s.parent_id)) END
,trigger_name = CASE WHEN s.parent_class = 1
THEN QUOTENAME(OBJECT_SCHEMA_NAME(s.object_id)) + '.' + QUOTENAME(OBJECT_NAME(s.object_id))
ELSE S.name
END
,s.is_disabled
,THE_DEFINITION = object_definition(s.object_id)
FROM sys.triggers s

example of copying an pasting of one of the database trigger definitions:
create trigger tr_MStran_alterview
on database
for ALTER_VIEW as
set ANSI_NULLS ON
set ANSI_PADDING ON
set ANSI_WARNINGS ON
set ARITHABORT ON
set CONCAT_NULL_YIELDS_NULL ON
set NUMERIC_ROUNDABORT OFF
set QUOTED_IDENTIFIER ON
declare @EventData xml
set @EventData=EventData()
exec sys.sp_MStran_ddlrepl @EventData, 2