|
declare default element namespace 'http://пф.рф/ВС/СЗВ-М/2017-01-01';
|
|
declare namespace УТ = "http://пф.рф/унифицированныеТипы/2014-01-01";
|
|
declare namespace АФ = "http://пф.рф/АФ";
|
|
declare namespace АФ3 = "http://пф.рф/АФ/2017-01-01";
|
|
declare variable $document as document-node() external;
|
|
declare function local:nodePosition($node as node()?) as node()
|
|
{
|
|
|
|
element {xs:QName("Результат")}
|
|
{
|
|
string-join(
|
|
for $ancestor in $node/ancestor-or-self::*
|
|
let $sibsOfSameName := $ancestor/preceding-sibling::*[name()=name($ancestor)]
|
|
let $followingSibling := $ancestor/following-sibling::*[name()=name($ancestor)]
|
|
return concat(name($ancestor),
|
|
if (count($sibsOfSameName) = 0 and count($followingSibling) = 0) then '' else concat('[',count($sibsOfSameName) + 1,']')),
|
|
'/'
|
|
)
|
|
}
|
|
|
|
};
|
|
declare function local:result($path as xs:string, $expected as xs:anyAtomicType, $objectName as xs:string, $objectValue as xs:anyAtomicType) as node()
|
|
{
|
|
|
|
if ($path = '0') then
|
|
element {xs:QName("Результат")}
|
|
{
|
|
$path
|
|
}
|
|
else
|
|
element {xs:QName("Результат")}
|
|
{
|
|
element {xs:QName("ПутьДоЭлемента")}
|
|
{
|
|
$path
|
|
},
|
|
element {xs:QName("ОжидаемоеЗначение")}
|
|
{
|
|
$expected
|
|
},
|
|
element {xs:QName("Объект")}
|
|
{
|
|
element {xs:QName("Наименование")}
|
|
{
|
|
$objectName
|
|
},
|
|
element {xs:QName("Значение")}
|
|
{
|
|
$objectValue
|
|
}
|
|
}
|
|
}
|
|
|
|
};
|
|
declare function local:getResult($res as item()*) as item()*
|
|
{
|
|
if (exists($res)) then $res else local:result('0','','','')
|
|
};
|
|
<БлокПроверок ID="АФ.КСФ.1" name="Проверка структуры файла">
|
|
<Проверка ID="1">
|
|
<Описание>Проверяемый файл должен быть корректно заполненным XML-документом</Описание>
|
|
<РезультатЗапроса>
|
|
{
|
|
local:getResult(())}
|
|
</РезультатЗапроса>
|
|
<КодРезультата>50</КодРезультата>
|
|
</Проверка>
|
|
</БлокПроверок>
|
|
|