5 Содержимое элементов абзаца
править
5.1 Основное текстовое содержимое
править
Потомки элементов абзаца составляют текстовое содержимое любого документа. Весь текст в элементах абзаца или их потомках — текстовое содержимое, за некоторыми исключениями, описанными ниже. Это значительно упрощает преобразование в другие форматы, так как при преобразовании могут игнорироваться любые дочерние элементы элемента абзаца и обрабатываться только их текстовое содержимое, при этом получается правильное отображение текстового содержимого.
Элементами текстового содержимого, не содержащими внутренних текстовых дочерних элементов, являются:
- Обычные и концевые сноски (см. раздел 5.3). Обычные и концевые сноски содержат текстовое содержимое, но обычно отображаются вне основного текста, например в конце страницы или документа.
- Транскрипции (см. раздел 5.4). Тексты транскрипции обычно отображаются над или под основным текстом.
- Аннотации (см. раздел 5.5). Аннотации обычно не отображаются.
<define name="paragraph-content" combine="choice">
<text/>
</define>
Если элемент абзаца или любой его дочерний элемент содержит пробельные символы, то они объединяются; другими словами, они обрабатываются тем же путем, как их обрабатывает [HTML4]. Следующие символы кодовой таблицы [UNICODE] приводятся к символу ПРОБЕЛ:
- ГОРИЗОНТАЛЬНАЯ ТАБУЛЯЦИЯ (0x0009)
- ВОЗВРАТ КАРЕТКИ (0x000D)
- ПЕРЕВОД СТРОКИ (0x000A)
- ПРОБЕЛ (0x0020)
Кроме того, эти символы игнорируются, если предыдущий символ является пробельным. Предыдущий символ может находится в таком же элементе, в родительском элементе или предыдущем элементе того же уровня при условии, что он находится в том же элементе абзаца. В этом случае пробельные символы обрабатываются так, как описано выше.
Обработка пробельных символов имеет место в пределах следующих элементов:
<text:p>
<text:h>
<text:span>
<text:a>
<text:ref-point>
<text:ref-point-start>
<text:ref-point-end>
<text:bookmark>
<text:bookmark-start>
<text:bookmark-end>
Примечание — В [XSL] обработку пробельных символов текста абзаца можно активировать за счет добавления атрибута fo:white-space="collapse"
элементу <fo:block>
, который соответствует элементу абзаца.
Обычно подряд идущие пробельные символы в абзаце сокращаются. Поэтому в XML есть специальный элемент используемый для отображения символов ПРОБЕЛ (0x0020) кодовой таблицы [UNICODE].
Этот элемент использует необязательный атрибут text:c
для определения числа символов ПРОБЕЛ, которое представляет элемент. Если атрибут text:c
пропущен, то считается что символ ПРОБЕЛ один.
Элемент требуется для представления второго и всех последующих символов ПРОБЕЛ в последовательности символов ПРОБЕЛ. Не считается ошибкой, если символ, предшествующий элементу, будет не пробельный символ, но хорошей практикой считается использование данного элемента для второго и всех последующих символов ПРОБЕЛ в последовательности. Таким образом, приложение распознает один пробельный символ без распознания данного элемента.
<define name="paragraph-content" combine="choice">
<element name="text:s">
<optional>
<attribute name="text:c">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
</element>
</define>
Элемент <text:tab>
представляет символ табуляции в кодовой таблице [UNICODE] ГОРИЗОНТАЛЬНАЯ ТАБУЛЯЦИЯ (0x0009) в заголовках и абзацах. Элемент <text:tab>
резервирует пространство от текущей позиции до следующего табулостопа, как определено в стиле абзаца.
<define name="paragraph-content" combine="choice">
<element name="text:tab">
<ref name="text-tab-attr"/>
</element>
</define>
Для определения того, на какой табулостоп переместится символ табуляции, необходима информация о разметке. Чтобы не ориентированные на разметку приложения могли проще определять эту информацию, приложения могут формировать атрибут text:tab-ref
, указывающий на связь символа табуляции с табулостопом в текущем стиле абзаца. Он содержит количество табулостопов на которые ссылается символ табуляции. Нулевая позиция имеет особое значение и указывает на начальный отступ абзаца.
<define name="text-tab-attr">
<optional>
<attribute name="text:tab-ref">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
</define>
Примечание — Атрибут text:tab-ref
является только подсказкой для помощи не ориентированных на разметку приложениям с целью определения связи символов табуляции с табулостопом. Ориентированные на разметку приложения должны определить позиции табуляции, исключительно основываясь на информации о стилях.
Атрибут <text:line-break>
определяет разрыв строки в заголовке или абзаце.
<define name="paragraph-content" combine="choice">
<element name="text:line-break">
<empty/>
</element>
</define>
5.1.2 Мягкие переносы, переносы и неразрывные пробелы
править
Мягкие переносы, переносы и неразрывные пробелы в кодовой таблице [UNICODE] представлены следующими символами:
Символ в кодовой таблице [UNICODE]
|
Представление
|
SOFT HYPHEN (00AD)
|
Мягкий перенос
|
NON-BREAKING HYPHEN (2011)
|
Неразрывный дефис
|
NO-BREAK SPACE (00A0)
|
Неразрывный пробел
|
5.1.3 Текст с присвоенными атрибутами
править
Элемент <text:span>
представляет части текста, которым присвоены атрибуты, с использованием определенного текстового стиля или класса. Содержимым этого элемента является текст, использующий текстовый стиль.
Имя текстового стиля или текстового класса записываются в атрибуты text:style-name
или text:class-names
, соответственно, прикрепленные к элементу <text:span>
. Эти атрибуты должны ссылаться на текстовые стили или классы.
Атрибут text:style-name
описывает один текстовый стиль. Атрибут text:class-names
содержит список имен текстовых стилей, разделенных пробелами. Указанные текстовые стили применяются в той последовательности, в которой они содержатся в списке. Если представлены атрибуты text:style-name
и text:class-names
, стиль, на который ссылается атрибут text:style-name
, обрабатывается как первый стиль в списке text:class-names
. Соответствующему спецификации приложению следует поддерживать атрибут text:class-names
, а также сохранять его при редактировании.
Элементы <text:span>
могут быть вложенными.
Пробельные символы, содержащиеся в этом элементе, объединяются.
<define name="paragraph-content" combine="choice">
<element name="text:span">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
<optional>
<attribute name="text:class-names">
<ref name="styleNameRefs"/>
</attribute>
</optional>
<zeroOrMore>
<ref name="paragraph-content"/>
</zeroOrMore>
</element>
</define>
Пример — Текстовый стиль в документах OpenDocument:
<text:p>
The last word of this sentence is
<text:span text:style-name="emphasize">emphasized</text:span>.
</text:p>
Гиперссылки в текстовом документе описываются элементом <text:a>
.
Этот элемент также содержит элемент таблицы событий <office:event-listeners>
, который содержит события, связанные с гиперссылками. См. раздел 12.4 для получения дополнительной информации об элементе таблицы событий.
<define name="paragraph-content" combine="choice">
<element name="text:a">
<ref name="text-a-attlist"/>
<optional>
<ref name="office-event-listeners"/>
</optional>
<zeroOrMore>
<ref name="paragraph-content"/>
</zeroOrMore>
</element>
</define>
С элементом <text:a>
могут быть связаны следующие атрибуты:
- имя;
- адрес ссылки;
- целевой фрейм;
- стили текста.
Гиперссылка может иметь имя, но оно не обязательно. Атрибут office:name
определяет имя гиперссылки, если таковое присутствует. Это имя может служить целью для других гиперссылок.
<define name="text-a-attlist" combine="interleave">
<optional>
<attribute name="office:name">
<ref name="string"/>
</attribute>
</optional>
</define>
Атрибут xlink:href
определяет URL цели ссылки.
<define name="text-a-attlist" combine="interleave">
<attribute name="xlink:href">
<ref name="anyURI"/>
</attribute>
<optional>
<attribute name="xlink:type" a:defaultValue="simple">
<value>simple</value>
</attribute>
</optional>
<optional>
<attribute name="xlink:actuate" a:defaultValue="onRequest">
<value>onRequest</value>
</attribute>
</optional>
</define>
Атрибут office:target-frame-name
определяет целевой фрейм ссылки. Этот атрибут может принимать следующие значения:
_self
— документ по ссылке заменяет содержимое текущего фрейма;
_blank
— документ по ссылке открывается в новом фрейме;
_parent
— документ по ссылке открывается в родительском по отношению к текущему документу фрейме;
_top
— документ по ссылке отображается в самом верхнем фрейме, это фрейм, который содержит текущей фрейм в качестве дочернего, но который не содержится внутри никакого другого фрейма;
- имя фрейма — документ по ссылке отображается в заданном фрейме. Если фрейм с таким именем отсутствует, будет создан новый фрейм с заданным именем.
Для соответствия спецификации XLink добавлен дополнительный атрибут xlink:show
элементу <text:a>
. Если значением атрибута является _blank
, то значение атрибута xlink:show
будет new
. Если значением атрибута является одно из других возможных, то значение атрибута xlink:show
будет replace
(см. [XLink]).
<define name="text-a-attlist" combine="interleave">
<optional>
<attribute name="office:target-frame-name">
<ref name="targetFrameName"/>
</attribute>
</optional>
<optional>
<attribute name="xlink:show">
<choice>
<value>new</value>
<value>replace</value>
</choice>
</attribute>
</optional>
</define>
Каждая ссылка имеет два стиля текста.
- Если ссылка не посещалась, то стиль текста, определенный атрибутом
text:style-name
, применяется к тексту гиперссылки.
- Если ссылка посещалась, то стиль текста, определенный атрибутом
text:visited-style-name
, применяется к тексту гиперссылки.
<define name="text-a-attlist" combine="interleave">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
<optional>
<attribute name="text:visited-style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
</define>
5.2 Закладки и перекрестные ссылки
править
Закладки могут помечать текстовую позицию или диапазон текста. Текстовый диапазон может начинаться в любой текстовой позиции и заканчиваться в другой текстовой позиции. В частности, закладка может начинаться в середине одного абзаца, а заканчиваться в середине другого. Элемент XML, используемый для представления закладки, изменяется в зависимости от ее типа следующим образом:
<text:bookmark>
— для пометки одной текстовой позиции;
<text:bookmark-start>
— для пометки начала текстового диапазона;
<text:bookmark-end>
— для пометки конца текстового диапазона.
Для каждого элемента <text:bookmark-start>
должен быть элемент <text:bookmark-end>
в том же текстовом потоке, использующем тот же атрибут text:name
, и наоборот. Элемент <text:bookmark-start>
должен предшествовать элементу <text:bookmark-end>
.
<define name="paragraph-content" combine="choice">
<choice>
<element name="text:bookmark">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
<element name="text:bookmark-start">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
<element name="text:bookmark-end">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
</choice>
</define>
<text:p>
<text:bookmark text:name="Mark 1"/>There is a text mark in front of this
paragraph.
<text:bookmark-start text:name="Mark 2"/>In front of this paragraph there
is
the start of a bookmark.
</text:p>
<text:p>
This bookmark ends
<text:bookmark-end text:name="Mark 2"/>
amid this sentence.
</text:p>
Представление перекрестных ссылок основано на XML-представлении закладок.
Есть два типа перекрестных ссылок.
- Перекрестная ссылка на точку, которая помечает специфическую позицию в тексте и определяется одним атрибутом
<text:reference-mark>
.
- Перекрестная ссылка на диапазон, которая помечает диапазон символов в тексте и определяется двумя элементами:
<text:reference-mark-start>
для пометки начала диапазона и <text:reference-mark-end>
для пометки конца диапазона.
Каждая перекрестная ссылка идентифицируется по ее имени, которое должно быть уникальным. В перекрестных ссылках на диапазон начальный и конечный элементы должны использовать одинаковое имя перекрестной ссылки.
Перекрестная ссылка на точку
править
Элемент <text:reference-mark>
определяет перекрестную ссылку на точку.
<define name="paragraph-content" combine="choice">
<element name="text:reference-mark">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
</define>
Перекрестная ссылка на диапазон
править
Элементы <text:reference-mark-start>
и <text:reference-mark-end>
определяют перекрестную ссылку на диапазон.
<define name="paragraph-content" combine="choice">
<choice>
<element name="text:reference-mark-start">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
<element name="text:reference-mark-end">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
</choice>
</define>
В схеме OpenDocument три элемента используются для представления перекрестных ссылок вместо одного, потому что перекрестные ссылки, представленные как один элемент XML:
- не поддерживают перекрывающиеся перекрестные ссылки;
- плохо взаимодействует с другими элементами.
Рассмотрим следующий пример.
Пример — Перекрывающиеся перекрестные ссылки на диапазон:
<text:p>
<text:reference-mark-start text:name="first"/>This is an
<text:reference-mark-start text:name="second"/>example of a sentence
<text:reference-mark-end text:name="first"/>with overlapping
references.
<text:reference-mark-end text:name="second"/>
</text:p>
Пример показывает две перекрестные ссылки, которые покрывают следующий текст:
перекрестная ссылка «first»
|
«This is an example of a sentence»
|
перекрестная ссылка «second»
|
«example of a sentence with overlapping references.»
|
Эта перекрывающая структура не может быть представлена с использованием одного элемента перекрестной ссылки, чтобы содержать тот текст, на который ссылаются. Точно также перекрестные ссылки, охватывающие несколько абзацев, создают такую же ситуацию, как и два перекрывающих XML-элемента. Получается, что в пределах текста, на который организована ссылка, есть метки начала или конца, но не обе.
Сноски состоят из элементов <text:note>
, которые встречаются в тексте на той позиции, к которой сноска привязана. То, как сноски нумеруются и отображаются, определяется элементом <text:notes-configuration>
, который встречается в разделе <office:styles>
.
Элемент сноски определяется как текстовые примечания, которые добавляются в определенные позиции текста. Общую реализацию концепции обычных и концевых сносок можно встретить в большинстве текстовых процессоров. Сноска содержит элемент цитирования и элементы основной части, которые формируют содержимое сносок.
В документах OpenDocument сноски представлены в виде, подобном обычным сноскам в [XSL]. В XSL первый потомок элемента сноски содержит цитату в виде элемента <fo:inline>
. Схема OpenDocument использует такую же структуру, но вводится элемент <text:note-citation>
. Вторая часть содержит основную часть сноски, так же как и в XSL.
В дополнение, в OpenDocument есть особенный элемент <text:notes-configuration>
. Чтобы в конфигурации сноски достичь такого же эффекта как и в XSL, каждый элемент цитаты сноски должен быть отформатирован соответственно.
<define name="paragraph-content" combine="choice">
<element name="text:note">
<ref name="text-note-class"/>
<optional>
<attribute name="text:id">
<ref name="string"/>
</attribute>
</optional>
<element name="text:note-citation">
<optional>
<attribute name="text:label">
<ref name="string"/>
</attribute>
</optional>
<text/>
</element>
<element name="text:note-body">
<zeroOrMore>
<ref name="text-content"/>
</zeroOrMore>
</element>
</element>
</define>
Каждая сноска принадлежит классу, который определяет особенности ее отображения. Поддерживаются два класса сносок: обычные и концевые.
<define name="text-note-class">
<attribute name="text:note-class">
<choice>
<value>footnote</value>
<value>endnote</value>
</choice>
</attribute>
</define>
Ссылочный идентификатор обычной сноски
править
Ссылочный идентификатор обычной сноски используется ссылкой на обычную сноску для идентификации обычной сноски, на которую ссылаются.
Элемент <text:note-citation>
содержит отформатированный цитатный элемент сноски, равно как и отформатированный номер или строку.
Цитатные элементы сноски могут быть маркированы или нумерованы. Если они нумеруются, то номер выбирается и форматируется автоматически, в соответствии с элементом конфигурации сноски. Если они маркированы, то пользователь должен задать маркер для каждой сноски, вставленной в документ.
Маркер хранится в атрибуте text:label
элемента <text:note-citation>
.
Элемент <text:note-body>
содержит актуальное содержимое обычной сноски. У него нет никаких атрибутов.
Схема разрешает включение сносок в основную часть сноски. Хотя это может быть применимо для будущих типов сносок, но это не применимо для обычных и концевых сносок. Приложения, соответствующие спецификации, могут поддерживать, а могут и не поддерживать такие вложенные сноски.
Пример — Обычная сноска:
<text:p>
This paragraph contains a footnote
<text:note text:note-class="footnote" text:id="ftn001">
<text:note-citation>1</text:note-citation>
<text:note-body>
<text:p>
This footnote has a generated sequence number
</text:p>
</text:note-body>
</text:note>
.
</text:p>
<text:p>
This paragraph contains a footnote
<text:note text:note-class="footnote" text:id="ftn002">
<text:note-citation text:label="*">*</text:note-citation>
<text:note-body>
<text:p>
This footnote has a fixed citation
</text:p>
</text:note-body>
</text:note>
, too
</text:p>
Транскрипция — это дополнительный текст, который отображается выше или ниже основного текста. Назначение транскрипции — пояснять основной текст или давать дополнительную информацию о его произношении.
Есть два элемента, которые могут содержаться в элементе <text:ruby>
:
- основа транскрипции;
- текст транскрипции.
Элемент <text:ruby-base>
содержит текст, который комментируется. Он содержит любой элемент содержимого абзаца, например текстовые диапазоны. Атрибут text:style-name
элемента ссылается на стиль транскрипции, который определяет форматирующие атрибуты транскрипции (см. раздел 14.8.4).
Элемент <text:ruby-text>
содержит текст комментария. Он может содержать только простой текст. Атрибут text:style-name
элемента ссылается на текстовый стиль, который определяет форматирующие атрибуты, используемые для текста.
<define name="paragraph-content" combine="choice">
<element name="text:ruby">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
<element name="text:ruby-base">
<ref name="paragraph-content"/>
</element>
<element name="text:ruby-text">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
<text/>
</element>
</element>
</define>
Формат OpenDocument позволяет добавлять аннотацию к элементам абзаца. См. раздел 12.1 для получения детальной информации по аннотациям.
<define name="paragraph-content" combine="choice">
<ref name="office-annotation"/>
</define>
Индексные метки используются для пометки фрагментов с целью включения в текстовые индексы. Они имею схожую структуру с закладками и перекрестными ссылками. Детально они описаны в разделе 7.1 вместе с текстовыми индексами.
5.7 Отслеживание изменений и метки изменений
править
Абзацы также могут содержать метки отслеживания изменений. Они уже описаны в разделе об отслеживании изменений (см. раздел 4.6) и упоминаются в данном разделе для полноты.
<define name="paragraph-content" combine="choice">
<ref name="change-marks"/>
</define>
5.8 Внедренные графические объекты и текстовые блоки
править
В пределах текстовых документов изображения, вставленные объекты и другие графические объекты могут быть привязаны к абзацу, к символу или как символ. Если они привязаны к абзацу, то отображаются в пределах абзаца в произвольном месте. Если они привязаны к символу или как символ, то они отображаются в пределах абзаца в определенной позиции, к которой они прикреплены. См. раздел 9.2 для получения детальной информации о графических объектах и раздел 9.2.16 об их привязке.
<define name="paragraph-content" combine="choice">
<choice>
<ref name="shape"/>
<ref name="draw-a"/>
</choice>
</define>
|
Это произведение не охраняется авторским правом. В соответствии со статьёй 1259 Гражданского кодекса Российской Федерации не являются объектами авторских прав официальные документы государственных органов и органов местного самоуправления муниципальных образований, в том числе законы, другие нормативные акты, судебные решения, иные материалы законодательного, административного и судебного характера, официальные документы международных организаций, а также их официальные переводы; государственные символы и знаки (флаги, гербы, ордена, денежные знаки и тому подобное), а также символы и знаки муниципальных образований; произведения народного творчества (фольклор), не имеющие конкретных авторов; сообщения о событиях и фактах, имеющие исключительно информационный характер (сообщения о новостях дня, программы телепередач, расписания движения транспортных средств и тому подобное).
|
|
|