Применение логики работы с отсутствующими данными
После преобразования измененной схемы
schema_complex.xml результирующий файл
functions_complex.xslt (листинг 8) имеет много новых элементов для поддержки логики работы с отсутствующими данными. Во-первых, тип Xschema, выданный формульной функцией, меняется с xs:double на xs:double?. Последний допускает пустую последовательность - аналог пустого значения в XPath 2.0. Во-вторых, добавляется специальный код, который помогает присвоить "пустой" статус каждому аргументу и применять правило(а), позволяющие получить результирующий "пустой" статус всей функции. В файл functions_complex.xslt добавлены соответствующие комментарии.
Все это может выглядеть слишком сложным, но любой язык определения формул должен задавать логику их вычисления в таком формате, который обрабатывающее приложение способно проанализировать и применить и который должен быть доступен для чтения. Например, документ XBRL Formula Requirements признает необходимость гибкого кодирования такой логики и предлагает использовать для этого подмножество ECMAScript или XPath 1.0. Обрабатывающее приложение затем осуществит компиляцию этого скрипта в свой выполняемый код. Но в рассматриваемом случае чистого XSLT-подхода формульная функция в файле functions_complex.xslt просто использует вспомогательные функции и некоторые дополнительные коды, находящиеся в том же файле, для применения вычислительной логики.