Мы можем поместить' <img>' внутри' <h1>' согласно веб-стандартам?

Вы смешиваете неявные соединения с явным соединением. Это допустимо, но вам нужно знать, как это сделать должным образом.

Дело в том, что явные объединения (те, которые реализованы с использованием ключевого слова JOIN) имеют приоритет над неявными ( «comma» присоединяется, где условие соединения указано в предложении WHERE).

Вот схема вашего запроса:

SELECT
  …
FROM a, b LEFT JOIN dkcd ON …
WHERE …

Вероятно, вы ожидаете, что он будет вести себя например:

SELECT
  …
FROM (a, b) LEFT JOIN dkcd ON …
WHERE …

, то есть комбинация таблиц a и b соединена с таблицей dkcd. Фактически, что происходит

SELECT
  …
FROM a, (b LEFT JOIN dkcd ON …)
WHERE …

, то есть, как вы уже поняли, dkcd соединен конкретно с b и только b, тогда результат объединения объединяется с a и далее фильтруется с предложением WHERE. В этом случае любая ссылка на a в предложении ON недействительна, a неизвестно в этой точке. Вот почему вы получаете сообщение об ошибке.

Если бы я был вами, я бы, вероятно, попытался переписать этот запрос, и одним из возможных решений могло бы быть:

SELECT DISTINCT
  a.maxa,
  b.mahuyen,
  a.tenxa,
  b.tenhuyen,
  ISNULL(dkcd.tong, 0) AS tongdkcd
FROM phuongxa a
  INNER JOIN quanhuyen b ON LEFT(a.maxa, 2) = b.mahuyen
  LEFT OUTER JOIN (
    SELECT
      maxa,
      COUNT(*) AS tong
    FROM khaosat
    WHERE CONVERT(datetime, ngaylap, 103) BETWEEN 'Sep 1 2011' AND 'Sep 5 2011'
    GROUP BY maxa
  ) AS dkcd ON dkcd.maxa = a.maxa
WHERE a.maxa <> '99'
ORDER BY a.maxa

таблицы a и b соединяются сначала, тогда результат соединяется с dkcd. В основном, это тот же запрос, что и ваш, только с использованием другого синтаксиса для одного из соединений, что имеет большое значение: ссылка a.maxa в состоянии соединения dkcd теперь абсолютно верна.

Как правильно отметил @Aaron Bertrand, вы должны, вероятно, квалифицировать maxa с определенным псевдонимом, вероятно a, в предложении ORDER BY.

56
задан Jitendra Vyas 22 October 2009 в 06:56
поделиться

5 ответов

Да, вы можете - DTD говорит:

<!ELEMENT h1  %Inline;>
<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
<!ENTITY % special "%special.pre; | object | img ">

Это в основном означает, что h1 может содержать % Inline , что состоит из различных элементов, включая img

87
ответ дан 26 November 2019 в 17:09
поделиться

Для суммирования других ответов , это - W3C, допустимый для использования <img> внутренняя часть <h1>.

, Хотя быть completly допустимый, необходимо добавить alt атрибут к изображению, потому что это обязательно. Этот атрибут не должен содержать текст. Это лучше позволяет ему пустой, чем повторение, что уже записано в эти h1 тег.

В Вашем случае, если изображение чисто декоративно, это должно быть:

<h1>Demo text <img src="anyimage.jpg" alt=""/></h1>
[еще 119] информация о текстовых альтернативах для декоративных изображений: https://www.w3.org/WAI/tutorials/images/decorative /

, Если изображение имеет конкретное значение или содержит текст, отличающийся, чем тот в h1, то используйте соответствующую альтернативу.

0
ответ дан 26 November 2019 в 17:09
поделиться

Посмотрите, кто его использует: http://www.w3.org/

<h1 class="logo"><a tabindex="2" accesskey="1" href="/"><img src="/2008/site/images/logo-w3c-mobile-lg" width="90" height="53" alt="W3C" /></a> <span class="alt-logo">W3C</span></h1>
39
ответ дан 26 November 2019 в 17:09
поделиться

Да, это разрешено. Но не забудьте установить атрибут alt в img !

15
ответ дан 26 November 2019 в 17:09
поделиться

Да и нет.

Вы можете разместить изображение внутри элемента h1, но не совсем так ... атрибут alt является обязательным.

3
ответ дан 26 November 2019 в 17:09
поделиться
Другие вопросы по тегам:

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