Я на самом деле немного удивлен, что вы получаете
<body><termEntry ...
с использованием LIBNAME XML. Я могу быть склонен генерировать XML вручную из шага DATA.
LIBNAME XML с style = generic (по умолчанию) будет выводить форму
<dsname>
<columnname>column value</columnname>
</dsname>
<dsname>
<columnname>column value</columnname>
</dsname>
..etc...
т. Е. Один тег <dsname>
для каждой записи во входном файле с тегом под ним для каждой переменной в наборе данных. Для того, чтобы SAS мог затем прочитать результат обратно, в нем будет отсутствовать любое значение, поэтому, если переменная в наборе данных является строкой и содержит какой-либо из символов <
, &
и т. Д., Это не "запутает" XML. Так что в вашем случае, где переменная в наборе данных имеет значение что-то вроде
<termEntry id=1>...</termEntry>
тогда я ожидаю, что вывод из libname XML будет выглядеть примерно так:
<TEXT>
<body> <termEntry id=1></termEntry> </body>
</TEXT
Варианты, по-видимому, заключаются либо в том, чтобы понять, как использовать XMLMap с LIBNAME XML для генерации желаемого XML (может быть невозможно в зависимости от используемой версии SAS), либо в генерации XML вручную с использованием DATA шаг:
data test_JK;
termEntry_st = "<termEntry id=1>";
termEntry_ed = "</termEntry>";
TS_Status = "<note type='TS_Status'>ELC TERM present in OCS_Help_xml OCS_properties</note>";
langset_en_st = "<langSet lang='eng-us'>";
langset_en_ed = "</langSet>";
nttG = "<ntig><termGrp><term>ARM</term></termGrp></ntig>";
data _null_;
set test_JK end=e;
file "tmp.xml";
if _n_ eq 1 then do;
put "<something>";
end;
put " <text>";
put " <body>" +(-1) termEntry_st;
put TS_Status +(-1) langset_en_st +(-1) nttG +(-1) langset_en_ed +(-1) termEntry_ed + (-1) "</body>";
put " </text>";
if e then do;
put "</something>";
end;
run;