mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-07 10:40:52 +03:00
fix(form,skd,init,meta-edit): развести экранирование атрибута и текста
esc_xml был один на две задачи, и в атрибутном контексте применялся текстовый вариант без ". form-compile с choiceParameters, имя которого содержит кавычку, выдавал <app:item name="Отбор.Наименование "кавычка"">: lxml падает с attributes construct error, то есть файл невалиден как XML. Затронуто 9 мест в form-compile и 3 в skd-compile, одинаково в обоих портах. Раундтрип через базу показал границу: в ТЕКСТЕ элемента платформа экранирует только & < > (кавычка и апостроф возвращаются сырыми байт-в-байт), а в ЗНАЧЕНИИ АТРИБУТА пишет " — внутри "..." литеральная кавычка невалидна. Поэтому две функции с говорящими именами, а не одна с флагом: esc_xml — значение атрибута: & < > " esc_xml_text — текст элемента: & < > Заодно закрыто расхождение портов в init-навыках: PY экранировал текст с ", PS1 — через SecurityElement::Escape (ещё и '), а epf-init/erf-init в PS1 не экранировали вовсе, из-за чего амперсанд в синониме давал невалидный XML. Кейсы: form-compile/attr-value-escaping, skd-compile/additional-properties-escaping, cf-init/synonym-escaping — все три проверены негативным прогоном на обоих портах и верификацией снэпшотов на платформе. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3c50d3caa0
commit
974ca3aac9
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "Спецсимволы в синониме: экранируются только & < >",
|
||||
"params": {
|
||||
"name": "Экранирование"
|
||||
},
|
||||
"args_extra": [
|
||||
"-Synonym",
|
||||
"Кавычка \" апостроф ' амперсанд & угол <"
|
||||
],
|
||||
"expect": {
|
||||
"files": ["Configuration.xml"],
|
||||
"fileContains": {
|
||||
"file": "Configuration.xml",
|
||||
"text": "<v8:content>Кавычка \" апостроф ' амперсанд & угол <</v8:content>"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user