В предыдущих разделах мы достигли значительных успехов в представлении отчетной формы из нашего примера в виде отчета XBRL, но полного соответствия так и не получили. Сегодня на одного из наших разработчиков снизошло озарение: А давайте попробуем применить XBRL Dimensions! При взгляде на Главу 5 становится очевидно, что гендерные и возрастные группы могут быть представлены в виде измерений.  Базовая таксономия, создаваемая нами до сих пор, достигла версии sample-2006-01-05.xsd. Мы определим элементы доменов (domain member) и шаблоны (template) в отдельной таксономии sample-2006-01-05-dimension.xsd. Как и следовало ожидать, мы можем упростить нашу таксономию. Базовый концепт, который нам необходим – nr_employees. Однако, мы будем представлять его в различных контекстах измерений, также нам надо указать в отчете общее количество сотрудников в контексте без измерений. Для этих целей мы определим концепты nr_employees_by_gender, nr_employees_by_age и nr_employees_total, указав для них nr_employees в качестве значения атрибута substitutionGroup. Факты о количестве сотрудников будут представлены в разрезе нескольких измерений с использованием разных подстановок (substitutions) nr_employees для разделения измерений (и презентаций). Элементы доменов и таксономия шаблонов объединены в общую схему таксономии. Таксономия шаблонов импортирует несколько других схем: Схема xbrldi не используется в самой таксономии шаблонов, но используется в отчете, который в свою очередь ссылается на таксономию шаблонов. Чтобы максимально снизить зависимость отчета от модуля измерений, его импорт производится в таксономии шаблонов. Также, она ссылается на базовую таксономию, чтобы иметь связь с концептами. Как мы знаем, существуют два типа измерений – типизированные и явные. В этом разделе мы рассмотрим, как возрастные группы могут быть представлены в виде типизированного измерения. Прежде всего, нам нужен элемент для определения типа для age_group. Мы будем использовать простой тип с перечислением допустимых значений:  Имея тип, мы можем определить измерение возрастных групп, которое ссылается на тип в своем атрибуте typedDomainRef. Обратите внимание, что элемент абстрактный, что является обязательным требованием. Значением атрибута substitutionGroup указывается xbrldt:dimensionItem. Для разнообразия, в этом разделе покажем, как представить гендерные группы в виде явного измерения. Это означает, что мы должны определить набор концептов для элементов измерения и, собственно, для самого измерения.  Обратите внимание, что элемент с dimensionItem абстрактный, что является обязательным требованием. У концептов, предназначенных для элементов измерения, значением substitutionGroup указывается xbrli:item. Концепт gender выступает в качестве корня иерархии элементов измерения, остальные концепты являются элементами домена. Элементы помещаются в иерархию взаимосвязями domain-member, для которых мы создаем базу ссылок определений (definition linkbase). Она использует отдельную роль для группировки взаимосвязей и включается в схему таксономии. В базе ссылок мы используем роль и определяем локаторы концептов обычным образом.  Измерение имеет взаимосвязь dimension-domain со своим доменом. Элементы домена определяются взаимосвязями domain-member между локаторами концептов в базе ссылок определений.  Теперь, когда у нас есть базовая таксономия и таксономия элементов домена, мы можем объединить их гиперкубами в таксономии шаблонов.  Сначала мы определяем концепты гиперкубов в виде абстрактных элементов со значением hypercubeItem атрибута substitutionGroup. Создаем связи между базовыми концептами, гиперкубами и измерениями.  Аналогично для возрастных групп: Обратите внимание, что в ссылке должна использоваться роль, определенная в таксономии измерений – ageGroupDimension: Базы ссылок презентаций и ярлыков аналогичны тем, что мы рассматривали ранее, не будем повторять их здесь. Теперь, когда наша таксономия измерений готова, мы можем сделать связанный с ней отчет. Сначала определим контексты для общего количества сотрудников на начало и конец отчетного периода. Далее определим контексты для значений измерения возрастных групп. Изменение указывается в атрибуте dimension элемента xbrldi:typedMember. Значение измерения определяется как элемент sd:age_group_type – типа, определенного для измерения.  Теперь определяем контексты для значений гендерного измерения. Изменение указывается в атрибуте dimension элемента xbrldi:explicitMember. Значение измерения определяется ссылкой на элемент домена измерения.  Обратите внимание, что отчет ссылается на таксономию шаблонов, а не на базовую таксономию. Теперь мы можем передавать факты, каждый в своём контексте. Наше простое приложение для визуализации отчета не поддерживает измерения, поэтому отчет выглядит следующим образом:   После некоторых ручных корректировок – удаления неиспользуемых столбцов, упорядочивания остальных столбцов и добавления заголовков таблиц – мы можем взглянуть на несколько лучшую версию отчета, которую вы могли бы ожидать от приложения с поддержкой измерений:  Хранилища данных, автоматизация фин.отчетности