Skip to content

Commit be02d17

Browse files
committed
[docs]
1 parent 0042ea0 commit be02d17

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,11 @@ SysConfigFile::value('id', 'PrintSrv');
118118

119119
### Проверка синтаксиса config-файла
120120

121-
Класс `SysConfigFile` использует аксаптовские классы для работы с xml. Эти классы всегда выполняют проверку xml синтаксиса при загрузке текста - так называемую проверку [well formed xml](https://en.wikipedia.org/wiki/Well-formed_document).
121+
Класс `SysConfigFile` использует аксаптовские классы для работы с xml. Эти классы всегда выполняют проверку xml синтаксиса при загрузке текста - так называемую проверку [well formed xml](https://en.wikipedia.org/wiki/Well-formed_document). См.также [W3 well-formed](https://www.w3.org/TR/xml/#sec-well-formed), [статья](http://softwaremaniacs.org/blog/2005/10/02/well-formed-valid-conformant/)
122122

123123
### Валидация по xsd-схеме
124124

125-
Класс `SysConfigFile` может выполнить валидацию config-файла по [xsd-схеме](https://ru.wikipedia.org/wiki/XML_Schema_(W3C)). <https://www.w3.org/XML/Schema>
125+
Класс `SysConfigFile` может выполнить валидацию config-файла по [xsd-схеме](https://ru.wikipedia.org/wiki/XML_Schema_(W3C)): <https://www.w3.org/XML/Schema>
126126

127127
Чтобы выполнить валидацию, программист должен явно вызвать хотя бы один из методов: `ensureFileValid`, `assertFileValid` или `checkFileValid`.
128128
Если методы не вызваны, то класс выполняют только [проверку синтаксиса](#Валидация-синтаксиса-config-файла) при чтении config-файла.
@@ -133,7 +133,9 @@ Xsd-схема может хранится централизовано в ре
133133

134134
Аксаптовские xml-классы не выполняет валидацию по DTD (выполняется только проверка синтаксиса DTD как подмножества синтаксиса xml).
135135

136-
С некоторого времени Microsoft считает работу с DTD опасной (<https://msdn.microsoft.com/en-us/magazine/ee335713.aspx>). Во-первых из-за "xml bomb" (гуглите).
136+
С некоторого времени Microsoft считает работу с DTD опасной: <https://msdn.microsoft.com/en-us/magazine/ee335713.aspx>.
137+
138+
Во-первых, из-за "xml bomb" (гуглите).
137139

138140
Во-вторых, потому что способ проверки задает создатель файла внутри этого xml-файла. В далекие 2000е в этом не видели проблему, но уже в 2010е стали считать, что доверять создателю файла слишком наивно и опасно. Поэтому, в аксаптовских xml-классах есть метод [prohibitDtd](https://docs.microsoft.com/ru-ru/dotnet/api/system.xml.xmlreadersettings.prohibitdtd). По умолчанию он возвращает `true`.
139141

@@ -191,7 +193,7 @@ Xsd-схема может хранится централизовано в ре
191193

192194
Обработка исключений в классических Аксаптах имеет особенность: catch блоки внутри транзакции не обрабатываются, Аксапта выпрыгивает за самый внешний transaction-блок и ищет catch уже там (см. раздел `Exception handling inside transaction` в документации). Поэтому обработка исключений становится не надежной, если код может выполняться внутри транзакции.
193195

194-
Поэтому если config-файлы содержат синтаксически правильный xml ([well-formed xml](https://www.w3.org/TR/xml/#sec-well-formed) + [статья](http://softwaremaniacs.org/blog/2005/10/02/well-formed-valid-conformant/)), то исключения могут возникнуть только после вызова `ensure`-, `assert`- методов и статического метода `::Value`, а остальные методы вернут более-менее осмысленный результат.
196+
Поэтому если config-файлы содержат [синтаксически правильный xml](#Проверка-синтаксиса-config-файла), то исключения могут возникнуть только после вызова `ensure`-, `assert`- методов и статического метода `::Value`, а остальные методы вернут более-менее осмысленный результат.
195197

196198
## Зависимости
197199

0 commit comments

Comments
 (0)