как создать узел-заглушку (document.createElement ('div') - или использовать эквивалент вашей библиотеки), заполняя его строкой xml (через innerHTML) и вызывая простую рекурсивную функцию для корневого элемента / или элемента-заглушки в случае, если у вас нет корня. Функция будет вызывать себя для всех дочерних узлов.
Вы могли бы затем синтаксически выделить на этом пути, убедитесь, что разметка хорошо сформирована (выполняется автоматически браузером при добавлении через innerHTML) и т. Д. Это не будет 't быть таким кодом и, вероятно, достаточно быстро.
Вы можете посмотреть в sys.types или использовать TYPE_ID:
IF TYPE_ID(N'MyType') IS NULL ...
Просто предостережение: использование type_id не проверит, что тип является табличным типом - только то, что тип с таким именем существует. В остальном запрос gbn, вероятно, лучше.
IF EXISTS (SELECT * FROM sys.types WHERE is_table_type = 1 AND name = 'MyType')
--stuff
sys.types... они не являются объектами, скопированными в схему, поэтому их не будет в sys.objects
Update, Mar 2013
Вы можете использовать TYPE_ID тоже
IF EXISTS(SELECT 1 FROM sys.types WHERE name = 'Person' AND is_table_type = 1 AND SCHEMA_ID('VAB') = schema_id)
DROP TYPE VAB.Person;
go
CREATE TYPE VAB.Person AS TABLE
( PersonID INT
,FirstName VARCHAR(255)
,MiddleName VARCHAR(255)
,LastName VARCHAR(255)
,PreferredName VARCHAR(255)
);