Как включить элементы, которые указывают флаг в битовой маске на битовую маску? У меня есть следующий XML-схемы:Как объединить XML-элементы, содержащие битовые флаги, с одним значением
Как можно, например, превратить этот XML
<Flags>
<Flag>1</Flag>
<Flag>3</Flag>
</Flags>
В этот выходной XML с помощью XSLT?
<Bitmask>10</Bitmask>
(10 = 1010 бинарное - бит 1 и 3 установлены)
В Procedual языке программирования я бы просто сделать что-то вроде этого:
var bitmask = 0;
foreach(var falg in flags) {
bitmask = bitmask + pow(2,flag);
}
Но это не представляется возможным в xslt, потому что переменная xsl: static. Есть ли другой подход или как это можно сделать?
XSLT 1.0 или 2.0, а если бывший процессор XSLT? –
XSLT 2.0 Я использую .NET XslCompiledTransform как процессор: http://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform.aspx – Jeldrik
Если вы используете XslCompiledTransform, то это 1,0, а не 2,0. –