Как сделать пробел в xml

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Разметка XML документа. XML атрибуты. Корень XML документа. Декларации в XML. Комментарии в XML. Синтаксис XML документа

Синтаксис XML документа, как декларировать XML документ, из чего состоит XML документ. Инструкции XML документа.

В первой статье, я как смог, так и объяснил, что такое синтаксис вообще и в XML документе в частности. Теперь предлагаю более подробно остановиться на данном вопросе, а так же рассмотреть, что такое декларация в XML и как декларировать XML документ. Синтаксис в XML на самом деле очень сложный, шаг влево, шаг в право и XML парсер вас уже не поймет.

Для начала, давайте рассмотри из чего состоит XML документ и соответственно рассмотрим синтаксис XML документа.

Пример XML документа:

Любой XML документ начинается с пролога или декларации. Что такое пролог в XML документе или иначе декларация XML документа — это начало XML документа, в примере это первая строка, как правило показывается, что это XML документ и указывается версия XML, а так же кодировка XML документа( ), на данный момент уже есть XML версии 1.1.

Обратите внимание на конструкцию пролога, так как в XML все очень жестко и структурировано, а именно на начало декларации( Пример процессинговых инструкций в XML документе:

В этом примере я указал пролог XML документа, затем указал, что необходимо сделать с XML документом, то есть отформатировать диск D, а затем уже пошли данные самого XML документа. Этих инструкций может быть бесконечно много, так как придумываете вы их самостоятельно для решения тех или иных задач. Как и в случае с XML тегами, никаких инструкции в XML не заложено, их ноль, но когда вы решаете определенные задачи вы придумываете эти инструкции самостоятельно.

Если скопировать данный пример в текстовый редактор(например, в редактор с подсветкой синтаксиса Notepad++), а затем открыть XML документ в браузере, то ничего не произойдет, так как браузер не поймет данную инструкцию, но если вы напишите программу, которая будет знать эту инструкцию, то после работы с данными находящимися в XML документе она отформатирует диск D. И так, можно сделать вывод, что в XML прологом документа называют все, что предшествует самим данным, то есть декларация XML документа и инструкции по обработке XML документа.

XML комментарии, как правильно писать комментарии в XML документе.

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

Естественно, чаще всего используются для того, что бы оставлять для себя и кого-то другого какие-то пометки и указания по самому XML документу. Синтаксис комментариев в XML, такой же как и в HTML комментариях, начинается комментарий с конструкции

style = "text-align: justify;" >

Блок кода, находящийся между , этими символами обрабатываться никак не будет. Таким образом вы можете отключать часть разметки XML документа, если вдруг возникнет необходимость посмотреть, что произойдет, но необходимости удалять код нет.

XML теги и XML элементы, правила написания XML тегов.

Из прошлой статьи, мы выяснили, что теги в XML только парные, то есть существует открывающий тег и обязательный ему закрывающий тег, XML теги регистрочувствительны, не важно в каком регистре вы пишите свой тег, важно, что если вы создали элемент people с открывающим тегом

, то закрывающий тег нужно будет писать в том же регистре

В название XML элементов не может быть пробелов, то есть вы не имеете права написать такой тег , пробелов в названиях быть не должно. Вместо пробелов можно использовать, дефисы, нижние подчеркивания, точки( ), все эти теги имеют право на существование, но пробелов в название XML тегов быть не должно!

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

По определению в XML не может быть одиночных тегов, любой тег должен быть закрыт. Одиночных тегов в XML нет в принципе, но бывает необходимость, когда по грамматике тег не будет иметь содержимое, то есть пустой элемент. То есть, иногда существует необходимость в XML элементах, в которых по смыслу никогда не будет содержимого, в таких случаях писать такие конструкции нет смысла( ).

Поэтому было придумано сокращение тегов в XML( ), обратите внимание, что это не одиночный тег, а просто сокращение записи( ) . , такая конструкция в XML называется самозакрывающийся тег, обратите внимание, что слэш стоит справа от названия тега и пробел между название тега и слэшом обязателен. То есть, записи и — это одно и то же, а когда анализатор встроенный в браузер их обработает, он покажет одно и то же, обычно вот так: .

XML атрибуты, как правильно писать XML атрибуты

Обратите внимание на самый первый пример, у тегов и имеются атрибуты, id и cm, в первом случае параметром является число-идентификатор, во втором случае единицы измерения роста — сантиметры. Все XML атрибуты вы придумываете самостоятельно(в отличие от HTML атрибутов), семантику и грамматику для XML атрибутов вы придумываете то же самостоятельно, то есть задаете для этих XML атрибутов смысл и правила.

Параметром или значением XML атрибута, может быть все, что угодно, все на что хватит вашей фантазии. А вот синтаксис у XML атрибутов строгий, значение атрибутов всегда должны быть в двойных кавычках, но некоторые парсеры XML допускают вольности и ставить одинарные кавычки, но лучше к данному подходу не привыкать. Как и в случае с XML тегами, XML атрибутов может быть бесконечно много.

Единицы измерения XML. Корневой XML элемент или корень XML документа.

В XML существует очень важное правило, минимальной единицей измерения является документ, один XML элемент это документ, и этот XML элемент является минимальной единицей измерения — всегда! Как это можно понять? XML документ всегда состоит из одного тега или элемента, по буржуйски этот тег называется root или корень XML документа, это означает, что у любого документа должен быть всегда один элемент(один тег), внутри него может быть все, что угодно, но один XML элемент в XML документе должен быть всегда.

В первом нашем примере корневым элементом является, элемент

, внутри него можно размещать все, что угодно, делать какие угодно ветвления и вложения, но создавать элемент уровня

Пример того как можно составлять XML документ:

В данном примере, элементы woman и man лежат внутри корневого XML элемента people, поэтому здесь ничего не нарушено и XML документ составлен правильно.

Пример того как нельзя составлять XML документ:

Так же не может быть XML документов состоящих только из пролога, в XML документе должен быть хотя бы один XML элемент.

Так писать XML документы нельзя:

Нельзя, потому что внутри XML документа должен быть один тег, а в данном случае нет ни одного тега. XML документа без корня существовать не может. Если вам интересно как создать пустой XML документ, то тут все очень просто.

Пример пустого XML документа:

Данный документ пустой и содержит один элемент(tag), то есть корень XML документа, поэтому он удовлетворяет XML стандарту. XML документ это всегда один главный тег, то есть все прологи, процесинговые инструкции, это все не так важно, XML документ — это один тег.

Типы данных в XML. CDATA и PCDATA.

Как я уже говорил, XML работает только с данными, в чистом XML данные одни — текст. XML документ состоит из элементов, внутри которых расположены текстовые данные. Любые данные находящиеся внутри XML документа рассматриваются как PCDATA (Parsed Character Data), это означает, что XML анализатор будет рассматривать данные, как парсируемые, анализируемые текстовые данные, то есть XML парсер анализирует не только теги и атрибуты, но и то что находится внутри них.

В связи с этим, в XML ввели еще один тип данных CDATA, которые анализатор XML вообще не трогает никак, грубо говоря мы ему указываем, что от этого места до этого просто текст, с которым ничего делать не надо.Что бы указать XML анализатору, что данные являются CDATA, надо сделать декларацию( )

Все, что размещено в этой конструкции( ), анализатор будет считать обычным текстом и не будет обращать на него внимание. Правильно эта конструкция называется секция CDATA, то есть раздел непарсируемых данных.

Пролог в XML документе. Кодировка XML документа. Русские XML теги. Кодировка Unicode.

Как я уже говорил, в XML документе есть пролог, в котором указывается язык XML, его версия и кодировка XML документа, но писать пролог не обязательно и все будет прекрасно работать, до тех пор пока вы не напишите хотя бы одну букву не входящую в латинский алфавит.

Все дело в том, что проблема с кодировкой в XML решена очень грамотно, в XML нет понятия битой кодировки, то есть каракозябры в XML вы никогда не увидите. Если вы не указываете в прологе кодировку, то в XML документе можно использовать только латинские буквы. Если вы в своем документе использовали хотя бы одну букву не латинского алфавита, то вы обязаны декларировать, какую кодировку вы используете, в XML документе кодировки могут быть любые.

Причем, после того, как вы укажете кодировку, символы из этой кодировки вы можете использовать любые и в любом месте XML документа, в название тегов, атрибутов, значений атрибутов, сами данные и так далее. Кодировку для XML документа, я бы посоветовал использовать UTF-8. Сейчас объясню почему.

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

Unicode, на самом деле один, но у него есть множество способов кодирования. UTF — это способ кодирования файлов. И вот этих UTF много, порядка 10 штук, можете поискать(UTF-7, UTF-8, UTF-16, UTF-32), цифра показывает минимальное число бит на один символ.

И так, нам необходимо указывать кодировку своих документов, причем указывать и для редактора и для анализатора, хорошо, если вы используете какой-нибудь Notepad++, где вы явно указываете кодировку и нет никаких проблем, а если вы используете обычный блокнот windows.

Предлагаю попробовать создать пустой документ, с расширением txt в обычном блокноте. И затем его сохранить. Размер этого документа будет ноль байт.

А теперь попробуйте пересохранить этот же пустой документ, но уже в кодировки Unicode, я выберу способ кодирования UTF-8, а теперь посмотрите, какой размер будет у пустого файла в кодировки UTF-8. Документ в кодировки UTF-8 будет весить 3 байта, но откуда взялись эти 3 байта, в документе по прежнему ничего нет, он пустой.

Так вот, блокноту нужно как-то подсказывать, какая кодировка используется, для этих целей в Unicode придумали Byte Order Mark, или сокращенно BOM, это метка порядка чередования байтов. Идея разработчиков Unicode очень проста. Поскольку в Unicode миллиарды различных символов, включая полную типографику, в которой только с десяток символов пробелов(узкий пробел, широкий пробел, неразрывный пробел, широкий пробел с переносом, неразрывный пробел и так далее). Среди множества этих пробелов есть один хитрый пробел, который называется неразрывный непечатный пробел, он применяется для разделение частей многосложных слов, его невидно, но он есть, как суслик, ты его не видишь, а он есть.

И не менее хитрые разработчики Unicode придумали такую штуку, если файл начинается с неразрывного непечатного пробела, программа поймет, во-первых, что вы используете Unicode, а во-вторых, способ кодирования. Неразрывный непечатный пробел и есть BOM, метка, которая показывает какую кодировку вы используете, а при способе кодирования UTF-8 неразрывный непечатный пробел кодируется тремя байтами, поэтому наш пустой документ имеет размер три байта.

Так вот, если этот BOM есть, любая виндовая программа определит, что документ закодирован в Unicode. Некоторые Unix интерпретаторы косячат, когда видят BOM, поэтому старайтесь кодировать все свои документы(не только XML) без BOM.

Для нас же(людей использующих русский язык) наличие BOM в начале XML документа означает, что мы можем использовать любые символы в документе явно не указывая кодировку. То есть парсер поймет какая кодировка у XML документу по наличию BOM, это единственное исключения, когда можно не писать для русского языка кодировку, но лучше не надейтесь на BOM и всегда указывайте кодировку.

XML подведение итогов. Well-formed document или хорошо сформированный XML документ.

И так, расширяемый язык разметки XML, применяется для хранения, обработки и передачи каких-либо данных. Во многих случаях вы даже не догадываетесь, что используется XML. Чистый XML имеет только синтаксис, синтаксис XML очень и очень жесткий, грамматику и семантику XML придумывает разработчик.

Так же мы поговорили про анализатор XML, который прежде чем, что-то делать с документом проверяет его и в случае малейшей ошибки должен отказаться от работы с XML документом. Well-formed document — это первый уровень правильности написания XML документа, грубо говоря — это соблюдение всех синтаксических правил.

Любой XML документ считается синтаксически правильно сформированным, если выполняются следующие синтаксические правила в XML документе:

  1. Документ XML соответствует своей кодировке и кодировка указанна внутри XML документ.
  2. XML документ имеет только один корневой элемент.
  3. Все элементы внутри корня XML документа корректно закрыты и вложены.
  4. Правильно соблюден регистр имен элементов и деклараций
  5. Значение XML атрибутов заключены в двойные кавычки.
  6. Внутри одного тега нет повторяющегося атрибута, один и тот же атрибут два раза в одном теге находиться не могут

Если все эти правила соблюдены в XML документе, то первый уровень проверки XML документа пройден — анализатор может его легко обработать, документ считается правильным или валидным. Собственно это и есть весь XML, кроме одной весчи, о которой мы поговорим в следующих статьях

В пособии представлено руководство по основным принципам использования языка разметки XML и связанным технологиям по дисциплине "Создание программного обеспечения инфокоммуникационных систем". Предназначено для студентов, обучающихся по всем профилям подготовки бакалавров направления: 210700 Инфокоммуникационные технологии и системы связи.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.

Я определил несколько строк в файле strings.xml . Теперь мне нужно поставить дополнительный пробел между некоторыми числами в строке. Когда я ввожу дополнительные символы пробела, это не отображается в приложении.

А если я поставлю дополнительный пробел, как здесь:

Это выглядит так же, как и в приложении. Как я могу внести символы пробела в строку XML?

для использования белого пробела в xml в качестве строки используйте . XML не будет принимать пробел как есть. Он будет обрезать пробел перед его установкой. Поэтому используйте вместо одиночного пробела.

Вставьте \u0020 непосредственно в XML для пустого места, которое вы хотите сохранить.

Андроид не'т поддерживать сохранение пробелов в конце строки в файл String.xml поэтому, если вы хотите пространство после строки, вы должны использовать этот Юникод между словами.

Это пространство в юникоде.

Как уже упоминалось правильный путь, чтобы иметь пространство в XML-файл с помощью \u0020 , который является символов Unicode для пространства.

Это должно также работать. Используйте кавычки, чтобы сохранить пространство

| ПРОСТРАНСТВО | ПРОСТРАНСТВО ТОНКИХ ВОЛОС ПРОСТРАНСТВА |

Вы можете использовать следующие

Положить что-нибудь в " и " в(цитата) с космосом, и она должна работать

Путь в файл string.xml чтобы указать единое пространство в Android-проекте.

Если вы пытаетесь дать пространство между 2 строки или строки в файл Андроид после этого в строке файла . Реализовать это раньше вашу "имя", которую вы хотите показать. \u0020\u0020 Для E. г.. \u0020\u0020\u0020\u0020\u0020\u0020Payment

А на ваш вопрос если вы хотите добавить пробелы более одного в строковые ресурсы их много вариантов, чтобы добавить пробелы между символом или словом :

1.By по умолчанию одно место можно добавить непосредственно в строковый ресурс файл, он работает нормально. но если дать более одного пробела внутри строки ресурсам файла, то это исключает, что пространств. например . -4, 5, -5, 6, -6,

  1. Если вы хотите добавить больше лишние пробелы внутри строки файла ресурсов использует:- я. добавление Юникод после того, как персонаж нравится

второй.вы можете использовать " и\u0020"и

в XML:пространство=на"сохранить" и

работает как шарм.

Правка: Неправильно. На самом деле, это работает только тогда, когда контент состоит только из пробелов.

Когда-то было так:

Русский XML FAQ создаётся силами добровольцев. Каждый может добавить пару вопрос-ответ в faq или дополнить существующий ответ. FAQ постоянно пополняется и изменяется, самая последняя версия доступна по адресу .

Что такое XML?

XML — это способ записи данных с помощью тегов, атрибутов и других простых конструкций. А в обобщённом смысле — это семейство технологий для обработки структурированных данных.

Простой пример XML:

Основные сайты и книги

Элементы или атрибуты?

Выбор между элементом или атрибутом.

Русские буквы, FOP

Настройка FOP на русский язык описана на сайте Russian FOP: (автор — Алексей (aka Achtung) V. Алишевских).

Русские буквы, Xerces, Xalan

Сохраняем XML в Xalan или Xerces. Результат есть, но в виде:

Ответ 1

Если в Encodings.java последний параметр конструктора сделать не 0xFF, а 0xFFFF,

Ответ 2

Суть проблемы: даже после ковыряния в исходниках xerces'а xalan ругался на кодировку. Всё пофиксилось после прочтения соответствующей приписки.

Лежит эта приписка в исходниках xalan:

Вкратце, мысль следующая: чтобы xalan использовал пропатченный xerces, нужно при создании XSLTProcessor'а использовать синтаксис:

вместо дефолтного .getProcessor() без параметров.

Другой вариант исправления был найден, когда я заставил ant'а собирать xalan-j:

в файле после строки:

После чего можно использовать .getProcessor() и не заморачиваться.

Ответ 3

Объясняю по шагам последовательность для JDK 1.4.x:

Комментарий 3а

Всё, что говорилось ранее, верно. Но можно ли как-нибудь обойтись без замены файлов вообще? У меня, например, нет доступа к папкам jvm, и я не могу заменить ни xalan.jar, ни rt.jar. Преобразовывать из utf-8 самому не трудно, но на это нужно время (не на написание кода - на выполнение). Кто-нибудь может посоветовать что-нибудь?

Можно url сайта, откуда можно скачать другой трансформер, но только не saxon, он конфликтует с Tomcat, а его параметры я также не могу изменять.

Комментарий 3б

Когда нет доступа к jvm, можно использовать опцию -Xbootclasspath примерно так:

Java: XML DOM Document -> XML String

Q: Имеется org.w3c.dom.Document, как получить строку, содержащую его XML представление?

A: Бывают сериализаторы, но можно и через JAXP:

Повторное использование тега при XSLT трансформации

В этом случае лучше использовать режимы:

Разница небольшая, но с режимами - стиль лучше.

Изменить значение переменной XSLT

Что-то как объявить переменную я понял, а как у нее значение изменить, чтобы не ругалось на повторное объявление?

Ответ 1

Никак. Это тебе не С, учись программировать без присваиваний.

Ответ 2

Изменение переменной "на стеке"

Идея: использовать параметр вместо переменной.

URI пространства имён для XSLT

XLST-файл начинается с такого заголовка:

URI должен быть таким:

URI не должен быть таким:

с кодировкой в выводе XSLT

Как избавиться от с кодировкой в выводе ( — всё прописано)?

ответ

xslt процессоры обязаны его генерировать в HTML режиме вывода и если есть элемент head — отсюда все твои варианты: либо выводить в режиме xml, либо без head, либо постпроцесс какой-нибудь. А чем она мешает-то?

комментарий

saxon умеет отключать мету:

The saxon:omit-meta-tag attribute

This attribute may be set on the xsl:output element when method="html". The normal action of the HTML output method, as specified in the XSLT standard, is to generate a tag immediately after the tag, containing details of the media type and character encoding. Setting this attribute to "yes" causes this output to be suppressed. Typical usage is

Форматирование текста в XSLT

Q: Потребовалось тут немного xml/xsl вспомнить, а точнее, изучить новые возможности современного XML. Задачка класическая: написать xsl для конвертирования xml-ля в text, html, rtf, pdf.

Ну, с html более-менее понятно, а вот для text и rtf вопросы возникли (sorry, если вдруг что то из faq проскочило)

PLAIN TEXT форматирование:

как обозначить перевод строки?

Q: как ограничить длину всех строк в тексте "максимум 80 символов"?

Однако, как очевидно из вышесказанного, это есть извращение. Легче написать либо расширение, либо простенький фильтр.

XSLT слабо подходит для форматирования текста.

Q: как сделать, чтобы первые буквы стали заглавными?

Тоже непросто. Описывать рекурсивную функцию и как ее писать я не буду, посмотри в моей книжке по XSLT, там про рекурсии есть . Строчные/прописные буквы можно друг на друга заменять при помощи функции translate, опять же, пример функции в книжке есть .

Но, честное слово, подыщи для форматирования текста другой инструмент. XSLT работает со структурой документа.

Q: HTML форматирование:

как обозначить пробел не самим пробелом, а  , например? (сам по себе , конечно же, не проходит)

Разница между "current()" и "."

Q: Как я понял, это не совсем аналогичные вещи, запрос "item[@value=current()/@id]" не будет равным "item[@value=./@id]". Есть еще аналог current()?

A: функция current() возвращает текущий узел. Когда выполняется шаблон, или тело оператора xsl:for-each, всегда есть один узел, с которого начинается вычисление относительных путей XPath, этот узел и называется "текущим" и возвращается функцией current().

Выражение "." -- это сокращение для "self::node()", т.е. для контекстного узла.

Разница между ними в том, что при навигации по осям XPath значение контекстного узла изменяется, значение current() -- нет.

Многоязычность в XSLT

MSXML: не работает XSLT

Вопрос

У меня не работают (или неправильно работают) XSLT-преобразования. Использую MSXML. В чем дело?

Ответ

Скорее всего, используется старая версия MSXML. Типичные симптомы:

  • при попытке выполнить корректные преобразования, определённые в пространстве имен с URI "http://www.w3.org/1999/XSL/Transform", не происходит ничего или выдаётся ошибка;
  • при попытке выполнить те же преобразования, исправив URI на "http://www.w3.org/TR/WD-xsl", процессор пытается выполнить преобразование, но выдаёт ошибку о некорректности преобразование (в то время, как оно работает на других процессорах);
  • в преобразованиях не работают переменные, именованные шаблоны, шаблоны значений атрибутов, ключи и импортирование.

Если наблюдается что-либо похожее, значит, используется старая версия MSXML. Пространство имён TR/WD-xsl соответствует раннему драфту XSLT, который не совместим со стандартом языка XSLT, но до сих пор широко используется Microsoft. Чтобы пользоваться "нормальным" XSLT в MSXML, надо обновить версию:

Вопрос

Я поставил новую версию MSXML, но всё равно ничего не работает!

Ответ

MSXML: не работает XPath

Используется XMLDOMDocument. Простые XPath-выражения работают. Если же использовать функции (contains , string-length , . ) или сложные выражения, то запрос не отрабатывает. Почему?

MSXML DOM поддерживает два языка запроса: обычный XPath и более простой XSLPattern. По умолчанию используется XSLPattern.

Переключение на XPath и дополнительные сведения описаны в базе знаний MSDN: "How To Use XPath Queries in MSXML DOM selectNodes Method" (Article ID 288913).

PHP и XML

Как прервать SAX-парсер

Q: (Java) Есть такая вводная: имеется большой xml-файл, из которого информации нам требуется чуть, да и то она вся там в начале находится. И как водится, натравляю я на него SAX-анализатор с целью эту ценную инфу добыть. И вот, когда казалось бы, что победа уже близка и инфа добыта, наступает черед горького разочарования: парсер продолжает анализировать файл :(

В итоге вопрос к знатокам: как прервать ручками анализ файла?

Пока ничего, кроме засовывания анализа в отдельный поток и его терминирования, в голову не приходит.

A: Я в подобных ситуациях поступаю так:

URL содержит & вместо &

Q: В результате XSLT-преобразования получается

Q: Пишу в xhtml-файле

Обозреватели правильно понимают URL, записанный в таком виде.

Русские буквы в URL превращаются в %xx%xx%xx.

Q: В результате XSLT-преобразования атрибуты a/@href вместо русских букв содержат коды. Например, вместо

В других атрибутах (не a/@href ) всё ok. что тут можно сделать?

A: Никогда не используйте русские буквы в URL. С ними всегда только проблемы.

В данном случае ничего делать не надо, всё работает правильно. Результат корректен как с точки зрения стандарта, так и с точки зрения браузера.

В соответствии со спецификацией XSLT (глава “16.2 HTML Output Method”):

The html output method should escape non-ASCII characters in URI attribute values using the method recommended in Section B.2.1 of the HTML 4.0 Recommendation

Из HTML 4.0 Recommendation:

We recommend that user agents adopt the following convention for handling non-ASCII characters in such cases: 1. Represent each character in UTF-8 (see [RFC2279]) as one or more bytes. 2. Escape these bytes with the URI escaping mechanism (i.e., by converting each byte to %HH, where HH is the hexadecimal notation of the byte value). This procedure results in a syntactically legal URI (as defined in [RFC1738], section 2.2 or [RFC2141], section 2) that is independent of the character encoding to which the HTML document carrying the URI may have been transcoded.

Неразрывный пробел ( )

Q: Есть XML и XSLT, на выходе получаю HTML, но не могу придумать, как вставлять , так как если записать просто, то libxslt ругается на него, а если написать  , то получу слово nbsp.

A: Проблема более общая, и XSLT здесь не при чём. XML-парсер не знает, что такое и выдаёт ошибку.

Если же очень хочется писать именно , то нужно предварительно определить эту сущность:

Для XSLT есть неправильное антирешение, которое не рекомендуется использовать:

Читайте также: