Автономная схема для проверки HTML5 [дубликат]

Это очень похоже на вопрос, на который я только что ответил: https://stackoverflow.com/a/12990540/727643

Короткий ответ: вы правы. Кусочек структур не равен фрагменту интерфейса, реализуемого структурой.

A []Person и []Model имеют разные макеты памяти. Это связано с тем, что типы, на которых они расположены, имеют разные макеты памяти. A Model - значение интерфейса, что означает, что в памяти это два слова по размеру. Одно слово для информации о типе, другое для данных. A Person - это структура, размер которой зависит от полей, которые он содержит. Чтобы преобразовать из []Person в []Model, вам нужно будет перебрать массив и выполнить преобразование типа для каждого элемента.

Поскольку это преобразование является операцией O (n) и приведет к созданию нового среза, Go отказывается делать это неявно. Вы можете сделать это явно со следующим кодом.

models := make([]Model, len(persons))
for i, v := range persons {
    models[i] = Model(v)
}
return models

И, как указал dskinner , вы, скорее всего, хотите фрагмент указателей, а не указатель на фрагмент. Указатель на срез обычно не нужен.

*[]Person        // pointer to slice
[]*Person        // slice of pointers

2
задан Marco 14 February 2013 в 23:29
поделиться

2 ответа

В Сети, похоже, есть XHTML 5 XSD. Например, была схема XHTML 5 с открытым исходным кодом в: http://www.xmlmind.com/xmleditor/download.shtml

1
ответ дан Dan Neely 22 August 2018 в 19:28
поделиться

Из раздела 8.2 спецификации html5

http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html

Хотя синтаксис HTML, описанный в этой спецификации, имеет близкое сходство с SGML и XML, это отдельный язык с его собственными правилами синтаксического анализа.

Некоторые более ранние версии HTML (в частности от HTML2 до HTML4) были основаны на SGML и использовали правила синтаксического анализа SGML. Однако мало (если они есть) веб-браузеры когда-либо реализовывали корректный синтаксический анализ SGML для HTML-документов; единственные пользовательские агенты, которые строго обрабатывают HTML как приложение SGML, исторически были валидаторами. В результате путаница - с валидаторами, утверждающими, что документы имеют одно представление, в то время как широко развернутые веб-браузеры функционально реализовали другое представление, потратили десятилетия на производительность. Эта версия HTML, таким образом, возвращается к не-SGML основе.

Авторы, заинтересованные в использовании инструментов SGML в своем конвейерном конвейере, могут использовать XML-инструменты и сериализацию XML в формате HTML.

Таким образом, если вы не пишете xml, образованный html5, вы не можете использовать XSD для проверки html5.

1
ответ дан jrwren 22 August 2018 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: