API DOM можно использовать для создания и форматирования неупорядоченных, упорядоченных и многоуровневых списков в программе создания отчетов.
Списки представлены как mlreportgen.dom.UnorderedList или mlreportgen.dom.OrderedList объекты. Элементы списка представлены как mlreportgen.dom.ListItem объекты.
Можно создать список из массива MATLAB ®, который задает элементы списка, или создать список по одному элементу за раз. Создание списка из массива - самый простой подход. Создание списка по одному элементу полезно, когда элементы содержат несколько элементов, таких как абзац и таблица.
Форматирование списков и элементов списков с использованием стилей, определенных шаблоном, или программно с использованием объектов форматирования.
Можно создать список из одномерного числового массива, строкового массива, массива символьных векторов, массива ячеек или категориального массива. Укажите элементы списка в массиве ячеек, если элементы имеют разные типы.
Чтобы создать неупорядоченный список из массива, добавьте массив непосредственно в документ или часть документа. append способ:
Создает mlreportgen.dom.UnorderedList объект.
Создает mlreportgen.dom.ListItem для каждого элемента массива.
Добавляет ListItem объекты в UnorderedList объект и UnorderedList объект для документа или детали документа.
Например, этот код создает неупорядоченный список из массива строк:
import mlreportgen.dom.* d = Document("fruit","html"); ul = append(d,["apples","oranges","bananas"]); close(d); rptview(d);
Вот список в созданном отчете:

Примечание
Чтобы создать список путем добавления массива к документу или детали документа, массив должен быть 1 на n. При добавлении массива n-by-1 к документу или детали документа создается таблица, а не список.
Либо создайте неупорядоченный список, предоставив массив в качестве входных данных для mlreportegen.dom.UnorderedList конструктор. Например:
import mlreportgen.dom.* d = Document("fruit","html"); ul = UnorderedList(["apples","oranges","bananas"]); ul = append(d,ul); close(d); rptview(d);
Конструктор создает mlreportgen.dom.ListItem объект для каждого элемента массива и добавляет ListItem объекты в UnorderedList объект.
Чтобы создать упорядоченный список из массива, предоставьте массив в качестве входных данных для mlreportegen.dom.OrderedList конструктор. Конструктор создает mlreportgen.dom.ListItem для каждого элемента массива и добавляет ListItem объекты в OrderedList объект. Например, этот код создает упорядоченный список из массива строк.
import mlreportgen.dom.* d = Document("weekdays","html"); ol = OrderedList(["Monday","Tuesday","Wednesday","Thursday","Friday"]); append(d,ol); close(d); rptview(d);
Вот список в созданном отчете:

Укажите элементы списка в массиве ячеек, если элементы имеют разные типы. В массив ячеек можно включать векторы символов, строки, числа и некоторые объекты DOM, такие как mlreportgen.dom.Text объект. Список объектов DOM, которые можно включить, см. в разделе mlreportgen.dom.ListItem.
Например, этот код создает упорядоченный список из массива ячеек, который содержит векторы символов и mlreportgen.dom.ExternalLink объект.
import mlreportgen.dom.* d = Document('myreport','html'); ol = UnorderedList({... 'apples',... 'oranges',... ExternalLink('https://en.wikipedia.org/wiki/Mango',... 'mango')}); append(d,ol); close(d); rptview(d);
Вот список в созданном отчете:

Вместо указания всего списка как массива можно указать каждый элемент списка как mlreportgen.dom.ListItem и добавить ListItem объекты в mlreportgen.UnorderedList или mlreportgen.OrderedList объект. Этот подход полезен, если элементы списка содержат несколько абзацев, сочетание абзацев и таблиц или другие комбинации элементов документа.
Например, этот код создает список, в котором элементы списка состоят из абзаца и таблицы.
import mlreportgen.dom.* d = Document('magicsquares','html'); ol = UnorderedList(); item1 = ListItem(Paragraph('magic(2)')); append(item1,Table(magic(2))); append(ol,item1); item2 = ListItem(Paragraph('magic(3)')); append(item2,Table(magic(3))); append(ol,item2); append(d,ol); close(d); rptview(d);
Вот список в созданном отчете:

Многоуровневый список - это список, содержащий вложенные списки. Можно вложить любую комбинацию упорядоченных и неупорядоченных списков до девяти уровней вложенности.
Для создания многоуровневых списков можно использовать следующие подходы. Создаваемый список выглядит одинаково для каждого подхода, но представления DOM API различаются.
Создайте многоуровневый список из массивов ячеек, моделирующих иерархию списка. При таком подходе DOM API представляет сублист как дочерний элемент списка, который его содержит.
Создание многоуровневого списка по одному за раз с помощью mlreportgen.dom.UnorderedList, mlreportgen.dom.OrderedList, и mlreportgen.dom.ListItem объекты. Добавление подсписка к списку или элементу списка. При добавлении подсписка в список DOM API представляет подсписок как дочерний элемент списка. При добавлении сублиста к элементу списка DOM API представляет сублист как дочерний элемент элемента списка.
Чтобы создать многоуровневый список из массивов ячеек, используйте один из следующих подходов:
Если подсписок является неупорядоченным списком, его можно представить в виде массива 1 на n ячеек, который является элементом массива 1 на n ячеек, представляющего список, имеющий один уровень вверх. Например, этот код представляет подсписок как массив ячеек, который является третьим элементом массива ячеек, который представляет список верхнего уровня.
import mlreportgen.dom.*; d = Document('nestedListReport','html'); topList = OrderedList({... 'Start MATLAB',... 'Create a rank 3 or 4 magic square',... {'magic(3)',... % sublist is third element 'magic(4)'},... 'Close MATLAB'}); append(d,topList); close(d); rptview(d);
Вот список в созданном отчете:

Если подсписок является упорядоченным списком, создайте mlreportgen.dom.OrderedList объект из массива ячеек 1 на n, представляющего подсписок. Включить OrderedList объект в качестве элемента массива ячеек, представляющего список на один уровень вверх. Например, этот код создает OrderedList объект из массива ячеек, который представляет подсписок и включает объект в качестве третьего элемента массива ячеек, который используется для создания списка верхнего уровня.
import mlreportgen.dom.*; d = Document('orderedListReport','html'); topList = OrderedList({'Start MATLAB', ... 'Create a rank 3 or 4 magic square',... OrderedList({... % sublist is third element 'magic(3)',... 'magic(4)'}),... 'Close MATLAB'}); append(d,topList); close(d); rptview(d);
Вот список в созданном отчете:

В двух предыдущих примерах DOM API представляет сублист в качестве третьего нижестоящего элемента списка верхнего уровня. Для доступа к подсписку используйте Children свойства списка верхнего уровня.
topList.Children(3)
Если элементы подсписка содержат несколько абзацев, сочетание абзацев и таблиц или другие комбинации элементов документа, создайте mlreportgen.dom.ListItem объекты и добавление их к mlreportgen.dom.UnorderedList или mlreportgen.dom.OrderedList объект. Затем добавьте подсписок к списку или элементу списка.
В этом примере подсписок добавляется в список верхнего уровня в качестве третьего элемента списка. Элементы в подсписке состоят из текста и таблицы.
import mlreportgen.dom.*; d = Document('orderedListReport','html'); subList = UnorderedList; subListItem1 = ListItem('>> magic(3)'); table = append(subListItem1,Table(magic(3))); table.Width = '1in'; append(subList,subListItem1); subListItem2 = ListItem('>> magic(4)'); table = append(subListItem2,Table(magic(4))); table.Width = '1in'; append(subList,subListItem2); topList = OrderedList(); append(topList,ListItem('Start MATLAB')); append(topList,ListItem('Create a rank 3 or 4 magic square')); append(topList,subList); % sublist is item 3 of topList append(topList,ListItem('Close MATLAB')); append(d,topList); close(d); rptview(d);
Вот список в созданном отчете:

DOM API представляет сублист в качестве третьего нижестоящего элемента списка верхнего уровня. Для доступа к подсписку используйте Children свойства списка верхнего уровня.
topList.Children(3)
Вместо добавления сублиста к списку его можно добавить к элементу списка. В следующем примере подсписок добавляется ко второму элементу списка верхнего уровня. Созданный список выглядит так же, как и в предыдущем примере.
import mlreportgen.dom.*; d = Document('orderedListReport','html'); topList = OrderedList({ ... 'Start MATLAB', ... 'Create a rank 3 or 4 magic square:', ... 'Close MATLAB'}); subList = UnorderedList; subListItem1 = ListItem('>> magic(3)'); table = append(subListItem1,Table(magic(3))); table.Width = '1in'; append(subList,subListItem1); subListItem2 = ListItem('>> magic(4)'); table = append(subListItem2,Table(magic(4))); table.Width = '1in'; append(subList,subListItem2); % Append the sublist to the second list item topListItem2 = topList.Children(2); append(topListItem2, subList); append(d, topList); close(d); rptview(d);
DOM API представляет сублист как второй дочерний элемент второго элемента списка верхнего уровня. Для доступа к подсписку используйте следующий код:
topList.Children(2).Children(2)
Стили списков, определенные в шаблоне, можно использовать для указания отступа каждого уровня списка и типа маркера или числового формата, используемого для визуализации элементов списка.
Чтобы использовать определяемый шаблоном стиль списка для форматирования списка, задайте StyleName свойства списка с именем стиля. Например, этот код указывает, что имя стиля списка: MyListStyle.
import mlreportgen.dom.*; d = Document('myListReport','html'); list = append(d,{'first item',... OrderedList({'step 1','step 2'}),'second item'}); list.StyleName = 'MyListStyle'; close(d); rptview(d);
Для документов Microsoft ® Word указанный стиль списка должен быть определен в шаблоне, назначенном документу.
Примечание
Стиль списка определяет способ визуализации элементов списка независимо от типа списка. Если стиль списка не указан, интерфейс DOM API использует стиль списка по умолчанию, который визуализирует список в соответствии с типом. Например, стиль списка по умолчанию для неупорядоченных списков использует маркеры для визуализации элементов списка. При указании стиля списка для mlreportegen.dom.UnorderedList объект, нумерующий элементы, нумеруются элементы, даже если тип объекта не упорядочен.
Сведения о создании шаблона Word см. в разделе Создание шаблона Microsoft Word.
Чтобы определить стиль списка в шаблоне Word, выполните следующие действия.
Откройте файл шаблона Word одним из следующих способов:
В MATLAB на панели Текущая папка (Current Folder) щелкните правой кнопкой мыши файл шаблона и выберите Открыть вне MATLAB (Open Outside MATLAB).
За пределами MATLAB щелкните файл правой кнопкой мыши и выберите «Открыть».
Примечание
Не открывайте файл шаблона Word двойным щелчком. При двойном щелчке по файлу открывается файл документа Word, в котором используется шаблон.
В Word на вкладке Главная в группе Абзац щелкните значок Многоуровневый список
, а затем щелкните Определить новый стиль списка.
Задайте имя стиля.
Укажите форматирование, например стиль маркера и цвет для каждого уровня списка.
Выберите Создать документы на основе этого шаблона.
Нажмите кнопку ОК, чтобы сохранить шаблон.
Пример определения стиля списка Word см. в разделе Пользовательский список стилевых слов.
Чтобы определить стиль списка в каскадной таблице стилей (CSS) для шаблона HTML или PDF, используйте ul для неупорядоченных стилей списка и ol элемент для упорядоченных стилей списка. Можно использовать селектор нижестоящих элементов (>) для определения стилей многоуровневых списков. См. разделы Изменение стилей в шаблонах HTML и Изменение стилей в шаблонах PDF.
Например, этот код CSS определяет внешний вид двухуровневого неупорядоченного списка, который может содержать упорядоченные или неупорядоченные подсписки.
ul.MyUnorderedList {
list-style-type:disc;
}
ul.MyUnorderedList > ul {
list-style-type:circle;
}
ul.MyUnorderedList > ol {
list-style-type:decimal;
}
Для получения информации о редактировании CSS см. документацию, такую как обучающая программа W3Schools.com CSS.
Программно форматировать списки путем добавления объектов форматирования, таких как mlreportgen.dom.Color объект, к Style свойство mlreportgen.dom.UnorderedList, mlreportgen.dom.OrderedList, или mlreportgen.dom.ListItem объект. Форматирование, указанное в Style переопределяет стиль, определенный шаблоном.
Для списков в отчетах PDF и HTML можно указать тип маркера или тип нумерации с помощью mlreportgen.dom.ListStyleType форматировать объект.
Например, этот код создает зеленый упорядоченный список со строчными буквенными маркерами. Третий элемент списка имеет синий цвет и курсив.
import mlreportgen.dom.* d = Document('myreport','html'); ol = OrderedList(["one", "two", "three"]); ol.Style = {Color('Green'),ListStyleType('lower-alpha')}; ol.Children(3).Style = {Color('blue'),Italic(true)}; append(d,ol); close(d); rptview(d);
Вот список в созданном отчете:

Объекты DOM, используемые для создания элементов списка, также можно форматировать с помощью свойств формата или объектов форматирования, связанных с объектом. Например, эти форматы кода mlreportgen.dom.Text прежде чем они будут использованы для создания списка.
import mlreportgen.dom.* d = Document('myreport','html'); li1 = Text('red'); li1.Color = 'Red'; li2 = Text('blue'); li2.Color = 'Blue'; append(d,{li1, li2}); close(d); rptview(d);
Вот список в созданном отчете:
![]()
В зависимости от способа создания многоуровневого списка подсписок может быть дочерним элементом родительского списка или дочерним элементом предыдущего элемента списка в родительском списке. См. раздел Создание многоуровневого списка.
Если сублист является дочерним элементом элемента списка родительского списка, сублист наследует форматирование от элемента списка. Например, этот код делает подсписок дочерним элементом второго элемента списка в родительском списке.
import mlreportgen.dom.*; d = Document('nestedListReport','html'); parentlist = OrderedList(); li1 = ListItem('List Item 1'); li2 = ListItem('List Item 2'); li2.Style = [li2.Style {Color('red')}]; sublist = UnorderedList({'Sublist Item 1' 'Sublist Item 2'}); append(li2,sublist); append(parentlist,li1); append(parentlist,li2); append(d,parentlist); close(d); rptview(d);
Сублист наследует красный цвет от элемента списка, который его содержит.

Если вы не хотите, чтобы сублист наследовал форматирование от предыдущего элемента списка, отформатируйте абзац или текст в предыдущем элементе списка вместо форматирования элемента списка. Например:
import mlreportgen.dom.*; d = Document('nestedListReport','html'); parentlist = OrderedList(); li1 = ListItem('List Item 1'); txt = Text('List Item 2'); txt.Color = 'red'; li2 = ListItem(txt); sublist = UnorderedList({'Sublist Item 1' 'Sublist Item 2'}); append(parentlist,li1); append(parentlist,li2); append(parentlist,sublist); append(d,parentlist); close(d); rptview(d);
import mlreportgen.dom.*; d = Document('nestedListReport','html'); parentlist = OrderedList(); li1 = ListItem('List Item 1'); li2 = ListItem('List Item 2'); li2.Style = [li2.Style {Color('red')}]; sublist = UnorderedList({'Sublist Item 1' 'Sublist Item 2'}); append(parentlist,li1); append(parentlist,li2); append(parentlist,sublist); append(d,parentlist); close(d); rptview(d);
Второй элемент списка родительского списка имеет красный цвет, а подсписок - черный.

mlreportgen.dom.ListItem | mlreportgen.dom.ListStyleType | mlreportgen.dom.OrderedList | mlreportgen.dom.UnorderedList