Понимание XML CharData EBNF
Nov 13 2020
Следующее правило EBNF выражается как
CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
мне действительно трудно понять. Может кто-нибудь привести несколько примеров действительных и недействительных строк. Краткое объяснение того, что выражается в правиле, также будет очень полезно. Хотя, возможно, просят многого. Также было бы очень хорошо, если бы у вас есть интересный фрагмент кода C ++, который поможет отловить это происшествие.
Ответы
kjhughes Nov 13 2020 at 08:57
Производство EBNF для CharData,
[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
означает, что символьные данные XML могут состоять из любых символов, кроме
<, с которого начинается разметка (теги, комментарии, объявления XML, разделы CDATA и PI)&, который начинает ссылки на сущности,- строка символов,
]]>завершающая секцию CDATA.
Побег:
- Escape
<как<в символьных данных. - Escape
&как&в символьных данных. ]]>не может появляться в символьных данных; ускользающей формы нет.
Смотрите также:
- Минус в грамматике спецификации w3c