Встроенные простые типы
Дата и время
-
dateTime
содержит дату и время в формате CCYY-MM-DThh:mm:ss
-
duration
— представляет временную длительность, которая выражена компонентами григорианских дней, часов, минут и секунд.
Например: запись P1Y2M3DT10H30M45S
означает один год (1Y), два месяца (2M), три дня (3DT), десять часов (10H), тридцать минут (30M) и 45 секунд (45S).
Запись может быть сокращенной P120M означает 120 месяцев, а Т120М — 120 минут.
-
time
содержит время в обычном формате hh:mm:ss
-
date
содержит дату в формате CCYY-MM-DD
-
gYearMonth
выделяет год и месяц в формате CCYY-MM
-
gYear
означает год в формате CCYY
-
gMonthDay
содержит месяц и день в формате MM-DD
-
gDay
день месяца в формате DD
-
gMonth
месяц в формате ММ
Строки символьные
string
— основной символьный тип.
Строка символов в виде последовательности символов Unicode , включая символы пробела, табуляции, возврата каретки и перевода строки.
-
normalizedString
— подтип типа — это строки, не содержащие символов перевода строки «\n», возврат каретки «\r» и горизонтальной табуляции «\t».-
token
— подтип типа normalizedString- нет, кроме того начальных и завершающих пробелов и несколько подряд идущих пробелов.-
language
— подтип token, определен для записи названия языка согласно рекомендации RFC 1766 , например, ru, en, de, fr. -
NMTOKEN
— подтип token, используется только в атрибутах для записи их перечисляемых значений. -
Name
— подтип token, составляют имена XML — последовательности букв, цифр, дефисов, точек, двоеточий, знаков подчеркивания, начинающиеся с буквы (кроме зарезервированной последовательности букв X, x, M, m, L, l
в любом сочетании регистров) или знака подчеркивания. Имена, начинающиеся со строки, xml
NCName
— подтип name, не содержащий двоеточие. Определены три подтипа: ID, IDREF, ENTITY, используются самой спецификацией XML.
-
language
-
token
Двоичные типы
-
boolen
— двоичное, логическое. Принимает значения: True или False (1 или 0) -
base64Binary
— двоичные целые числа в кодировке Base64 -
hexBinary
— двоичные целые числа в шестнадцатеричной форме без всяких дополнительных символов
Вещественные числа
-
decimal
составляют вещественные числа, записанные с фиксированной точкой: 123.45, -0.48747798 и т.д. -
double
и float
типы соответствуют стандарту IEEE754-85, записываются с фиксированной или плавающей точкой.
Целые числа
-
integer
— основной целый тип, содержащий числа с нулевым порядком, понимается как подтип decimal
-
number
— определяет число (без ограничений на количество цифр); может содержать знак, дроби, а также показатель степени. Значения изменяются
от 1.7976931348623157Е+308 до 2.2250738585072014Е-308
Есть ли escape-символ для двойной кавычки в xml? Я хочу написать тег вроде:
но если я поставлю «, то это означает, что строка закончилась. Мне нужно что-то вроде этого (c ++):
Printf(«Quote = \» «);
Есть ли символ, который нужно написать перед двойной цитатой, чтобы избежать его?
Новый, улучшенный ответ на старый, часто задаваемый вопрос…
9 ответов
Лучший ответ
Если вы используете соответствующий класс или библиотеку, они сделают экранирование за вас. Многие проблемы XML вызваны объединением строк.
Escape-символы XML
Их всего пять:
Экранирование символов зависит от того, где используется специальный символ.
Примеры можно проверить в .
Атрибуты
Безопасный способ — экранировать все пять символов в атрибутах. Однако символ в атрибутах экранировать не нужно:
Символ не нужно экранировать в атрибутах, если кавычки имеют вид :
Аналогично, не нужно экранировать в атрибутах, если кавычки имеют вид :
XML против HTML
HTML имеет собственный набор управляющих кодов, охватывающий гораздо больше символов.
1439
Peter Mortensen
26 Янв 2020 в 13:53
Согласно спецификациям Консорциума World Wide Web (w3C), , за исключением случаев, когда они используются в качестве разделителей разметки или внутри комментария, инструкции обработки или раздела CDATA. Во всех остальных случаях эти символы должны быть заменены либо на соответствующий объект, либо на числовую ссылку в соответствии со следующей таблицей:
Исходный символ Замена объекта XML Числовая замена XML & lt; & # 60; > & gt; & # 62; " & quot; & # 34; & & amp; & # 38; ' & apos; & # 39;
Обратите внимание, что вышеупомянутые объекты могут использоваться также в HTML, за исключением & apos; , который был введен с XHTML 1.0 и не объявлен в HTML 4. По этой причине и для обеспечения ретро-совместимости , вместо
76
Albz
3 Июл 2013 в 12:38
Для тегов и атрибутов экранирующие символы различаются.
Для тегов:
Для атрибутов:
Из :
54
Peter Mortensen
17 Дек 2019 в 19:07
В дополнение к общеизвестным пяти символам , я бы также избегал символа вертикальной табуляции (0x0B). Это допустимый UTF-8, но не действительный XML 1.0 и даже многие библиотеки. (включая высокопортативную (ANSI C) библиотеку libxml2) пропускают его и выводят неверный XML без уведомления.
27
Peter Mortensen
26 Янв 2020 в 13:54
Источник сокращения:
Есть пять предопределенных сущностей:
«Все разрешенные символы Unicode могут быть представлены с помощью числовой ссылки на символы». Например:
Большинство управляющих символов и других диапазонов Unicode специально исключены, что означает (я думаю), что они не могут появляться ни в экранировании, ни в прямом:
13
Peter Mortensen
17 Дек 2019 в 19:03
Это зависит от контекста. Для содержания это и & , а также hibitedune> (хотя строка из трех вместо одного символа).
Для значений атрибутов это , & , » и ‘.
Для CDATA — это sizes explicitly> .
4
Peter Mortensen
17 Дек 2019 в 19:05
Принятый ответ неверен. Лучше всего использовать библиотеку для экранирования xml.
Как упоминалось в этом другом вопросе
«В основном, управляющие символы и символы вне диапазонов Unicode не допускаются. Это также означает, что вызов, например, символьной сущности запрещен».
Если вы избежите только пяти символов. У вас могут быть такие проблемы, как Обнаружен недопустимый символ XML (Unicode: 0xc)
1
Gabriel Furstenheim
29 Янв 2021 в 14:35
Только и требуется экранировать, если они обрабатываются символьными данными, а не разметкой:
-10
Peter Mortensen
26 Янв 2020 в 14:00
Возможно, это поможет:
Список ссылок на символьные сущности XML и HTML :
В этой статье перечислены следующие пять предопределенных XML-сущностей:
95
Ry-
7 Июн 2012 в 18:33
Как PHP находит переменную в строке?
Всё просто. Помните, какие символы могут использоваться в названии переменной? Это цифры, буквы и подчёркивание _ .
Вот PHP и принимает за название всё, что находится между символом $ и первым запрещённым символом.
В следующем коде PHP неправильно определит название переменной и выдаст ошибку:
Результат в браузере:
Чтобы PHP правильно определил название переменной в строке, нужно поместить её в фигурные скобки <> :
Результат в браузере:
Нет однозначного мнения, какие кавычки нужно использовать для обычных строк, в которые ничего не нужно подставлять. Однако, многие программисты предпочитают использовать одинарные кавычки.
Дело в том, что двойные кавычки у многих вызывают ассоциацию «в эту строку что-то должно подставляться». Поэтому я рекомендую использовать одинарные кавычки для обычного текста, а двойные – только когда в текст нужно подставить переменную. Пример:
Что такое экранирование кавычек
Чтобы дать определение этому понятию, для начала приведу небольшой пример объявления строки.
Практически в любом языке программирования мы используем следующий принцип объявления строковой переменной:
Все, что содержится между кавычек — понимается интерпретатором как строка.
Если нам нужно передать в строковую переменную текст содержащий кавычки и мы попытаемся сделать это таким образом:
то произойдет ошибка, поскольку вместо одной строки интерпретатор увидит две:
а между ними неизвестный ему оператор – lifeexample.ru .
Чтобы такого не происходило необходимо экранировать кавычки. В javascript, например, это будет выглядеть таким образом:
После данного практического примера можно дать определение понятию экранирования кавычек.
Экранирование кавычек – это действие, совершаемое над строковой переменной в ходе работы скрипта. Действие это позволяет использовать кавычки в строке. Частным но довольно распространенным способом экранирования является подстановка обратного слеша перед внутренними кавычками.
Атрибуты
АÃÂøñÃÂÃÂàÿÃÂõôþÃÂÃÂðòûÃÂÃÂàôþÿþûýøÃÂõûÃÂýÃÂàøýÃÂþÃÂüðÃÂøàþñ ÃÂûõüõýÃÂðÃÂ, úþÃÂþÃÂðàýõ ÃÂòûÃÂõÃÂÃÂàÃÂðÃÂÃÂÃÂàôðýýÃÂÃÂ.
àÿÃÂøòõôõýýþü ýøöõ ÿÃÂøüõÃÂõ, ÃÂøÿ ÃÂðùûð ýõ øüõõàþÃÂýþÃÂõýøàú ôðýýÃÂü, ýþ òðöõý ôûàÿÃÂþóÃÂðüüýþóþ þñõÃÂÿõÃÂõýøÃÂ, úþÃÂþÃÂþõ üþöõàüðýøÿÃÂûøÃÂþòðÃÂàÃÂûõüõýÃÂþü:
computer.gif
ÃÂýðÃÂõýøàðÃÂÃÂøñÃÂÃÂþò òÃÂõóôð ôþûöýàñÃÂÃÂàò úðòÃÂÃÂúðÃÂ. ÃÂøñþ þôøýðÃÂýÃÂõ øûø ôòþùýÃÂõ úðòÃÂÃÂúø üþóÃÂàñÃÂÃÂàøÃÂÿþûÃÂ÷þòðýÃÂ.
ÃÂÃÂøüõÃÂ: ôûàþÿÃÂõôõûõýøàÿþûð ÃÂõûþòõúð, ÃÂûõüõýàüþöõàñÃÂÃÂà÷ðÿøÃÂðý ÃÂðú:
ÃÂÃÂûø ÷ýðÃÂõýøõ ðÃÂÃÂøñÃÂÃÂð ÃÂðüþ ÃÂþôõÃÂöøàôòþùýÃÂõ úðòÃÂÃÂúø üþöýþ øÃÂÿþûÃÂ÷þòðÃÂàþôøýðÃÂýÃÂõ úðòÃÂÃÂúø, úðú ò ÃÂÃÂþü ÿÃÂøüõÃÂõ:
øûø òàüþöõÃÂõ øÃÂÿþûÃÂ÷þòðÃÂàÃÂøüòþûÃÂýÃÂõ þñÃÂõúÃÂÃÂ: & quot; & quot;
ÃÂõÃÂúþûÃÂúþ ÿÃÂøüõÃÂþò øÃÂÿþûÃÂ÷þòðýøàÃÂøÿð ôðýýÃÂàÃÂðÃÂð
ÃÂðÃÂð úðú ðÃÂÃÂøñÃÂÃÂ
ToveJaniReminder
Don»t forget me this weekend!
ÃÂðÃÂð úðú ÃÂûõüõýÃÂ
10/01/2008ToveJaniReminder
Don»t forget me this weekend!
ÃÂðÃÂð úðú ÃÂûõüõýàÃÂðÃÂÃÂøÃÂõýýÃÂù
10012008ToveJaniReminder
Don»t forget me this weekend!
ÃÂÃÂÃÂøñÃÂÃÂàüõÃÂðôðýýÃÂÃÂ
ÃÂÃÂø øôõýÃÂøÃÂøúðÃÂþÃÂàüþóÃÂàñÃÂÃÂàøÃÂÿþûÃÂ÷þòðýàôûàþÿÃÂõôõûõýøàXML-ÃÂûõüõýÃÂþò.
ÃÂÃÂøüõÃÂ:
ToveJaniReminder
Don»t forget me this weekend!
JaniToveRe: Reminder
I will not
ÃÂðýýÃÂõ þ ôðýýÃÂÃÂ, ôþûöýàñÃÂÃÂàÃÂþÃÂÃÂðýõýàò òøôõ ðÃÂÃÂøñÃÂÃÂþò, ð ÃÂðüø ôðýýÃÂõ ôþûöýàÃÂÃÂðýøÃÂÃÂÃÂàò úðÃÂõÃÂÃÂòõ ÃÂûõüõýÃÂþò.
Тройные кавычки
Обозначение строк, содержащих одинарные и двойные кавычки
Мы можем использовать тройные кавычки (то есть три одинарные кавычки или три двойные кавычки) для представления строк с одинарными и двойными кавычками, чтобы исключить необходимость экранирования любых кавычек.
>>> print('''She said, "Thank you! It's mine."''') She said, "Thank you! It's mine."
Когда строка начинается или заканчивается одинарной (двойной) кавычкой, и мы хотим использовать тройные кавычки для обозначения строки, нужно применять те, которые отличаются от начальной или конечной.
Например, для строки в приведенном выше коде использование тройных двойных кавычек приведет к синтаксической ошибке. Поэтому необходимо использовать тройные одинарные кавычки.
>>> print("""She said, "Thank you! It's mine."""") File "<stdin>", line 1 print("""She said, "Thank you! It's mine."""") ^ SyntaxError: EOL while scanning string literal
Многострочные строки
Также тройные кавычки используются для представления многострочной строки. Пример:
>>> print("""Hello ... World ... !""") Hello World !
Этого же можно добиться, используя символ n для создания многострочных строк. Но это затрудняет чтение строки. А использование тройных кавычек позволяет записать строку так, как она есть.
>>> def multiple_line_comment(a, b): ... ''' ... a is a string # other additional description ... b is a list of integers # other additional description ... ''' ... pass ... >>> print(multiple_line_comment.__doc__) a is a string # other additional description b is a list of integers # other additional description
Мы сразу видим, что является многострочным комментарием для функции.
Сущности символов XML
Как упоминалось ранее, большинство сущностей символов и escape-последовательностей, которые обычно используются для написания разметки XAML, определяются XML. Этот раздел не содержит полного списка этих сущностей. Подробные сведения о них можно найти во внешней документации, например в спецификациях XML. Однако для удобства в этом разделе перечислены некоторые из определенных сущностей символов XML, которые обычно используются в разметке XAML.
Знак
Сущность
Примечания
& (амперсанд)
&
Должен использоваться для значений атрибутов и содержимого элемента.
> (символ «больше»)
>
Должен использоваться для значения атрибута, но > приемлемо в качестве содержимого элемента, пока не за ним.
«(прямая кавычка)
»
Должен использоваться для значения атрибута, но прямая кавычка («) допустима в качестве содержимого элемента
Обратите внимание, что значения атрибутов могут быть заключены в прямые одиночные кавычки (‘) или прямые двойные кавычки («»). Первый символ определяет оболочку значения атрибута, а альтернативный знак кавычек можно затем использовать в качестве литерала в значении.
‘ (одиночная прямая кавычка)
‘
Должен использоваться для значения атрибута, но прямая одиночная кавычка (‘) допустима в качестве содержимого элемента
Обратите внимание, что значения атрибутов могут быть заключены в прямые одиночные кавычки (‘) или прямые двойные кавычки («»). Первый символ определяет оболочку значения атрибута, а альтернативный знак кавычек можно затем использовать в качестве литерала в значении.
(сопоставления цифровых символов)
; или ;
XAML поддерживает сопоставления числовых символов с активной кодировкой.
(неразрывный пробел)
(предполагается кодировка UTF-8)
Для элементов потокового документа или элементы, которые принимают текст, например TextBox в WPF, неразрывные пробелы не нормализуются в разметке даже для . (Дополнительные сведения см. в разделе Обработка пробелов в XAML.)
Зачем может понадобиться экранирование кавычек в PHP
Помимо разобранного примера с выводом строк, экранирование кавычек и других спец символов зачастую необходимо при работе с БД.
Чтобы не допустить, различного рода проблем при работе с базой данных, перед сохранением данных в таблицы можно использовать функцию addslashes
Обе эти функции являются стандартными в php и экранируют спецсимволы строк. Когда и какую использовать, зависит от конкретных задач. Например addslashes лучше использовать для сериализованной строки при записи ее в базу, а mysql_real_escape_string для всех пользовательских данных пришедших с формы на сайте.
В небольших web-приложениях, можно не использовать ручное экранирование addslashes или mysql_real_escape_string если включить «Магические кавычки» — magic_quotes_gpc
Зачастую магические кавычки включены по умолчанию на сервере, это можно узнать из информацией полученной при выполнении функции
С помощью XML придумывайте собственные теги
Для создании тегов (дескрипторов, элементов) стандартного формата не существует.
Язык XML не имеет предопределенных тегов.
- XML позволяет автору определить его собственные теги и его собственную структуру документа.
- XML используется для передачи данных
- XML представляет собой программно-аппаратно независимый инструмент для переноса информации.
- XML, теперь так же важен для сети как HTML
- XML является наиболее распространенным инструментом для передачи данных между разными приложениями
- XML используется во многих аспектах веб-разработки, часто для упрощения хранения данных и обмена ими