ГОСТ Р ИСО/МЭК 26300—2010/Раздел 5

ГОСТ Р ИСО/МЭК 26300—2010 «Информационная технология. Формат Open Document для офисных приложений (OpenDocument) v1.0» — Раздел 5


5 Содержимое элементов абзаца

править

5.1 Основное текстовое содержимое

править

Потомки элементов абзаца составляют текстовое содержимое любого документа. Весь текст в элементах абзаца или их потомках — текстовое содержимое, за некоторыми исключениями, описанными ниже. Это значительно упрощает преобразование в другие форматы, так как при преобразовании могут игнорироваться любые дочерние элементы элемента абзаца и обрабатываться только их текстовое содержимое, при этом получается правильное отображение текстового содержимого.

Элементами текстового содержимого, не содержащими внутренних текстовых дочерних элементов, являются:

  • Обычные и концевые сноски (см. раздел 5.3). Обычные и концевые сноски содержат текстовое содержимое, но обычно отображаются вне основного текста, например в конце страницы или документа.
  • Транскрипции (см. раздел 5.4). Тексты транскрипции обычно отображаются над или под основным текстом.
  • Аннотации (см. раздел 5.5). Аннотации обычно не отображаются.
<define name="paragraph-content" combine="choice">
    <text/>
</define>

5.1.1 Пробельные символы

править

Если элемент абзаца или любой его дочерний элемент содержит пробельные символы, то они объединяются; другими словами, они обрабатываются тем же путем, как их обрабатывает [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>

5.1.4 Гиперссылки

править

Гиперссылки в текстовом документе описываются элементом <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 Закладки и перекрестные ссылки

править

5.2.1 Закладки

править

Закладки могут помечать текстовую позицию или диапазон текста. Текстовый диапазон может начинаться в любой текстовой позиции и заканчиваться в другой текстовой позиции. В частности, закладка может начинаться в середине одного абзаца, а заканчиваться в середине другого. Элемент 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>

5.2.2 Перекрестные ссылки

править

Представление перекрестных ссылок основано на 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-элемента. Получается, что в пределах текста, на который организована ссылка, есть метки начала или конца, но не обе.

5.3 Сноски

править

Сноски состоят из элементов <text:note>, которые встречаются в тексте на той позиции, к которой сноска привязана. То, как сноски нумеруются и отображаются, определяется элементом <text:notes-configuration>, который встречается в разделе <office:styles>.

5.3.1 Элемент сноски

править

Элемент сноски определяется как текстовые примечания, которые добавляются в определенные позиции текста. Общую реализацию концепции обычных и концевых сносок можно встретить в большинстве текстовых процессоров. Сноска содержит элемент цитирования и элементы основной части, которые формируют содержимое сносок.

В документах 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>

5.4 Транскрипция

править

Транскрипция — это дополнительный текст, который отображается выше или ниже основного текста. Назначение транскрипции — пояснять основной текст или давать дополнительную информацию о его произношении.

Есть два элемента, которые могут содержаться в элементе <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>

5.5 Аннотации к тексту

править

Формат OpenDocument позволяет добавлять аннотацию к элементам абзаца. См. раздел 12.1 для получения детальной информации по аннотациям.

<define name="paragraph-content" combine="choice">
    <ref name="office-annotation"/>
</define>

5.6 Индексные метки

править

Индексные метки используются для пометки фрагментов с целью включения в текстовые индексы. Они имею схожую структуру с закладками и перекрестными ссылками. Детально они описаны в разделе 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 Гражданского кодекса Российской Федерации не являются объектами авторских прав официальные документы государственных органов и органов местного самоуправления муниципальных образований, в том числе законы, другие нормативные акты, судебные решения, иные материалы законодательного, административного и судебного характера, официальные документы международных организаций, а также их официальные переводы; государственные символы и знаки (флаги, гербы, ордена, денежные знаки и тому подобное), а также символы и знаки муниципальных образований; произведения народного творчества (фольклор), не имеющие конкретных авторов; сообщения о событиях и фактах, имеющие исключительно информационный характер (сообщения о новостях дня, программы телепередач, расписания движения транспортных средств и тому подобное).
Россия