Aspose::Words::Markup::SdtType перечисление
Содержание
[
Скрывать
]SdtType enum
Указывает тип узла структурного тега документа (SDT).
enum class SdtType
Значения
| Имя | Значение | Описание |
|---|---|---|
| None | 0 | Тип не назначен для SDT. |
| Библиография | 1 | SDT представляет запись библиографии. |
| Citation | 2 | SDT представляет цитату. |
| Equation | 3 | SDT представляет уравнение. |
| DropDownList | 4 | SDT представляет выпадающий список при отображении в документе. |
| ComboBox | 5 | SDT представляет комбинированный список при отображении в документе. |
| Дата | 6 | SDT представляет средство выбора даты при отображении в документе. |
| BuildingBlockGallery | 7 | SDT представляет тип галереи строительных блоков. |
| DocPartObj | 8 | SDT представляет тип части документа. |
| Group | 9 | SDT представляет ограниченную группировку при отображении в документе. |
| Picture | 10 | SDT представляет изображение при отображении в документе. |
| RichText | 11 | SDT представляет поле с форматированным текстом при отображении в документе. |
| PlainText | 12 | SDT представляет простое текстовое поле при отображении в документе. |
| Checkbox | 13 | SDT представляет флажок при отображении в документе. |
| RepeatingSection | 14 | SDT представляет тип повторяющегося раздела при отображении в документе. |
| RepeatingSectionItem | 15 | SDT представляет элемент повторяющегося раздела. |
| EntityPicker | 16 | SDT представляет средство выбора сущности, позволяющее пользователю выбрать экземпляр внешнего типа контента. |
Примеры
Показывает, как работать со стилями для элементов управления содержимым.
auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);
// Ниже представлены два способа применения стиля из документа к structured document tag.
// 1 - Применить объект стиля из коллекции стилей документа:
System::SharedPtr<Aspose::Words::Style> quoteStyle = doc->get_Styles()->idx_get(Aspose::Words::StyleIdentifier::Quote);
auto sdtPlainText = System::MakeObject<Aspose::Words::Markup::StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::PlainText, Aspose::Words::Markup::MarkupLevel::Inline);
sdtPlainText->set_Style(quoteStyle);
// 2 - Ссылка на стиль в документе по имени:
auto sdtRichText = System::MakeObject<Aspose::Words::Markup::StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::RichText, Aspose::Words::Markup::MarkupLevel::Inline);
sdtRichText->set_StyleName(u"Quote");
builder->InsertNode(sdtPlainText);
builder->InsertNode(sdtRichText);
ASSERT_EQ(Aspose::Words::NodeType::StructuredDocumentTag, sdtPlainText->get_NodeType());
System::SharedPtr<Aspose::Words::NodeCollection> tags = doc->GetChildNodes(Aspose::Words::NodeType::StructuredDocumentTag, true);
for (auto&& node : System::IterateOver(tags))
{
auto sdt = System::ExplicitCast<Aspose::Words::Markup::StructuredDocumentTag>(node);
std::cout << sdt->get_WordOpenXMLMinimal() << std::endl;
ASSERT_EQ(Aspose::Words::StyleIdentifier::Quote, sdt->get_Style()->get_StyleIdentifier());
ASSERT_EQ(u"Quote", sdt->get_StyleName());
}
Показывает, как заполнить таблицу данными из XML‑части.
auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);
System::SharedPtr<Aspose::Words::Markup::CustomXmlPart> xmlPart = doc->get_CustomXmlParts()->Add(u"Books", System::String(u"<books>") + u"<book>" + u"<title>Everyday Italian</title>" + u"<author>Giada De Laurentiis</author>" + u"</book>" + u"<book>" + u"<title>The C Programming Language</title>" + u"<author>Brian W. Kernighan, Dennis M. Ritchie</author>" + u"</book>" + u"<book>" + u"<title>Learning XML</title>" + u"<author>Erik T. Ray</author>" + u"</book>" + u"</books>");
// Создайте заголовки для данных из XML‑контента.
System::SharedPtr<Aspose::Words::Tables::Table> table = builder->StartTable();
builder->InsertCell();
builder->Write(u"Title");
builder->InsertCell();
builder->Write(u"Author");
builder->EndRow();
builder->EndTable();
// Создайте таблицу с повторяющимся разделом внутри.
auto repeatingSectionSdt = System::MakeObject<Aspose::Words::Markup::StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::RepeatingSection, Aspose::Words::Markup::MarkupLevel::Row);
repeatingSectionSdt->get_XmlMapping()->SetMapping(xmlPart, u"/books[1]/book", System::String::Empty);
table->AppendChild<System::SharedPtr<Aspose::Words::Markup::StructuredDocumentTag>>(repeatingSectionSdt);
// Добавьте элемент повторяющегося раздела внутри повторяющегося раздела и пометьте его как строку.
// Эта таблица будет содержать строку для каждого элемента, который мы можем найти в XML‑документе
// используя XPath "/books[1]/book", из которых три.
auto repeatingSectionItemSdt = System::MakeObject<Aspose::Words::Markup::StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::RepeatingSectionItem, Aspose::Words::Markup::MarkupLevel::Row);
repeatingSectionSdt->AppendChild<System::SharedPtr<Aspose::Words::Markup::StructuredDocumentTag>>(repeatingSectionItemSdt);
auto row = System::MakeObject<Aspose::Words::Tables::Row>(doc);
repeatingSectionItemSdt->AppendChild<System::SharedPtr<Aspose::Words::Tables::Row>>(row);
// Отобразите XML‑данные в созданных ячейках таблицы для названия и автора каждой книги.
auto titleSdt = System::MakeObject<Aspose::Words::Markup::StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::PlainText, Aspose::Words::Markup::MarkupLevel::Cell);
titleSdt->get_XmlMapping()->SetMapping(xmlPart, u"/books[1]/book[1]/title[1]", System::String::Empty);
row->AppendChild<System::SharedPtr<Aspose::Words::Markup::StructuredDocumentTag>>(titleSdt);
auto authorSdt = System::MakeObject<Aspose::Words::Markup::StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::PlainText, Aspose::Words::Markup::MarkupLevel::Cell);
authorSdt->get_XmlMapping()->SetMapping(xmlPart, u"/books[1]/book[1]/author[1]", System::String::Empty);
row->AppendChild<System::SharedPtr<Aspose::Words::Markup::StructuredDocumentTag>>(authorSdt);
doc->Save(get_ArtifactsDir() + u"StructuredDocumentTag.RepeatingSectionItem.docx");
Показывает, как создать групповой структурированный тег документа на уровне строки.
auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);
System::SharedPtr<Aspose::Words::Tables::Table> table = builder->StartTable();
// Создайте групповой структурированный тег документа на уровне строки.
auto groupSdt = System::MakeObject<Aspose::Words::Markup::StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::Group, Aspose::Words::Markup::MarkupLevel::Row);
table->AppendChild<System::SharedPtr<Aspose::Words::Markup::StructuredDocumentTag>>(groupSdt);
groupSdt->set_IsShowingPlaceholderText(false);
groupSdt->RemoveAllChildren();
// Создайте дочернюю строку структурированного тега документа.
auto row = System::MakeObject<Aspose::Words::Tables::Row>(doc);
groupSdt->AppendChild<System::SharedPtr<Aspose::Words::Tables::Row>>(row);
auto cell = System::MakeObject<Aspose::Words::Tables::Cell>(doc);
row->AppendChild<System::SharedPtr<Aspose::Words::Tables::Cell>>(cell);
builder->EndTable();
// Вставьте содержимое ячейки.
cell->EnsureMinimum();
builder->MoveTo(cell->get_LastParagraph());
builder->Write(u"Lorem ipsum dolor.");
// Вставьте текст после таблицы.
builder->MoveTo(table->get_NextSibling());
builder->Write(u"Nulla blandit nisi.");
doc->Save(get_ArtifactsDir() + u"StructuredDocumentTag.SdtAtRowLevel.docx");
Показывает, как создать структурированный тег документа типа Citation.
auto doc = System::MakeObject<Aspose::Words::Document>();
auto sdt = System::MakeObject<Aspose::Words::Markup::StructuredDocumentTag>(doc, Aspose::Words::Markup::SdtType::Citation, Aspose::Words::Markup::MarkupLevel::Inline);
System::SharedPtr<Aspose::Words::Paragraph> paragraph = doc->get_FirstSection()->get_Body()->get_FirstParagraph();
paragraph->AppendChild<System::SharedPtr<Aspose::Words::Markup::StructuredDocumentTag>>(sdt);
// Создайте поле Citation.
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);
builder->MoveToParagraph(0, -1);
builder->InsertField(u"CITATION Ath22 \\l 1033 ", u"(John Lennon, 2022)");
// Переместите поле в структурированный тег документа.
while (sdt->get_NextSibling() != nullptr)
{
sdt->AppendChild<System::SharedPtr<Aspose::Words::Node>>(sdt->get_NextSibling());
}
doc->Save(get_ArtifactsDir() + u"StructuredDocumentTag.Citation.docx");
См. также
- Namespace Aspose::Words::Markup
- Library Aspose.Words for C++