При друку текстового документа на старих телетайпу перехід на новий рядок здійснювався за рахунок переведення рядка (переміщення по вертикалі) і повернення каретки (переміщення по горизонталі). Причому кожна дія мало свій код в ASCII. З метою збільшення продуктивності багато програмісти використовували для позначення кінця рядка в текстовому файлі тільки один з цих кодів. Наприклад, якщо всі домовляться позначати кінець рядка тільки символом повернення каретки, то в текстових файлах можна буде заощадити вісім бітів на кожному рядку. Під час друку файлу необхідно тільки пам'ятати, що кожен раз, коли зустрічається символ повернення каретки, потрібно також вставляти символ перекладу рядка.
Такі угоди існують і в сучасних системах. Зокрема, в операційній системі UNIX передбачається, що кінець рядка позначається тільки символом переведення рядка, тоді як в системах, розроблених Apple Computer, Inc. використовується тільки символ повернення каретки, а в операційних системах Microsoft необхідні обидва символи - повернення каретки і переведення рядка. В результаті для передачі файлів з однієї системи в іншу необхідно виконувати перетворення. У цьому полягає відмінність між текстовими файлами і бінарними файлами при передачі їх в Інтернеті по протоколу FTP (File Transfer Protocol, протокол передачі файлів). Під час використання FTP текстовий файл - це файл, для якого потрібно таке перетворення, а бінарний файл передається без перетворення. Зокрема, файли, які створені текстовими процесорами, повинні передаватися як бінарні, так як в цих файлах використовуються власні кошти кодування тексту.
Такий файл називається текстовий файлом (text file). Звичайно текстові файли кодуються за допомогою таблиці кодів ASCII, тобто для запису одного символу потрібно один байт. Однак сьогодні популярність Unicode призводить до появи текстових файлів, де для кодування одного символу потрібно два байта. Таким чином, загальний термін текстовий файл іноді замінюється більш точними визначеннями файл ASCII або файл Unicode, що відображають лежить в основі систему кодування.
Простота текстових файлів зробила їх популярним вибором для різних додатків. Дійсно, текстовий файл часто є структурою, що лежить в основі реалізації більш складних послідовних файлів, наприклад файлу записів співробітників. Потрібно лише розробити уніфікований формат подання інформації про кожного співробітника в вигляді текстового рядка, кодування інформації відповідно до цього формату і послідовного запису результуючих записів співробітників в один рядок тексту. Наприклад, можна створити простий файл співробітників, вирішивши, що кожен запис співробітника - це рядок з 31 символу, де поле довжиною 25 символів містить ім'я співробітника (якщо ім'я коротше 25 символів, що залишився простір заповнюється пробілами), а наступні 6 символів - його ідентифікаційний номер . Кінцевий файл буде виглядати як довга рядок кодованих символів, в якій кожен блок з 31 символу представляє інформацію про один працівника (рис. 8.4). Інформацію можна отримувати з файлу в термінах логічних записів довжиною 31 символ.
Окремі поля в кожному блоці розрізняються згідно з уніфікованим форматом, відповідно до якого створювалися блоки.
Простота текстових файлів привела до розробки способів кодування нетекстового матеріалу, наприклад музичних творів, у вигляді текстових файлів. На перший погляд система нотних станів, тактів і нот, за допомогою яких зазвичай представляються музичні тексти, не відповідає посимвольного формату текстових файлів. Але цю проблему можна вирішити, розробивши альтернативну систему позначень. Точніше, ми можемо позначати початок нотного стану як
можна закодувати музичний уривок, наведений на рис. 8.5. За допомогою цієї системи позначень музичні уривки можна кодувати, змінювати, записувати і передавати через Інтернет у вигляді текстових файлів. Крім того, можна написати програму, яка зможе представляти вміст цих файлів в традиційній музичній формі і навіть програвати музику на синтезаторі.
Зверніть увагу, що наша система кодування музики виконана в певному стилі. Ми поділяємо терміни (звані тегами), що ідентифікують компоненти, символами «<» и «>». Таким же чином ми позначаємо початок і кінець структур (наприклад, нотного стану, знаків при ключі, нот і тактів) - закриває тег відрізняється слешем (тобто тег
Розширювана мова розмітки XML (extensible Markup Language) - це стандартизований стиль (схожий на стиль в нашому музичному прикладі) для розробки систем позначень та подання даних у вигляді текстових файлів. (Насправді XML - це спрощений варіант більш старого набору стандартів під назвою Standard Generalized Markup Language, SGML.) Дотримуючись стандартам XML, були розроблені системи позначення, звані мовами розмітки, для подання математичних виразів (MathML), мультимедійних презентацій (SMIL), музики (4ML) і веб-сторінок (XHTML). (XHTML - це покращений варіант HTML, що задовольняє стандартам XML. Наприклад, HTML передбачає, що початок нового параграфа, що позначається тегом <р>, завершує попередній параграф, але в XHTML перед початком нового параграфа необхідно явно завершувати поточний параграф тегом <р>.)
XML - це хороший приклад стандартів, розроблених для додатків різних видів. Замість індивідуальних, не пов'язаних між собою мов розмітки для кодування різних типів документів, наприклад музики, тексту і математичних виразів, XML пропонує загальний стандарт мов розмітки, за допомогою якого можна розробити мови для різноманітних додатків. Єдиний стиль мов розмітки, створених подібним чином, дозволяє комбінувати їх для отримання мов, придатних для складних додатків, наприклад текстових документів, що містять музичні фрагменти і математичні вирази.