This is page 17 of 20. Use http://codebase.md/cloudflare/docs/imgs/%7B%7Bg.url(parentDoc.pod_path,%20locale=usedDoc.locale).path%7D%7D?page={x} to view the full context.
# Directory Structure
```
├── .editorconfig
├── .eslintrc.json
├── .firebaserc
├── .github
│ └── workflows
│ └── semgrep.yml
├── .gitignore
├── .travis.yml
├── assets
│ ├── extra
│ │ └── brand_assets.zip
│ ├── img
│ │ ├── about
│ │ │ ├── case-studies
│ │ │ │ └── bg_lines.png
│ │ │ ├── design-principles
│ │ │ │ ├── bg1.svg
│ │ │ │ ├── bg2.svg
│ │ │ │ ├── design_icon_break.svg
│ │ │ │ ├── design_icon_fast.svg
│ │ │ │ ├── design_icon_future.svg
│ │ │ │ ├── design_icon_layers.svg
│ │ │ │ ├── design_icon_priorities.svg
│ │ │ │ ├── design_icon_ux.svg
│ │ │ │ ├── design_icon_whitelist.svg
│ │ │ │ ├── lines1.svg
│ │ │ │ └── lines2.svg
│ │ │ ├── how-amp-works
│ │ │ │ ├── line_behind.svg
│ │ │ │ └── lines_front.svg
│ │ │ ├── overview
│ │ │ │ ├── bg2.svg
│ │ │ │ ├── herobg.svg
│ │ │ │ ├── herolines1.svg
│ │ │ │ ├── herolines2.svg
│ │ │ │ ├── line4.svg
│ │ │ │ ├── lines3.svg
│ │ │ │ ├── what_phone.png
│ │ │ │ ├── what_phone@1_5x.png
│ │ │ │ └── [email protected]
│ │ │ └── who-use-amp
│ │ │ ├── adtech
│ │ │ │ ├── adtech_icon_customize.svg
│ │ │ │ ├── adtech_icon_intro.svg
│ │ │ │ ├── adtech_icon_reach.svg
│ │ │ │ ├── adtech_icon_revenue.svg
│ │ │ │ ├── indexexchange_logo.png
│ │ │ │ ├── lines.svg
│ │ │ │ ├── sharethrough_logo.png
│ │ │ │ ├── teads_logo.svg
│ │ │ │ └── triplelift_logo.png
│ │ │ ├── advertisers
│ │ │ │ ├── advertiser_phone_wired.png
│ │ │ │ ├── advertiser_phone_wired@1_5x.png
│ │ │ │ ├── [email protected]
│ │ │ │ ├── advertisers_bg.svg
│ │ │ │ ├── advertisers_icon_audience.svg
│ │ │ │ ├── advertisers_icon_everywhere.svg
│ │ │ │ ├── advertisers_icon_intro.svg
│ │ │ │ ├── advertisers_icon_ROI.svg
│ │ │ │ └── advertisers_lines.svg
│ │ │ ├── amp-ads
│ │ │ │ ├── ads_icon.svg
│ │ │ │ ├── cloudflare_logo.png
│ │ │ │ ├── doubleclick_logo.png
│ │ │ │ ├── google_logo.png
│ │ │ │ ├── lines_bottom1.svg
│ │ │ │ ├── lines_bottom2.svg
│ │ │ │ ├── lines.svg
│ │ │ │ ├── roi_icon.svg
│ │ │ │ ├── speed_icon.svg
│ │ │ │ └── triplelift_logo.png
│ │ │ ├── card_developers.png
│ │ │ ├── card_developers.svg
│ │ │ ├── card_smb.png
│ │ │ ├── card_smb.svg
│ │ │ ├── hero_triangle.png
│ │ │ ├── publishers
│ │ │ │ ├── globo_logo.svg
│ │ │ │ ├── nyt_logo.svg
│ │ │ │ ├── publisher_icon_business.svg
│ │ │ │ ├── publisher_icon_fast.svg
│ │ │ │ ├── publisher_icon_intro.svg
│ │ │ │ ├── publisher_icon_simple.svg
│ │ │ │ ├── publisher_phone_cnn.png
│ │ │ │ ├── publisher_phone_cnn@1_5x.png
│ │ │ │ ├── [email protected]
│ │ │ │ ├── wapo_logo.png
│ │ │ │ └── wired_logo.png
│ │ │ ├── who_icon_adtech.svg
│ │ │ ├── who_icon_advertisers.svg
│ │ │ ├── who_icon_publishers.svg
│ │ │ ├── who_lines1.svg
│ │ │ ├── who_lines2.svg
│ │ │ ├── who_phones_hero.png
│ │ │ ├── who_phones_hero@1_5x.png
│ │ │ └── [email protected]
│ │ ├── amp_favicon.png
│ │ ├── amp-conf
│ │ │ └── speakers
│ │ │ ├── alex.jpg
│ │ │ ├── ali.jpg
│ │ │ ├── ardan.jpg
│ │ │ ├── beck.jpg
│ │ │ ├── bez.jpg
│ │ │ ├── chen.jpg
│ │ │ ├── dane.jpg
│ │ │ ├── eric.jpg
│ │ │ ├── gina.jpg
│ │ │ ├── honey.jpg
│ │ │ ├── jeremy.jpg
│ │ │ ├── john.jpg
│ │ │ ├── le.jpg
│ │ │ ├── madison.jpg
│ │ │ ├── malte.jpg
│ │ │ ├── malteandrudy.jpg
│ │ │ ├── mariko.jpg
│ │ │ ├── matthew.jpg
│ │ │ ├── mike.jpg
│ │ │ ├── natalia.jpg
│ │ │ ├── nicole.jpg
│ │ │ ├── paul.jpg
│ │ │ ├── ranna.jpg
│ │ │ ├── richard.jpg
│ │ │ ├── rudy.jpg
│ │ │ ├── sam.jpg
│ │ │ ├── sarah.jpg
│ │ │ ├── sebastian.jpg
│ │ │ ├── senthil.jpg
│ │ │ ├── sriram.jpg
│ │ │ ├── vadim.jpg
│ │ │ ├── vamsee.jpg
│ │ │ ├── will.jpg
│ │ │ └── yamini.jpg
│ │ ├── arrow-blue.svg
│ │ ├── arrow.svg
│ │ ├── background.jpg
│ │ ├── blog-icon.svg
│ │ ├── brand-guidelines.pdf
│ │ ├── case-studies
│ │ │ ├── gizmodo_logo.png
│ │ │ ├── gizmodo_phone1.png
│ │ │ ├── gizmodo_phone1@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── gizmodo_phone2.png
│ │ │ ├── gizmodo_phone2@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── gizmodo_thumb.jpg
│ │ │ ├── gizmodo.pdf
│ │ │ ├── hearst_framed.png
│ │ │ ├── hearst_framed2.png
│ │ │ ├── hearst_logo.png
│ │ │ ├── hearst_thumb.jpg
│ │ │ ├── hearst.pdf
│ │ │ ├── milestone_home_framed.png
│ │ │ ├── milestone_logo.png
│ │ │ ├── milestone_search_framed.png
│ │ │ ├── milestone_thumb.jpg
│ │ │ ├── milestone.pdf
│ │ │ ├── plista_graphic.png
│ │ │ ├── plista_logo.png
│ │ │ ├── plista_thumb.jpg
│ │ │ ├── plista.pdf
│ │ │ ├── relay_media_logo.png
│ │ │ ├── relay_media_thumb.jpg
│ │ │ ├── relay_media.pdf
│ │ │ ├── relaymedia_phone1.png
│ │ │ ├── relaymedia_phone1@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── relaymedia_phone2.png
│ │ │ ├── relaymedia_phone2@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── slate_logo.png
│ │ │ ├── slate_phone1.png
│ │ │ ├── slate_phone1@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── slate_phone2.png
│ │ │ ├── slate_phone2@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── slate_thumb.jpg
│ │ │ ├── slate.pdf
│ │ │ ├── teads_logo.png
│ │ │ ├── teads_logo2.png
│ │ │ ├── teads_phone.png
│ │ │ ├── teads_phone@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── teads_thumb.jpg
│ │ │ ├── teads.pdf
│ │ │ ├── terra_framed1.png
│ │ │ ├── terra_framed2.png
│ │ │ ├── terra_logo.png
│ │ │ ├── terra_thumb.jpg
│ │ │ ├── terra.pdf
│ │ │ ├── wapo_logo.png
│ │ │ ├── wapo_thumb.png
│ │ │ ├── wapo.pdf
│ │ │ ├── washingtonpost_phone.png
│ │ │ ├── washingtonpost_phone@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── wired_logo.png
│ │ │ ├── wired_phone1.png
│ │ │ ├── wired_phone1@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── wired_phone2.png
│ │ │ ├── wired_phone2@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── wired_thumb.jpg
│ │ │ └── wired.pdf
│ │ ├── cheveron-down.svg
│ │ ├── close.svg
│ │ ├── comment.png
│ │ ├── docs
│ │ │ ├── icon_important.svg
│ │ │ ├── icon_note.svg
│ │ │ ├── icon_read.svg
│ │ │ ├── icon_tip.svg
│ │ │ ├── responsive_amp_img.png
│ │ │ ├── too_much_css.png
│ │ │ ├── validator_console_imgerror.png
│ │ │ ├── validator_errors.png
│ │ │ ├── validator_extension_imgerror.png
│ │ │ ├── validator_icon_invalid.png
│ │ │ ├── validator_icon_link.png
│ │ │ ├── validator_icon_valid.png
│ │ │ ├── validator_mandatory_error.png
│ │ │ ├── validator_web_ui.png
│ │ │ └── validator_webui_imgerror.png
│ │ ├── enforce-comment.png
│ │ ├── footer
│ │ │ ├── line-left.png
│ │ │ ├── line-right-2.png
│ │ │ └── line-right.png
│ │ ├── github.png
│ │ ├── hamburger.svg
│ │ ├── home
│ │ │ ├── bg_experience.png
│ │ │ ├── home_hero_phone.png
│ │ │ ├── home_hero_phone@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── home_icon_flexibility.svg
│ │ │ ├── home_icon_performance.svg
│ │ │ ├── home_phone_ebay.png
│ │ │ ├── home_phone_ebay@1_5x.png
│ │ │ ├── [email protected]
│ │ │ ├── lines2.svg
│ │ │ ├── lines3.svg
│ │ │ ├── shapebg.svg
│ │ │ ├── teads_logo.svg
│ │ │ ├── wapo_logo.png
│ │ │ └── wired_logo.png
│ │ ├── ic_open_in_new_black.svg
│ │ ├── ic_open_in_new_white.svg
│ │ ├── icons
│ │ │ ├── 120.png
│ │ │ ├── 144.png
│ │ │ ├── 152.png
│ │ │ ├── 168.png
│ │ │ ├── 180.png
│ │ │ ├── 192.png
│ │ │ ├── 48.png
│ │ │ ├── 512.png
│ │ │ ├── 72.png
│ │ │ ├── 96.png
│ │ │ └── any.svg
│ │ ├── latest
│ │ │ ├── events
│ │ │ │ ├── event_empty.png
│ │ │ │ ├── event_empty.svg
│ │ │ │ └── event_hero.svg
│ │ │ ├── icon_audience.png
│ │ │ ├── icon_audience.svg
│ │ │ ├── icon_calendar.png
│ │ │ ├── icon_calendar.svg
│ │ │ ├── icon_location.png
│ │ │ ├── icon_location.svg
│ │ │ ├── icon_retweet.png
│ │ │ ├── icon_retweet.svg
│ │ │ ├── icon_twitter.svg
│ │ │ ├── latest_hero.jpg
│ │ │ ├── line_hero_back.svg
│ │ │ └── line_hero_front.svg
│ │ ├── liveblog-pagination.png
│ │ ├── login-button.png
│ │ ├── logo-blue.svg
│ │ ├── logout-button.png
│ │ ├── malte.jpg
│ │ ├── motions
│ │ │ └── amp-lines-motions.png
│ │ ├── nav
│ │ │ ├── back_arrow.png
│ │ │ ├── back_arrow.svg
│ │ │ ├── close.png
│ │ │ ├── close.svg
│ │ │ ├── next_level.png
│ │ │ └── next_level.svg
│ │ ├── partners
│ │ │ ├── adobe_analytics.png
│ │ │ ├── chartbeat.png
│ │ │ ├── comscore.png
│ │ │ ├── ggl_bw.png
│ │ │ ├── ggl.png
│ │ │ ├── li.png
│ │ │ ├── nuzzel.png
│ │ │ ├── parsely.png
│ │ │ ├── pinterest.png
│ │ │ ├── tw.png
│ │ │ └── wp.png
│ │ ├── platforms
│ │ │ ├── chrome.png
│ │ │ ├── criteo.png
│ │ │ ├── edge.png
│ │ │ ├── firefox.png
│ │ │ ├── google.png
│ │ │ ├── inmobi.png
│ │ │ ├── kargo.png
│ │ │ ├── mediavine.png
│ │ │ ├── opera.png
│ │ │ ├── plista.png
│ │ │ ├── safari.png
│ │ │ └── yahoo.png
│ │ ├── publishers
│ │ │ ├── abril.png
│ │ │ ├── asahi.png
│ │ │ ├── atlantic_media.png
│ │ │ ├── bbc_news.png
│ │ │ ├── buzzfeed.png
│ │ │ ├── condenast.png
│ │ │ ├── daily_mail.png
│ │ │ ├── economist.png
│ │ │ ├── editora_globo.png
│ │ │ ├── el_pais.png
│ │ │ ├── fairfax_media.png
│ │ │ ├── folha_de_s.paulo.png
│ │ │ ├── franzfurter_allgemeine.png
│ │ │ ├── ft.png
│ │ │ ├── gannett.png
│ │ │ ├── guardian.png
│ │ │ ├── hearst.png
│ │ │ ├── huffington_post.png
│ │ │ ├── la_stampa.png
│ │ │ ├── les_echos.png
│ │ │ ├── mainichi.png
│ │ │ ├── mashable.png
│ │ │ ├── mcclatchy.png
│ │ │ ├── new_york_times.png
│ │ │ ├── newscorp_australia.png
│ │ │ ├── nine_msn.png
│ │ │ ├── nrc.png
│ │ │ ├── ny_daily_news.png
│ │ │ ├── nypost.png
│ │ │ ├── pearson.png
│ │ │ ├── sankei.png
│ │ │ ├── telegraph.png
│ │ │ ├── time.png
│ │ │ ├── uol.png
│ │ │ ├── us_news.png
│ │ │ ├── vox_media.png
│ │ │ ├── wallstreetjournal.png
│ │ │ ├── washington_post.png
│ │ │ └── zeit_online.png
│ │ ├── quotes
│ │ │ ├── chartbeat.jpg
│ │ │ ├── ebay.jpg
│ │ │ ├── faz.jpg
│ │ │ ├── folha.jpg
│ │ │ ├── google.jpg
│ │ │ ├── guardian.jpg
│ │ │ ├── hearst.jpg
│ │ │ ├── lastampa.jpg
│ │ │ ├── newyorktimes.jpeg
│ │ │ ├── twitter.jpg
│ │ │ └── vox.jpg
│ │ ├── return-parameter.png
│ │ ├── sprite.svg
│ │ ├── symbols
│ │ │ ├── carat-down.svg
│ │ │ ├── carat.svg
│ │ │ ├── caret-right.svg
│ │ │ ├── close.svg
│ │ │ ├── lang-icon.svg
│ │ │ ├── logo-blue-standalone.svg
│ │ │ ├── return.svg
│ │ │ ├── search.svg
│ │ │ ├── share-close.svg
│ │ │ ├── share.svg
│ │ │ ├── template.scss
│ │ │ ├── twitter.svg
│ │ │ ├── video-play.svg
│ │ │ └── wordpress.svg
│ │ └── twitter.png
│ ├── manifest.json
│ ├── sass
│ │ ├── _accordions.scss
│ │ ├── _animated_lines.scss
│ │ ├── _animations.scss
│ │ ├── _bg-triangle.scss
│ │ ├── _callouts.scss
│ │ ├── _cards.scss
│ │ ├── _carousel.scss
│ │ ├── _config.scss
│ │ ├── _content-post.scss
│ │ ├── _content-section.scss
│ │ ├── _content.scss
│ │ ├── _doc-nav.scss
│ │ ├── _footer.scss
│ │ ├── _global.scss
│ │ ├── _grid.scss
│ │ ├── _header.scss
│ │ ├── _inline-toc.scss
│ │ ├── _lang_switcher.scss
│ │ ├── _large-cta.scss
│ │ ├── _lightbox.scss
│ │ ├── _mixins.scss
│ │ ├── _nav.scss
│ │ ├── _points.scss
│ │ ├── _post-item.scss
│ │ ├── _responsive.scss
│ │ ├── _search.scss
│ │ ├── _share.scss
│ │ ├── _sidebar.scss
│ │ ├── _sprite_generated.scss
│ │ ├── _sprite.scss
│ │ ├── _syntax_highlighting.scss
│ │ ├── _tables.scss
│ │ ├── _toc.scss
│ │ ├── about-how.min.scss
│ │ ├── about-overview.min.scss
│ │ ├── about-who-vertical.min.scss
│ │ ├── about-who.min.scss
│ │ ├── blog.min.scss
│ │ ├── case-study.min.scss
│ │ ├── design-principles.min.scss
│ │ ├── docs.min.scss
│ │ ├── home.min.scss
│ │ ├── list.min.scss
│ │ ├── main.min.scss
│ │ ├── pages
│ │ │ ├── _about-how.scss
│ │ │ ├── _about-overview.scss
│ │ │ ├── _about-who-vertical.scss
│ │ │ ├── _about-who.scss
│ │ │ ├── _case-study.scss
│ │ │ ├── _design-principles.scss
│ │ │ ├── _events.scss
│ │ │ ├── _faqs.scss
│ │ │ ├── _home.scss
│ │ │ ├── _latest.scss
│ │ │ ├── _list.scss
│ │ │ ├── _post-detail.scss
│ │ │ ├── _roadmap.scss
│ │ │ ├── _who.scss
│ │ │ └── amp-conf.scss
│ │ └── section.min.scss
│ └── video
│ ├── amp-phone.mp4
│ └── amp-phone.webm
├── content
│ ├── contribute
│ │ └── governance.md
│ ├── docs
│ │ ├── _blueprint.yaml
│ │ ├── blank.html
│ │ ├── build.md
│ │ ├── contribute
│ │ │ ├── _blueprint.yaml
│ │ │ ├── contribute.md
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── file-a-bug.md
│ │ │ └── github.md
│ │ ├── contribute.md
│ │ ├── get_started
│ │ │ ├── _blueprint.yaml
│ │ │ ├── create
│ │ │ │ ├── _blueprint.yaml
│ │ │ │ ├── basic_markup.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── basic_markup@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── basic_markup@zh_CN.md
│ │ │ │ ├── include_image.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── include_image@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── include_image@zh_CN.md
│ │ │ │ ├── prepare_for_discovery.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── prepare_for_discovery@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── prepare_for_discovery@zh_CN.md
│ │ │ │ ├── presentation_layout.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── presentation_layout@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── presentation_layout@zh_CN.md
│ │ │ │ ├── preview_and_validate.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── preview_and_validate@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── preview_and_validate@zh_CN.md
│ │ │ │ ├── publish.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── publish@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └── publish@zh_CN.md
│ │ │ ├── create.md
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── create@pt_BR.md
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── create@zh_CN.md
│ │ │ ├── live_blog.md
│ │ │ ├── [email protected]
│ │ │ ├── login_requiring
│ │ │ │ ├── _blueprint.yaml
│ │ │ │ ├── add_comment.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── login.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── logout.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── summary.md
│ │ │ │ └── [email protected]
│ │ │ ├── login_requiring.md
│ │ │ └── [email protected]
│ │ ├── getting-started.md
│ │ ├── guides
│ │ │ ├── _blueprint.yaml
│ │ │ ├── author_develop
│ │ │ │ ├── _blueprint.yaml
│ │ │ │ ├── ads_on_amp
│ │ │ │ │ ├── _blueprint.yaml
│ │ │ │ │ ├── ads_getting_started.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── ads_tips.md
│ │ │ │ │ └── [email protected]
│ │ │ │ ├── ads_on_amp.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── amp_replacements.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── iframes.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── responsive_amp
│ │ │ │ │ ├── _blueprint.yaml
│ │ │ │ │ ├── art_direction.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── control_layout.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── control_layout@pt_BR.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── control_layout@zh_CN.md
│ │ │ │ │ ├── custom_fonts.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── placeholders.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── style_pages.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── style_pages@pt_BR.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ └── style_pages@zh_CN.md
│ │ │ │ ├── responsive_amp.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── responsive_amp@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── responsive_amp@zh_CN.md
│ │ │ │ ├── third_party_components.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── third_party_components@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └── third_party_components@zh_CN.md
│ │ │ ├── author_develop.md
│ │ │ ├── debug
│ │ │ │ ├── _blueprint.yaml
│ │ │ │ ├── validate.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── validate@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └── validate@zh_CN.md
│ │ │ ├── debug.md
│ │ │ ├── deploy
│ │ │ │ ├── _blueprint.yaml
│ │ │ │ ├── analytics_amp
│ │ │ │ │ ├── _blueprint.yaml
│ │ │ │ │ ├── analytics_basics.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── analytics_basics@pt_BR.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── analytics_basics@zh_CN.md
│ │ │ │ │ ├── deep_dive_analytics.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── deep_dive_analytics@pt_BR.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── deep_dive_analytics@zh_CN.md
│ │ │ │ │ ├── use_cases.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── use_cases@pt_BR.md
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ └── use_cases@zh_CN.md
│ │ │ │ ├── analytics_amp.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── analytics_amp@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── analytics_amp@zh_CN.md
│ │ │ │ ├── discovery.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── discovery@pt_BR.md
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── discovery@zh_CN.md
│ │ │ │ ├── engagement.md
│ │ │ │ └── [email protected]
│ │ │ ├── deploy.md
│ │ │ └── embed
│ │ │ ├── _blueprint.yaml
│ │ │ └── login-paywalls.md
│ │ ├── guides.md
│ │ ├── reference
│ │ │ ├── _blueprint.yaml
│ │ │ ├── common_attributes.md
│ │ │ ├── components
│ │ │ │ ├── _blueprint.yaml
│ │ │ │ ├── ads-analytics
│ │ │ │ │ └── _blueprint.yaml
│ │ │ │ ├── dynamic-content
│ │ │ │ │ └── _blueprint.yaml
│ │ │ │ ├── layout
│ │ │ │ │ └── _blueprint.yaml
│ │ │ │ ├── media
│ │ │ │ │ └── _blueprint.yaml
│ │ │ │ ├── presentation
│ │ │ │ │ └── _blueprint.yaml
│ │ │ │ └── social
│ │ │ │ └── _blueprint.yaml
│ │ │ ├── components.md
│ │ │ ├── experimental.md
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── experimental@pt_BR.md
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── experimental@zh_CN.md
│ │ │ ├── validation_errors.md
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── validation_errors@pt_BR.md
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ └── validation_errors@zh_CN.md
│ │ ├── reference.md
│ │ └── tutorials.md
│ ├── includes
│ │ ├── _blueprint.yaml
│ │ ├── amp-conf-2017.yaml
│ │ ├── amp-iframe.md
│ │ ├── blog_feed.yaml
│ │ ├── doc.yaml
│ │ ├── events.yaml
│ │ ├── home.yaml
│ │ ├── html-example.md
│ │ ├── latest.yaml
│ │ ├── list-blog.yaml
│ │ ├── lists.yaml
│ │ ├── menu.yaml
│ │ ├── roadmap.yaml
│ │ └── tweets.yaml
│ ├── latest
│ │ ├── _blueprint.yaml
│ │ ├── blog
│ │ │ ├── _blueprint.yaml
│ │ │ ├── 1056.md
│ │ │ ├── ads-on-the-web-will-get-better-with-amp-heres-how.md
│ │ │ ├── amp-roadmap-update-for-mid-q1-2017.md
│ │ │ ├── amp-up-for-amp-conf-2017.md
│ │ │ ├── grow-your-business-with-ads-on-amp.md
│ │ │ ├── new-default-placeholders-for-ads-in-amp.md
│ │ │ ├── new-industry-benchmarks-for-mobile-page-speed.md
│ │ │ ├── speeding-up-news-apps-with-amp.md
│ │ │ ├── whats-in-an-amp-url.md
│ │ │ └── why-amp-caches-exist.md
│ │ ├── latest.html
│ │ ├── list-blog.html
│ │ ├── list-event.html
│ │ ├── list-past-event.html
│ │ └── roadmap.html
│ ├── learn
│ │ ├── _blueprint.yaml
│ │ ├── about-amp.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── about-amp@pt_BR.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── about-amp@zh_CN.md
│ │ ├── about-how.yaml
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── about-how@pt_BR.yaml
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── about-how@zh_CN.yaml
│ │ ├── amp-design-principles.yaml
│ │ ├── browsers.md
│ │ ├── case-studies
│ │ │ ├── _blueprint.yaml
│ │ │ ├── category
│ │ │ │ ├── _blueprint.yaml
│ │ │ │ ├── advertisers.md
│ │ │ │ └── publishers.md
│ │ │ ├── gizmodo.md
│ │ │ ├── hearst.md
│ │ │ ├── milestone.md
│ │ │ ├── plista.md
│ │ │ ├── relay_media.md
│ │ │ ├── slate.md
│ │ │ ├── teads.md
│ │ │ ├── terra.md
│ │ │ ├── washingtonpost.md
│ │ │ └── wired.md
│ │ ├── case-studies.html
│ │ ├── how-amp-works.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── how-amp-works@pt_BR.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── how-amp-works@zh_CN.md
│ │ ├── metrics.html
│ │ ├── overview.yaml
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── overview@pt_BR.yaml
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── overview@zh_CN.yaml
│ │ ├── who
│ │ │ ├── _blueprint.yaml
│ │ │ ├── ad-tech-platforms.yaml
│ │ │ ├── advertisers.yaml
│ │ │ ├── amp-ads.yaml
│ │ │ └── publishers.yaml
│ │ └── who-uses-amp.yaml
│ ├── pages
│ │ ├── _blueprint.yaml
│ │ ├── amp-conf-2017
│ │ │ ├── _blueprint.yaml
│ │ │ ├── accessibility.html
│ │ │ └── code-of-conduct.html
│ │ ├── amp-conf-2017.html
│ │ ├── home.html
│ │ ├── how-it-works.html
│ │ └── metrics_chart.html
│ └── support
│ ├── _blueprint.yaml
│ ├── developer
│ │ ├── _blueprint.yaml
│ │ ├── documentation-bug.md
│ │ ├── mailing-list.md
│ │ ├── platform-bug.md
│ │ ├── slack.md
│ │ └── stack-overflow.md
│ ├── developer.md
│ ├── faqs
│ │ ├── _blueprint.yaml
│ │ ├── overview.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── overview@pt_BR.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── overview@zh_CN.md
│ │ ├── platform-involvement.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── platform-involvement@pt_BR.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── platform-involvement@zh_CN.md
│ │ ├── publisher-monetization.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── publisher-monetization@pt_BR.md
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── publisher-monetization@zh_CN.md
│ │ └── supported-platforms.md
│ ├── faqs.md
│ ├── platform.md
│ ├── support.md
│ ├── vendor
│ │ ├── _blueprint.yaml
│ │ └── amp-certification.md
│ └── vendor.md
├── CONTRIBUTING.md
├── firebase.json
├── gulpfile.js
├── LICENSE
├── npm-shrinkwrap.json
├── package.json
├── podspec.yaml
├── pwa
│ ├── google7199ce9da1ad191b.html
│ ├── pwa.html
│ ├── pwa.js
│ └── service-worker.js
├── README.md
├── scripts
│ ├── component_categories.json
│ ├── import_docs.js
│ ├── import_docs.json
│ ├── update_blog_links.js
│ ├── update_platforms_page.js
│ └── update_tweets.js
├── translations
│ ├── ar
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── de
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── es
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── fr
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── id
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── it
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── ja
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── ko
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── messages.pot
│ ├── pl
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── pt_BR
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── ru
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── th
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ ├── tr
│ │ └── LC_MESSAGES
│ │ └── messages.po
│ └── zh_CN
│ └── LC_MESSAGES
│ └── messages.po
└── views
├── about-casestudies.html
├── about-how.html
├── about-overview.html
├── about-who-vertical.html
├── about-who.html
├── base.html
├── blank.html
├── blog_detail.html
├── case-study.html
├── design-principles.html
├── doc.html
├── grid_page.html
├── list_page.html
├── partials
│ ├── breadcrumb-nav.html
│ ├── doc_nav.html
│ ├── faq-accordion.html
│ ├── footer-cta.html
│ ├── footer.html
│ ├── grid-card.html
│ ├── head.html
│ ├── header.html
│ ├── lang_switcher.html
│ ├── large-cta.html
│ ├── lines.html
│ ├── nav.html
│ ├── points.html
│ ├── post-item.html
│ ├── promo_banner.html
│ ├── search.html
│ ├── share.html
│ ├── sidebar.html
│ └── sub_nav.html
└── section_page.html
```
# Files
--------------------------------------------------------------------------------
/content/docs/reference/[email protected]:
--------------------------------------------------------------------------------
```markdown
---
$title: Błędy weryfikacji stron AMP
---
<!---
Copyright 2015 The AMP HTML Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS-IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
Poprawne dokumenty AMP nie mogą zawierać żadnych błędów weryfikacji.
Ten artykuł pomoże Ci lepiej zrozumieć błędy weryfikacji i skuteczniej usuwać problemy, które możesz napotkać podczas [weryfikacji stron AMP](/docs/guides/validate.html).
Pełny przegląd błędów weryfikacji zawiera [specyfikacja narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
[TOC]
## Błędy tagów HTML i atrybutów na stronach AMP
### Brak obowiązkowego tagu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>MANDATORY_TAG_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The mandatory tag '%1' is missing or incorrect."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Dodaj (lub popraw) obowiązkowy tag HTML.</td>
</tr>
</table>
Wszystkie dokumenty AMP muszą zawierać poniższe tagi:
* <a name="doctype"></a>`<!doctype html>`
* <a name="html"></a>`<html amp> or <html ⚡>`
* <a name="head"></a>`<head>`
* <a name="canonical"></a>`<link rel="canonical" href="$SOME_URL" />`
* <a name="utf"></a>`<meta charset="utf-8">`
* <a name="viewport"></a>`<meta name="viewport" content="...">`
* <a name="boilerplate"></a>`<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>`
* <a name="ampscript"></a>`<script async src="https://cdn.ampproject.org/v0.js"></script>`
* <a name="body"></a>`<body>`
Obowiązkowe tagi zawierają pole `mandatory: true` w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii), a [specyfikacja AMP](/docs/reference/spec.html) również odwołuje się do niego.
### Brak tagu wymaganego przez inny tag
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>TAG_REQUIRED_BY_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The '%1' tag is missing or incorrect, but required by '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Dodaj (lub popraw) wymagany tag HTML.</td>
</tr>
</table>
Narzędzie do weryfikacji generuje błąd `TAG_REQUIRED_BY_MISSING` po napotkaniu rozszerzonego komponentu w dokumencie AMP, dla którego nie ma odpowiednika w postaci tagu `<script>`.
[Rozszerzone komponenty](/docs/reference/extended.html) muszą być zawarte w dokumencie AMP jako niestandardowe elementy.
Aby usunąć takie błędy, przejdź do referencyjnej strony rozszerzonego elementu, skopiuj wymagany skrypt i wklej go do tagu `<head>` dokumentu AMP.
### Niedozwolony tag
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>DISALLOWED_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' is disallowed."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń niedozwolony tag.</td>
</tr>
</table>
Tagi są dozwolonymi elementami, i chociaż nie istnieje zamknięta lista wszystkich niedozwolonych tagów, [specyfikacja AMP](/docs/reference/spec.html) zawiera obszerną definicję takich tagów.
### Brak obowiązkowego atrybutu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>MANDATORY_ATTR_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The mandatory attribute '%1' is missing in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Dodaj obowiązkowy atrybut do tagu.</td>
</tr>
</table>
Obowiązkowe atrybuty tagów AMP są zdefiniowane w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Wystarczy tylko znaleźć tag, przejrzeć wyświetlone atrybuty i sprawdzić, czy występuje tam wartość `mandatory: true`.
Specyfikacja każdego tagu AMP zawiera również jego obowiązkowe atrybuty.
### Nieprawidłowa wartość atrybutu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>INVALID_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is set to the invalid value '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Zmień wartość atrybutu na prawidłową.</td>
</tr>
</table>
Ten błąd oznacza, że tag HTML zawiera atrybut o dozwolonej nazwie, ale o niedozwolonej wartości.
Ten błąd wywołują często nieprawidłowe wartości adresów URL.
Wszystkie wartości adresów URL (w atrybutach `href` i `src`) muszą odpowiadać jednej z takich [możliwych wartości atrybutów](http://www.w3schools.com/tags/att_a_href.asp).
<strong>WAŻNE:</strong> wiele wartości adresów URL na stronach AMP wymaga HTTPS. Jeśli ten błąd pojawia się z niejasnych dla Ciebie przyczyn, sprawdź w specyfikacji odpowiedniego tagu AMP, czy konkretny atrybut wymaga HTTPS.
### Niedozwolony atrybut
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>DISALLOWED_ATTR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' may not appear in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń atrybut z tagu HTML.</td>
</tr>
</table>
Atrybuty są dozwolonymi elementami, dlatego nie istnieje zamknięta lista wszystkich niedozwolonych atrybutów.
Aby dowiedzieć się, które atrybuty są obsługiwane w przypadku konkretnego tagu, wyszukaj tag HTML, a następnie atrybut `attrs` w [specyfikacji narzędzia AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Oprócz listy dozwolonych atrybutów każdego tagu, wszystkie tagi AMP mogą używać dowolnego atrybutu wymienionego w sekcji `$GLOBAL_ATTRS`. Dozwolone są również wszystkie atrybuty z prefiksem `"data-"`.
### Brak obowiązkowego tekstu lub jest on nieprawidłowy
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>MANDATORY_CDATA_MISSING_OR_INCORRECT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The mandatory text (CDATA) inside tag '%1' is missing or incorrect."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Dodaj lub popraw obowiązkowy tekst w tagu.</td>
</tr>
</table>
CDATA to dane o treści umieszczone między początkowym i końcowym tagiem HTML, które są aktualnie weryfikowane w celu umieszczenia ich na liście elementów dozwolonych albo niedozwolonych.
Przykłady tagów z obowiązkowymi danymi CDATA:
[sourcecode:html]
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
[/sourcecode]
oraz:
[sourcecode:html]
<style amp-custom>
[/sourcecode]
Przykłady komunikatów związanych z tym problemem:
* „Obowiązkowy schemat stylu (kod JavaScript włączony)”
* „Obowiązkowy schemat stylu (brak skryptu)”
* „Niedozwolony prefiks nazwy klasy CSS -amp-”
* „Niedozwolony atrybut !important w kodzie CSS”
* „Niedozwolony atrybut @charset w kodzie CSS”
* „Niedozwolony atrybut @import w kodzie CSS”
* „Niedozwolony atrybut @namespace w kodzie CSS”
* „Niedozwolony atrybut @supports w kodzie CSS”
* „Niedozwolony atrybut @document w kodzie CSS”
* „Niedozwolony atrybut @page w kodzie CSS”
* „Niedozwolony atrybut @viewport w kodzie CSS”
### Niedozwolony tekst w tagu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>CDATA_VIOLATES_BLACKLIST</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The text (CDATA) inside tag '%1' matches '%2', which is disallowed."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń niedozwolony tekst.</td>
</tr>
</table>
Określone dane CSS są niedozwolone w procesie weryfikacji podstawowych reguł CSS stron AMP.
Poniżej znajduje się lista niedozwolonych danych CSS (zobacz też atrybut [`blacklisted_cdata_regex` w specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii)):
* `"\\.i?-amp-"` („prefiks nazwy klasy CSS -amp-”)
* `"!important"`
* `"charset"`
* `"@import"`
* `"@namespace"`
* `"@document"`
* `"@page"`
* `"@viewport"`
### Niedozwolona właściwość w atrybucie w tagu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>DISALLOWED_PROPERTY_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The property '%1' in attribute '%2' in tag '%3' is disallowed."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń niedozwoloną właściwość w określonym atrybucie.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy atrybut zawiera niedozwoloną nazwę właściwości.
W tym kontekście termin „właściwość” oznacza strukturalne dane klucza/wartości w atrybucie.
Na przykład atrybuty `width` i `minimum-scale` w tagu `<meta name="viewport content="width=device-width;minimum-scale=1">` są nazwami właściwości.
Użycie poniższego tagu spowoduje wygenerowanie błędu DISALLOWED_PROPERTY_IN_ATTR_VALUE:
`<meta name="viewport content="width=device-width;invalidfoo=1">`
Innym przykładem tagu, który spowoduje wystąpienie błędu, jest:
`<meta http-equiv="X-UA-Compatible" content="invalidfoo=edge">`
Prawidłowa składnia: `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
### Nieprawidłowa wartość właściwości
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>INVALID_PROPERTY_VALUE_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The property '%1' in attribute '%2' in tag '%3' is set to '%4', which is invalid."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Popraw wartość właściwości.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy atrybut zawiera nieprawidłową wartość właściwości.
W tym kontekście termin „właściwość” oznacza strukturalne dane klucza/wartości w atrybucie.
Na przykład atrybuty `device-width` i `1` w tagu `<meta name="viewport content="width=device-width;minimum-scale=1">` są wartościami właściwości.
Użycie poniższego tagu spowoduje wystąpienie błędu INVALID_PROPERTY_VALUE_IN_ATTR_VALUE:
`<meta name=viewport content="width=device-width;minimum-scale=invalidfoo">`
Innym przykładem tagu, który spowoduje wystąpienie błędu, jest:
`<meta http-equiv="X-UA-Compatible" content="ie=invalidfoo">`
Prawidłowa składnia: `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
### Brak adresu URL
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>MISSING_URL</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Missing URL for attribute '%1' in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Dodaj prawidłowy adres URL.</td>
</tr>
</table>
Ten błąd występuje w przypadku braku adresu URL w atrybucie, który go wymaga – na przykład wówczas, gdy atrybuty `href` lub `src` są puste.
### Nieprawidłowy adres URL
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>INVALID_URL_PROTOCOL</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Malformed URL '%3' for attribute '%1' in tag '%2'"</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Popraw adres URL.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy atrybut zawiera adres URL, ale jest on nieprawidłowy.
### Nieprawidłowy protokół adresu URL
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>INVALID_URL_PROTOCOL</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>Invalid URL protocol '%3:' for attribute '%1' in tag '%2'.</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Użyj prawidłowego protokołu. Być może protokół `http` należy zastąpić protokołem `https`.</td>
</tr>
</table>
Ten błąd występuje w przypadku tagów zawierających atrybuty `href` lub `src`, którym trzeba przyporządkować konkretną wartość (konkretny protokół).
Na przykład wiele tagów wymaga protokołu `https`.
### Brak obowiązkowej właściwości w atrybucie
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The property '%1' is missing from attribute '%2' in tag '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Dodaj brakującą właściwość.</td>
</tr>
</table>
Obecnie ten błąd występuje w przypadku braku poniższych obowiązkowych właściwości:
* `content="...ie=..."`
* `content="...width=..."`
* `content="...minimum-scale=..."`
Odnoszą się one do oczekiwanych tagów:
* `<meta http-equiv="X-UA-Compatible" content="ie=edge">`
* `<meta name=viewport content="width=device-width;minimum-scale=1">`
### Wzajemnie wykluczające się atrybuty
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>MUTUALLY_EXCLUSIVE_ATTRS</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Mutually exclusive attributes encountered in tag '%1' - pick one of %2."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń jeden ze wzajemnie wykluczających się atrybutów.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy tag zawiera oba wzajemnie wykluczające się atrybuty.
Na przykład w poniższych tagach dozwolony jest tylko jeden z wymienionych atrybutów:
* [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` albo `src`
* [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` albo `src`
* [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` albo `srcdoc`
* [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` albo `data-videoid`
### Brak obowiązkowego atrybutu z listy
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>MANDATORY_ONEOF_ATTR_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' is missing a mandatory attribute - pick one of %2." </td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Dodaj brakujący obowiązkowy atrybut z podanej listy atrybutów.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy w tagu brakuje jednego wymaganego atrybutu.
Na przykład poniższe tagi wymagają jednego z dwóch atrybutów do wyboru:
* [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` albo `src`
* [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` albo `src`
* [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` albo `srcdoc`
* [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` albo `data-videoid`
### Niewłaściwy tag nadrzędny
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>WRONG_PARENT_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The parent tag of tag '%1' is '%2', but it can only be '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Ustaw tag jako bezpośredni element podrzędny wymaganego tagu nadrzędnego.</td>
</tr>
</table>
Niektóre tagi wymagają bezpośredniego tagu nadrzędnego (w przeciwieństwie do odległego przodka).
Poniżej znajduje się lista wymaganych tagów nadrzędnych dla określonych tagów (w kolejności tag – element nadrzędny):
* Tag `!doctype` wymaga tagu nadrzędnego `root`.
* Tag `html` wymaga tagu nadrzędnego `!doctype`.
* Tag `head` wymaga tagu nadrzędnego `html`.
* Tag `body` wymaga tagu nadrzędnego `html`.
* Tag `link` wymaga tagu nadrzędnego `head`.
* Tag `meta` wymaga tagu nadrzędnego `head`.
* Tag `style amp-custom` wymaga tagu nadrzędnego `head`.
* Tag `style` wymaga tagu nadrzędnego `boilerplate (noscript)`.
* Tag `noscript` wymaga tagu nadrzędnego `head`.
* Tag `script` wymaga tagu nadrzędnego `head`.
* Tag `source` wymaga tagu multimediów (`amp-audio`, `amp-video` itd.).
### Niedozwolony przodek tagu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>DISALLOWED_TAG_ANCESTOR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' may not appear as a descendant of tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń (albo przenieś) niedozwolony zagnieżdżony tag.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy tag jest potomkiem innego tagu, który nie przeszedł weryfikacji.
Obecnie jedynym przykładem jest tag `template`, który nie może być zagnieżdżony pod innym tagiem `template`.
### Obowiązkowy przodek tagu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>MANDATORY_TAG_ANCESTOR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' may only appear as a descendant of tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Przenieś tag albo ustaw go jako potomka określonego tagu.</td>
</tr>
</table>
Obowiązkowe tagi potomne są zdefiniowane za pomocą atrybutu `mandatory_ancestor` w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Ten błąd występuje w przypadku, gdy w poniższych tagach brakuje atrybutu `mandatory_ancestor` (w kolejności tag – przodek):
* Tag `img` musi być elementem potomnym tagu `noscript`.
* Tag `video` musi być elementem potomnym tagu `noscript`.
* Tag `audio` musi być elementem potomnym tagu `noscript`.
* Tag `noscript` musi być elementem potomnym tagu `body`.
### Obowiązkowy przodek tagu z podpowiedzią
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>MANDATORY_TAG_ANCESTOR_WITH_HINT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' may only appear as a descendant of tag '%2'. Did you mean '%3'?"</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń tag, ustaw go jako element potomny określonego tagu lub zastąp go tagiem z podpowiedzią.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy dokument AMP zawiera jeden z poniższych tagów, który jest nieprawidłowo zagnieżdżony w jego obowiązkowym tagu nadrzędnym:
* Tag `img` nie jest zagnieżdżony w tagu nadrzędnym `noscript`.
* Tag `video` nie jest zagnieżdżony w tagu nadrzędnym `noscript`.
* Tag `audio` nie jest zagnieżdżony w tagu nadrzędnym `noscript`.
* Tag `noscript` nie jest zagnieżdżony w tagu nadrzędnym `body`.
### Zduplikowany unikalny tag
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>DUPLICATE_UNIQUE_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' appears more than once in the document."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń jeden ze zduplikowanych tagów z dokumentu AMP.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy dozwolone jest tylko jedno wystąpienie tagu, a dokument zawiera jego duplikat.
Znana jest pełna lista unikalnych tagów:
* `<doctype html>`
* `<html amp>`
* `<head>`
* `<link rel=canonical href=...>`
* `<link rel=amphtml href=...>`
* `<meta charset="utf-8">`
* `<meta viewport>`
* `<style amp-custom>`
* `<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>`
* `<body>`
* `<script src="https://cdn.ampproject.org/v0.js">`
## Błędy stylu i układu
Zanim przejdziemy do omawiania błędów stylu i układu, warto wyjaśnić działanie [stylu](/docs/guides/responsive/style_pages.html) i [układu](/docs/guides/responsive/control_layout.html) na stronach AMP. Strony AMP są stronami HTML, dlatego ich styl jest bardzo podobny do stylu każdej strony HTML.
Istnieją jednak pewne ograniczenia, które mają zagwarantować szybkie wczytywanie się stron, a narzędzie do weryfikacji stron AMP wymusza stosowanie tych ograniczeń.
Na stronach AMP układ podlega ściślejszej kontroli.
Każdy wyświetlany na stronie tag wymaga wstępnie określonej wysokości i szerokości, co znacznie usprawnia renderowanie i przewijanie.
Nie oznacza to, że te atrybuty muszą być wpisywane ręcznie.
Niektóre układy przyjmują domyślne wartości, dlatego narzędzie do weryfikacji stron AMP nie będzie generować błędów w ich przypadku.
Każdy tag AMP zawiera listę atrybutów `supported_layouts` zdefiniowaną w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Narzędzie generuje błędy w przypadku nieobsługiwanych układów, a zasady weryfikacji stosuje do układów o wstępnie zdefiniowanych parametrach.
### Zbyt długi arkusz stylów
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>STYLESHEET_TOO_LONG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The author stylesheet specified in tag 'style' is too long - we saw %1 bytes whereas the limit is %2 bytes."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Zmniejsz rozmiar arkusza stylów tak, by nie przekraczał 50 000 bajtów.</td>
</tr>
</table>
Narzędzie do weryfikacji stron AMP generuje ten błąd, gdy zmierzony rozmiar zawartości stylów w tagu `<style amp-custom>` przekracza limit 50 000 bajtów.
### Błąd składni CSS
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>CSS_SYNTAX</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"CSS syntax error in tag '%1' - %2."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń błąd składni CSS.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy określony tag zawiera błędy składni CSS.
Jeśli nie wiesz, co powoduje ten błąd, spróbuj przeanalizować składnię CSS za pomocą internetowego narzędzia do weryfikacji składni CSS, takiego jak [csslint](http://csslint.net/).
### Błąd składni CSS w określonej regule
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>CSS_SYNTAX_INVALID_AT_RULE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"CSS syntax error in tag '%1' - saw invalid at rule '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń podany błąd składni CSS.</td>
</tr>
</table>
Ten błąd dotyczy reguł ze znakiem @ w składni CSS; standard AMP dopuszcza zaledwie kilka takich reguł w przypadku takiej składni
(zobacz też [specyfikację standardu AMP](/docs/reference/spec.html)).
Na przykład reguła `@import` jest niedozwolona.
Błąd weryfikacji wyraźnie wskazuje nieprawidłową regułę, co ułatwia usuwanie występujących w niej błędów.
### Tag AMP nie obsługuje domniemanego układu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>IMPLIED_LAYOUT_INVALID</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The implied layout '%1' is not supported by tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Podaj prawidłowy atrybut układu dla tagu.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy nie określisz układu dla tagu AMP, a domniemany układ (oparty na szerokości, wysokości i rozmiarach) nie jest obsługiwany.
Sprawdź wartości atrybutu `supported_layout` dla tagu w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Atrybut `layout` określa faktyczne działanie układu.
Więcej informacji na temat działania układu zawiera artykuł pt. [Kontrolowanie układu](/docs/guides/responsive/control_layout.html) oraz [specyfikacja systemowa układu AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
**Uwaga:** jeśli nie określisz układu i nie uwzględnisz wartości atrybutu `width` i `height`, układ przyjmie domyślną wartość CONTAINER. Narzędzie do weryfikacji wygeneruje błąd, ponieważ wartość CONTAINER nie jest obsługiwana przez żaden tag AMP.
Aby usunąć błąd, określ układ inny niż CONTAINER lub dodaj wartość `width` i/lub `height`.
### Atrybut niedozwolony przez domniemany układ
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>ATTR_DISALLOWED_BY_IMPLIED_LAYOUT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń niedozwolony atrybut z tagu albo określ układ, w którym taki atrybut jest dozwolony.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy nie określisz układu dla tagu AMP, a domniemany układ zawiera niedozwolony atrybut.
Niedozwolone atrybuty typów układów są opisane w [specyfikacji systemowej układu AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
### Określony układ nie jest obsługiwany przez tag AMP
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>SPECIFIED_LAYOUT_INVALID</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The specified layout '%1' is not supported by tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Określ układ, który jest obsługiwany przez tag.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy określony układ dla tagu nie jest obsługiwany.
Sprawdź wartości atrybutu `supported_layout` dla tagu w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Atrybut `layout` określa faktyczne działanie układu.
Więcej informacji na temat działania układu zawiera artykuł [Kontrolowanie układu](/docs/guides/responsive/control_layout.html) oraz [specyfikacja systemowa układu AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
### Atrybut niedozwolony przez określony układ
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń niedozwolony atrybut z tagu albo określ układ, w którym taki atrybut jest dozwolony.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy określisz układ dla tagu AMP, który zawiera niedozwolony atrybut.
Niedozwolone atrybuty typów układów są opisane w [specyfikacji systemowej układu AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
### Nieprawidłowa wartość dla atrybutu wymaganego przez układ
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>ATTR_VALUE_REQUIRED_BY_LAYOUT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Invalid value '%1' for attribute '%2' in tag '%3' - for layout '%4', set the attribute '%2' to value '%5'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Ustaw określoną wartość atrybutu.</td>
</tr>
</table>
Ten błąd występuje wówczas, gdy wartość atrybutu jest nieprawidłowa dla określonego układu.
Aby lepiej zrozumieć, co generuje ten błąd, dowiedz się więcej na temat [różnych schematów działania układów](/docs/guides/responsive/control_layout.html#size-and-position-elements).
Załóżmy, że układ ma być typu `fixed-height`, a parametry `height` i `width` mają określone wartości liczbowe.
Układ typu `fixed-height` przyjmuje wartość `height`.
Atrybut `width` nie może występować albo musi zostać ustawiony tak, by przyjmował wartość `auto`.
Narzędzie do weryfikacji generuje błąd ATTR_VALUE_REQUIRED_BY_LAYOUT.
### Niespójne jednostki szerokości i wysokości
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Inconsistent units for width and height in tag '%1' - width is specified in '%2' whereas height is specified in '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Użyj spójnych jednostek szerokości i wysokości.</td>
</tr>
</table>
Z wyjątkiem atrybutu `layout=fixed` wysokość i szerokość musi być wyrażona w tych samych jednostkach.
Gdy tak nie jest, występuje ten błąd.
Na przykład użycie tagu `<amp-img src="" layout="responsive" width="42px" height="42rem">` spowoduje wygenerowanie poniższego komunikatu o błędzie:
Niespójne jednostki szerokości i wysokości w tagu „amp-img” – szerokość jest podana w „px”, a wysokość – w „rem”.
## Błędy związane z użyciem szablonów
Strony AMP nie mogą zawierać składni określającej szablony, chyba że taka składnia jest umieszczona w tagu AMP, który z definicji ma zawierać szablony, na przykład [amp-mustache](/docs/reference/extended/amp-mustache.html).
Pliki źródłowe mogą zawierać szablony pod warunkiem, że dane wyjściowe wygenerowane z tych plików nie będą zawierać szablonów (zobacz też [Korzystanie z narzędzi do wstępnej obróbki kodu CSS](/docs/guides/responsive/style_pages.html#use-css-preprocessors)).
### Atrybut zawiera składnię szablonu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>TEMPLATE_IN_ATTR_NAME</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Mustache template syntax in attribute name '%1' in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń składnię szablonu otoczoną nawiasami klamrowymi z atrybutu.</td>
</tr>
</table>
Ten błąd występuje za każdym razem, gdy narzędzie do weryfikacji napotka na [składnię szablonu otoczoną nawiasami klamrowymi](https://mustache.github.io/mustache.5.html) w wartości atrybutu.
### Atrybut zawiera składnię szablonu bez kodów zmiany znaczenia
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>UNESCAPED_TEMPLATE_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is set to '%3', which contains unescaped Mustache template syntax."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Użyj kodów zmiany znaczenia składni szablonu otoczonej nawiasami klamrowymi.</td>
</tr>
</table>
Ten błąd występuje za każdym razem, gdy narzędzie do weryfikacji napotka na [składnię szablonu otoczoną nawiasami klamrowymi bez kodów zmiany znaczenia](https://mustache.github.io/mustache.5.html) w wartości atrybutu.
### Atrybut zawiera część szablonu
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>TEMPLATE_PARTIAL_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is set to '%3', which contains a Mustache template partial."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń część szablonu otoczonego nawiasami klamrowymi.</td>
</tr>
</table>
Ten błąd występuje za każdym razem, gdy narzędzie do weryfikacji napotka na [część szablonu otoczonego nawiasami klamrowymi](https://mustache.github.io/mustache.5.html) w wartości atrybutu.
## Błędy związane z nieużywanymi elementami
### Nieużywany tag
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>DEPRECATED_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>No error message defined as yet (no deprecated tags).</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Usuń nieużywany tag.</td>
</tr>
</table>
To ostrzeżenie występuje wówczas, gdy dokument AMP zawiera tag AMP, który wcześniej był poprawny.
Ten komunikat jest tylko ostrzeżeniem, które nie wpływa na poprawność dokumentów AMP.
Aktualnie nie istnieje lista nieużywanych tagów. To ostrzeżenie jest przeznaczone dla elementów, które w przyszłości przestaną być używane.
### Nieużywany atrybut
<table>
<tr>
<td class="col-thirty"><strong>Kod</strong></td>
<td>DEPRECATED_ATTR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is deprecated - use '%3' instead."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Rozwiązanie</strong></td>
<td>Zgodnie z właściwą praktyką usuń nieużywany atrybut.</td>
</tr>
</table>
To ostrzeżenie wyświetla się wówczas, gdy dokument AMP zawiera atrybut AMP, który wcześniej był poprawny.
Ten komunikat jest tylko ostrzeżeniem, które nie wpływa na poprawność dokumentów AMP.
Aby znaleźć nieużywane atrybuty każdego tagu AMP, wyszukaj ciąg `deprecation` w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
</body>
</html>
```
--------------------------------------------------------------------------------
/content/docs/reference/[email protected]:
--------------------------------------------------------------------------------
```markdown
---
$title: Errores de validación de AMP
---
Los documentos de AMP no pueden tener errores de validación.
La finalidad de este documento es ayudarte a entender mejor y a corregir cualquier error de validación que encuentres al [validar páginas de AMP](/docs/guides/validate.html).
Para obtener una visión general completa de los errores de validación, consulta la [especificación del validador de AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
[TOC]
## Errores en atributos y etiquetas AMP HTML
### Falta una etiqueta obligatoria
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>MANDATORY_TAG_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The mandatory tag '%1' is missing or incorrect."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Añade (o corrige) la etiqueta HTML obligatoria.</td>
</tr>
</table>
Todos los documentos de AMP deben contener las siguientes etiquetas:
* <a name="doctype"></a>`<!doctype html>`
* <a name="html"></a>`<html amp> or <html ⚡>`
* <a name="head"></a>`<head>`
* <a name="canonical"></a>`<link rel="canonical" href="$SOME_URL" />`
* <a name="utf"></a>`<meta charset="utf-8">`
* <a name="viewport"></a>`<meta name="viewport" content="...">`
* <a name="boilerplate"></a>`<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>`
* <a name="ampscript"></a>`<script async src="https://cdn.ampproject.org/v0.js"></script>`
* <a name="body"></a>`<body>`
Estas etiquetas obligatorias incluyen un campo `mandatory: true` en la [especificación del validador de AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii), y también se hace referencia a ellas en la [especificación de AMP](/docs/reference/spec.html).
### Falta una etiqueta requerida por otra etiqueta
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>TAG_REQUIRED_BY_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The '%1' tag is missing or incorrect, but required by '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Añade (o corrige) la etiqueta HTML requerida.</td>
</tr>
</table>
El validador emite el error `TAG_REQUIRED_BY_MISSING` cuando encuentra un componente ampliado en el documento de AMP, pero no encuentra su `<script>` equivalente.
Los [componentes ampliados](/docs/reference/extended.html) se deben incluir explícitamente en el documento de AMP como elementos personalizados.
Para corregir estos errores, ve a la página de referencia del componente ampliado, copia su secuencia de comandos requerida y pégala en el documento `<head>` de AMP.
### Etiqueta no permitida
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>DISALLOWED_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The tag '%1' is disallowed."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita la etiqueta no permitida.</td>
</tr>
</table>
Las etiquetas se incluyen en una lista blanca, por lo que no hay ninguna lista que incluya todas las etiquetas no permitidas. Sin embargo, en la [especificación de AMP](/docs/reference/spec.html) se define en términos generales el conjunto de etiquetas no permitidas.
### Falta un atributo obligatorio
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>MANDATORY_ATTR_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The mandatory attribute '%1' is missing in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Añade el atributo obligatorio a la etiqueta.</td>
</tr>
</table>
Los atributos obligatorios para las etiquetas de AMP se definen en las [especificaciones del validador de AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Busca la etiqueta, observa los atributos enumerados y comprueba que aparezca `mandatory: true`.
Los atributos obligatorios para cada etiqueta de AMP también aparecen en la especificación de la etiqueta.
### Valor del atributo no válido
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>INVALID_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The attribute '%1' in tag '%2' is set to the invalid value '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Corrige el valor del atributo para que sea válido.</td>
</tr>
</table>
Este error indica que una etiqueta HTML tiene un atributo con un nombre permitido, pero con un valor no permitido.
Por ejemplo, esto pasa a veces cuando las URL tienen valores no válidos. Todos los valores de URL (en los atributos `href` y `src`) deben coincidir con uno de estos [posibles valores de atributos](http://www.w3schools.com/tags/att_a_href.asp).
<strong>IMPORTANTE:</strong> Muchos valores de URL en AMP requieren HTTPS. Si recibes este error y no sabes por qué, consulta la especificación de la etiqueta AMP pertinente para ver si el atributo requiere HTTPS.
### Atributo no permitido
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>DISALLOWED_ATTR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The attribute '%1' may not appear in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita el atributo de la etiqueta HTML.</td>
</tr>
</table>
Los atributos se incluyen en una lista blanca, por lo que no hay ninguna lista definitiva de todos los atributos no permitidos.
Para consultar qué atributos admite cada etiqueta, busca la etiqueta HTML y, a continuación, `attrs` en la [especificación del validador de AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Todas las etiquetas de AMP pueden utilizar, además de los atributos específicos recogidos en una lista blanca para cada etiqueta, cualquiera de los atributos que se incluyan en la sección `$GLOBAL_ATTRS` de la lista blanca; todos los atributos con el prefijo `"data-"` también se incluyen en esta lista.
### Falta texto obligatorio o el texto es incorrecto
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>MANDATORY_CDATA_MISSING_OR_INCORRECT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The mandatory text (CDATA) inside tag '%1' is missing or incorrect."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Añade o corrige el texto obligatorio que contiene la etiqueta.</td>
</tr>
</table>
CDATA son los datos de contenido situado entre una etiqueta HTML de inicio y otra de final. Actualmente, se compara con listas blancas y listas negras.
Las etiquetas con CDATA obligatorio incluyen:
[sourcecode:html]
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
[/sourcecode]
Y:
[sourcecode:html]
<style amp-custom>
[/sourcecode]
Este caso se describe con uno de los siguientes mensajes detallados:
* "Mandatory style boilerplate (js enabled)"
* "Mandatory style boilerplate (noscript)"
* "Disallowed -amp- CSS class name prefix"
* "Disallowed !important attribute in CSS"
* "Disallowed @charset in CSS"
* "Disallowed @import in CSS"
* "Disallowed @namespace in CSS"
* "Disallowed @supports in CSS"
* "Disallowed @document in CSS"
* "Disallowed @page in CSS"
* "Disallowed @viewport in CSS"
### Texto no permitido dentro de la etiqueta
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>CDATA_VIOLATES_BLACKLIST</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The text (CDATA) inside tag '%1' matches '%2', which is disallowed."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita el texto no permitido.</td>
</tr>
</table>
Los datos de CSS específicos se han incluido en la lista negra para validar reglas fundamentales de AMP para CSS.
A continuación puedes consultar la lista de datos CSS incluidos en la lista negra (consulta también <a href="https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii">`blacklisted_cdata_regex` en la especificación del validador de AMP</a>):
* `"\\.i?-amp-"` ("prefijo de nombre de clase -amp- CSS")
* `"!important"`
* `"charset"`
* `"@import"`
* `"@namespace"`
* `"@document"`
* `"@page"`
* `"@viewport"`
### Propiedad no permitida dentro del atributo incluido en la etiqueta
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>DISALLOWED_PROPERTY_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The property '%1' in attribute '%2' in tag '%3' is disallowed."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita la propiedad no permitida en el atributo especificado.</td>
</tr>
</table>
Este error se produce cuando el nombre de la propiedad no se permite dentro de un atributo.
La propiedad del término, en este contexto, hace referencia a los datos clave-valor estructurados dentro de un atributo.
Por ejemplo, en `<meta name="viewport content="width=device-width;minimum-scale=1">`, `width` y `minimum-scale` son nombres de propiedades.
La cadena siguiente tiene como resultado un error DISALLOWED_PROPERTY_IN_ATTR_VALUE:
`<meta name="viewport content="width=device-width;invalidfoo=1">`
Igual que el ejemplo anterior, la cadena siguiente daría lugar a un error:
`<meta http-equiv="X-UA-Compatible" content="invalidfoo=edge">`
Debería ser `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
### Valor de propiedad no válido
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>INVALID_PROPERTY_VALUE_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The property '%1' in attribute '%2' in tag '%3' is set to '%4', which is invalid."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Corrige el valor de propiedad no válido.</td>
</tr>
</table>
Este error se produce cuando el valor de la propiedad dentro de un atributo no es válido.
La propiedad del término, en este contexto, hace referencia a los datos clave-valor estructurados dentro de un atributo.
Por ejemplo, en `<meta name="viewport content="width=device-width;minimum-scale=1">`, `device-width` y `1` son valores de propiedad.
La cadena siguiente devuelve un error INVALID_PROPERTY_VALUE_IN_ATTR_VALUE:
`<meta name=viewport content="width=device-width;minimum-scale=invalidfoo">`
Igual que el ejemplo anterior, la cadena siguiente daría lugar a un error:
`<meta http-equiv="X-UA-Compatible" content="ie=invalidfoo">`
Debería ser `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
### Falta la URL
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>MISSING_URL</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"Missing URL for attribute '%1' in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Añade la URL válida.</td>
</tr>
</table>
Este error se produce cuando un atributo requiere una URL pero no la tiene. Por ejemplo, un atributo `href` o `src` vacío.
### URL no válida
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>INVALID_URL_PROTOCOL</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"Malformed URL '%3' for attribute '%1' in tag '%2'"</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Corrige la URL incorrecta.</td>
</tr>
</table>
Este error se produce cuando un atributo tiene una URL, pero no es válida.
### Protocolo de URL no válido
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>INVALID_URL_PROTOCOL</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>Invalid URL protocol '%3:' for attribute '%1' in tag '%2'.</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Cámbialo por un protocolo válido, por ejemplo, cambia `http` por `https`.</td>
</tr>
</table>
Este error se produce en etiquetas cuyos atributos `href` o `src` se deben establecer en ciertos protocolos.
Por ejemplo, muchas etiquetas requieren `https`.
### Falta una propiedad obligatoria de un atributo
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The property '%1' is missing from attribute '%2' in tag '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Añade la propiedad que falta.</td>
</tr>
</table>
Actualmente, este error se produce si faltan estas propiedades obligatorias:
* `content="...ie=..."`
* `content="...width=..."`
* `content="...minimum-scale=..."`
Hacen referencia a etiquetas previstas:
* `<meta http-equiv="X-UA-Compatible" content="ie=edge">`
* `<meta name=viewport content="width=device-width;minimum-scale=1">`
### Atributos que se excluyen mutuamente
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>MUTUALLY_EXCLUSIVE_ATTRS</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"Mutually exclusive attributes encountered in tag '%1' - pick one of %2."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita uno de los atributos que se excluyen mutuamente.</td>
</tr>
</table>
Este error se produce cuando una etiqueta contiene dos atributos que se excluyen mutuamente.
Por ejemplo, en los siguientes casos, solo se permite uno de los dos atributos:
* [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` o `src`
* [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` o `src`
* [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` o `srcdoc`
* [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` o `data-videoid`
### Falta un atributo obligatorio en la lista
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>MANDATORY_ONEOF_ATTR_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The tag '%1' is missing a mandatory attribute - pick one of %2."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Añade el atributo obligatorio que falta en la selección de atributos proporcionados.</td>
</tr>
</table>
Este error se produce cuando a una etiqueta le falta un atributo requerido de varias opciones.
Por ejemplo, las siguientes etiquetas requieren uno de los dos atributos posibles:
* [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` o `src`
* [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` o `src`
* [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` o `srcdoc`
* [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` o `data-videoid`
### Etiqueta principal incorrecta
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>WRONG_PARENT_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The parent tag of tag '%1' is '%2', but it can only be '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Convierte la etiqueta en una etiqueta secundaria directa de la principal obligatoria.</td>
</tr>
</table>
Algunas etiquetas requieren una etiqueta principal inmediata (en contraposición a una etiqueta antecesora lejana).
A continuación se enumeran las etiquetas principales necesarias para etiquetas concretas (etiqueta, principal):
* `!doctype` requiere la etiqueta principal `root`.
* `html` requiere la etiqueta principal `!doctype`.
* `head` requiere la etiqueta principal `html`.
* `body` requiere la etiqueta principal `html`.
* `link` requiere la etiqueta principal `head`.
* `meta` requiere la etiqueta principal `head`.
* `style amp-custom` requiere la etiqueta principal `head`.
* `style` requiere la etiqueta principal `boilerplate (noscript)`.
* `noscript` requiere la etiqueta principal `head`.
* `script` requiere la etiqueta principal `head`.
* `source` requiere una etiqueta multimedia (`amp-audio`, `amp-video`, etc.).
### Etiqueta antecesora no permitida
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>DISALLOWED_TAG_ANCESTOR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The tag '%1' may not appear as a descendant of tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita (o mueve) la etiqueta anidada no permitida.</td>
</tr>
</table>
Este error se produce cuando una etiqueta es descendiente de otra etiqueta que no se valida.
En la actualidad, el único ejemplo es una etiqueta `template`, que podría no estar anidada en otra etiqueta `template`.
### Etiqueta antecesora obligatoria
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>MANDATORY_TAG_ANCESTOR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The tag '%1' may only appear as a descendant of tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita la etiqueta o conviértela en descendiente de la etiqueta específica.</td>
</tr>
</table>
En la [especificación del validador de AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii) se hace referencia a los descendientes obligatorios como `mandatory_ancestor`.
El error se produce cuando a las siguientes etiquetas les falta su `mandatory_ancestor` (etiqueta, antecesora):
* `img` debe ser descendiente de `noscript`.
* `video` debe ser descendiente de `noscript`.
* `audio` debe ser descendiente de `noscript`.
* `noscript` debe ser descendiente de `body`.
### Etiqueta antecesora obligatoria con sugerencia
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>MANDATORY_TAG_ANCESTOR_WITH_HINT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The tag '%1' may only appear as a descendant of tag '%2'. Did you mean '%3'?"</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita la etiqueta, conviértela en descendiente de la etiqueta específica o cambia la etiqueta por la etiqueta con sugerencia.</td>
</tr>
</table>
El error se produce cuando una de las siguientes etiquetas se encuentra en el documento de AMP y no está anidada correctamente en su etiqueta principal obligatoria:
* `img` no está dentro de la etiqueta `noscript` principal.
* `video` no está dentro de la etiqueta `noscript` principal.
* `audio` no está dentro de la etiqueta `noscript` principal.
* `noscript` no está dentro de la etiqueta `body` principal.
### Etiqueta única duplicada
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>DUPLICATE_UNIQUE_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The tag '%1' appears more than once in the document."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita una de las etiquetas duplicadas del documento de AMP.</td>
</tr>
</table>
Este error se produce cuando solo está permitido usar una instancia de la etiqueta y se encuentra un duplicado.
La lista completa de etiquetas únicas es la siguiente:
* `<doctype html>`
* `<html amp>`
* `<head>`
* `<link rel=canonical href=...>`
* `<link rel=amphtml href=...>`
* `<meta charset="utf-8">`
* `<meta viewport>`
* `<style amp-custom>`
* `<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>`
* `<body>`
* `<script src="https://cdn.ampproject.org/v0.js">`
## Errores de estilo y de diseño
Antes de entrar en los errores de [estilo](/docs/guides/responsive/style_pages.html) y de [diseño](/docs/guides/responsive/control_layout.html), hay que entender cómo funcionan en AMP. Como las páginas AMP son páginas HTML, el estilo es prácticamente el mismo que el de cualquier página HTML.
Sin embargo, para garantizar que las páginas se carguen rápidamente, presentan algunas restricciones que el validador de AMP se encarga de hacer cumplir.
El diseño está más controlado en las páginas de AMP.
Todas las etiquetas que se muestran en la página deben tener una altura y una anchura predefinidas. De este modo, se reducen notablemente el procesamiento y los errores en los desplazamientos por la página.
Pero esto no significa que debas incluir manualmente estos atributos,
ya que en algunos tipos de diseño, el validador de AMP no devuelve errores, sino que adopta los valores predeterminados.
Todas las etiquetas de AMP tienen una lista de `supported_layouts`, como se define en la [especificación del validador de AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
El validador devolverá errores cuando detecte diseños no admitidos y aplicará reglas de validación para el diseño predefinido.
### Hoja de estilo demasiado larga
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>STYLESHEET_TOO_LONG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The author stylesheet specified in tag 'style' is too long - we saw %1 bytes whereas the limit is %2 bytes."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Reduce el tamaño de la hoja de estilo hasta menos de 50.000 bytes.</td>
</tr>
</table>
El validador de AMP devuelve este error cuando detecta que el tamaño del contenido de estilos dentro de `<style amp-custom>` supera el límite de 50.000 bytes.
### Error de sintaxis CSS
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>CSS_SYNTAX</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"CSS syntax error in tag '%1' - %2."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Corrige el error de sintaxis CSS.</td>
</tr>
</table>
Este error se produce cuando hay errores de sintaxis CSS en la etiqueta especificada.
Si no estás seguro de lo que está provocando el error, intenta ejecutar el CSS a través de un validador de CSS online, como [csslint](http://csslint.net/).
### Error de sintaxis CSS en una regla específica
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>CSS_SYNTAX_INVALID_AT_RULE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"CSS syntax error in tag '%1' - saw invalid at rule '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Corrige el error de sintaxis CSS especificado.</td>
</tr>
</table>
Este error se refiere a las reglas de CSS que contienen @, para las que AMP solo permite una serie de reglas
(consulta también la [especificación de AMP](/docs/reference/spec.html)).
Por ejemplo, la regla `@import` no está permitida.
En el error de validación se indica cuál es concretamente la regla no válida para que puedas corregirla más fácilmente.
### La etiqueta de AMP no admite el diseño implícito
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>IMPLIED_LAYOUT_INVALID</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The implied layout '%1' is not supported by tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Proporciona un atributo de diseño válido para la etiqueta.</td>
</tr>
</table>
Este error se produce cuando no se especifica ningún diseño para la etiqueta de AMP y no se admite el diseño implícito (basado en la anchura, la altura y los tamaños).
Consulta los valores de `supported_layout` para la etiqueta en la [especificación del validador de AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
El atributo `layout` es el que determina el comportamiento real del diseño.
Para obtener más información sobre cómo funciona el diseño, consulta [Cómo controlar el diseño](/docs/guides/responsive/control_layout.html) y la [especificación del sistema de diseño AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
**Nota:** Si no se especifica el diseño y no se incluyen los valores de `width` y `height`, el valor predeterminado del diseño es CONTAINER. El validador devuelve un error porque ninguna de las etiquetas de AMP admite CONTAINER.
Para que el error desaparezca, especifica un diseño distinto de CONTAINER o añade un valor `width` y/o `height`.
### Atributo no permitido por el diseño implícito
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>ATTR_DISALLOWED_BY_IMPLIED_LAYOUT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita el atributo no permitido de la etiqueta o bien especifica un diseño que lo permita.</td>
</tr>
</table>
Este error se produce cuando no se especifica ningún diseño para la etiqueta de AMP y el diseño implícito contiene un atributo no permitido.
Los atributos no permitidos por los tipos de diseño se describen en la [especificación del sistema de diseño AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
### La etiqueta de AMP no admite el diseño especificado
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>SPECIFIED_LAYOUT_INVALID</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The specified layout '%1' is not supported by tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Especifica un diseño que la etiqueta admita.</td>
</tr>
</table>
Este error se produce cuando no se admite el diseño especificado para la etiqueta.
Consulta los valores de `supported_layout` para la etiqueta en la [especificación del validador de AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
El atributo `layout` es el que determina el comportamiento real del diseño.
Para obtener más información sobre cómo funciona el diseño, consulta [Cómo controlar el diseño](/docs/guides/responsive/control_layout.html) y la [especificación del sistema de diseño AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
### Atributo no permitido por el diseño especificado
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita el atributo no permitido de la etiqueta o bien especifica un diseño que lo permita.</td>
</tr>
</table>
Este error se produce cuando se especifica un diseño para la etiqueta de AMP y ese diseño contiene un atributo no permitido.
Los atributos no permitidos por los tipos de diseño se describen en la [especificación del sistema de diseño AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
### El atributo requerido por el diseño tiene un valor no válido
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>ATTR_VALUE_REQUIRED_BY_LAYOUT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"Invalid value '%1' for attribute '%2' in tag '%3' - for layout '%4', set the attribute '%2' to value '%5'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Asigna el valor especificado al atributo.</td>
</tr>
</table>
Este error se produce cuando el valor del atributo no es válido para el diseño especificado.
Para entender lo que desencadena este error, es necesario familiarizarse con los [diferentes comportamientos de los diseños](/docs/guides/responsive/control_layout.html#size-and-position-elements).
Imaginemos que se establece que el diseño sea `fixed-height` y se incluyen valores numéricos para `height` y para `width`.
El diseño `fixed-height` adquiere un valor `height`.
El atributo `width` no debe estar presente ni tener un valor distinto a `auto`.
El validador devuelve ATTR_VALUE_REQUIRED_BY_LAYOUT.
### Unidades de anchura y altura incompatibles
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"Inconsistent units for width and height in tag '%1' - width is specified in '%2' whereas height is specified in '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Proporciona las mismas unidades para la anchura y la altura.</td>
</tr>
</table>
A excepción de `layout=fixed`, los atributos de anchura y altura se tienen que expresar con las mismas unidades.
De no ser así, se produce este error.
Por ejemplo, `<amp-img src="" layout="responsive" width="42px" height="42rem">` tiene como resultado el mensaje de error siguiente:
"La anchura y la altura de la etiqueta 'amp-img' se expresan con unidades distintas. La anchura se indica en 'px', mientras que la altura se indica en 'rem'."
## Errores en las plantillas
Las páginas de AMP no pueden incluir sintaxis de plantillas a menos que dicha sintaxis esté en una etiqueta de AMP específicamente diseñada para incluir plantillas, por ejemplo, [amp-mustache](/docs/reference/extended/amp-mustache.html).
Se pueden incluir plantillas en los archivos fuente, siempre que el resultado generado por estos archivos no contenga las plantillas (consulta también [Utilizar preprocesadores de CSS](/docs/guides/responsive/style_pages.html#use-css-preprocessors)).
### El atributo contiene sintaxis de la plantilla
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>TEMPLATE_IN_ATTR_NAME</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"Mustache template syntax in attribute name '%1' in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita la sintaxis de la plantilla Mustache del atributo.</td>
</tr>
</table>
Este error se produce cada vez que el validador detecta [sintaxis de la plantilla Mustache](https://mustache.github.io/mustache.5.html) en un valor de atributo.
### El atributo contiene sintaxis unívoca de plantilla
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>UNESCAPED_TEMPLATE_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The attribute '%1' in tag '%2' is set to '%3', which contains unescaped Mustache template syntax."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Introduce código de escape en la plantilla Mustache.</td>
</tr>
</table>
Este error se produce cada vez que el validador detecta [sintaxis unívoca de la plantilla Mustache](https://mustache.github.io/mustache.5.html) en un valor de atributo.
### El atributo contiene parciales de la plantilla
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>TEMPLATE_PARTIAL_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The attribute '%1' in tag '%2' is set to '%3', which contains a Mustache template partial."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita el parcial de Mustache.</td>
</tr>
</table>
Este error se produce cada vez que el validador detecta un [parcial de Mustache](https://mustache.github.io/mustache.5.html) en un valor de atributo.
## Errores de desactivación
### Etiqueta obsoleta
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>DEPRECATED_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>No error message defined as yet (no deprecated tags).</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Quita la etiqueta obsoleta.</td>
</tr>
</table>
Esta advertencia se produce cuando en el documento de AMP se detecta una etiqueta de AMP que antes era válida.
Se trata solamente de una advertencia, ya que los documentos de AMP con advertencias siguen siendo válidos.
Actualmente no existen etiquetas obsoletas; la advertencia se reserva para futuras desactivaciones.
### Atributo obsoleto
<table>
<tr>
<td class="col-thirty"><strong>Código</strong></td>
<td>DEPRECATED_ATTR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Formato</strong></td>
<td>"The attribute '%1' in tag '%2' is deprecated - use '%3' instead."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Corrección</strong></td>
<td>Se recomienda quitar el atributo obsoleto.</td>
</tr>
</table>
Esta advertencia se produce cuando en el documento de AMP se detecta un atributo de AMP que antes era válido.
Se trata solamente de una advertencia, ya que los documentos de AMP con advertencias siguen siendo válidos.
Para identificar los atributos obsoletos de cada etiqueta de AMP, busca `deprecation` en la [especificación del validador de AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
```
--------------------------------------------------------------------------------
/content/docs/reference/[email protected]:
--------------------------------------------------------------------------------
```markdown
---
$title: AMP-Validierungsfehler
---
<!---
Copyright 2015 The AMP HTML Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS-IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
Gültige AMP-Dokumente dürfen keine Validierungsfehler enthalten.
Ziel dieses Dokuments ist es, Ihnen ein besseres Verständnis für Validierungsfehler zu vermitteln, die beim [Validieren von AMP-Seiten](/docs/guides/validate.html) auftreten können, und zu erläutern, wie diese behoben werden.
Eine komplette Übersicht aller Validierungsfehler finden Sie in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
[TOC]
## Fehler bei AMP-HTML-Tags und -Attributen
### Erforderliches Tag fehlt
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>MANDATORY_TAG_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The mandatory tag '%1' is missing or incorrect."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Erforderliches HTML-Tag hinzufügen oder korrigieren</td>
</tr>
</table>
Die folgenden Tags müssen in allen AMP-Dokumenten vorhanden sein:
* <a name="doctype"></a>`<!doctype html>`
* <a name="html"></a>`<html amp> or <html ⚡>`
* <a name="head"></a>`<head>`
* <a name="canonical"></a>`<link rel="canonical" href="$SOME_URL" />`
* <a name="utf"></a>`<meta charset="utf-8">`
* <a name="viewport"></a>`<meta name="viewport" content="...">`
* <a name="boilerplate"></a>`<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>`
* <a name="ampscript"></a>`<script async src="https://cdn.ampproject.org/v0.js"></script>`
* <a name="body"></a>`<body>`
Diese erforderlichen Tags enthalten das Feld `mandatory: true` in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii). Auf sie wird auch in der [AMP-Spezifikation](/docs/reference/spec.html) verwiesen.
### Für ein anderes Tag erforderliches Tag fehlt
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>TAG_REQUIRED_BY_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The '%1' tag is missing or incorrect, but required by '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Entsprechendes HTML-Tag hinzufügen oder korrigieren</td>
</tr>
</table>
Das Validierungstool gibt den Fehler `TAG_REQUIRED_BY_MISSING` zurück, wenn eine
erweiterte Komponente im AMP-Dokument ermittelt, das entsprechende `<script>` jedoch nicht gefunden wird.
[Erweiterte Komponenten](/docs/reference/extended.html) müssen explizit als benutzerdefinierte Elemente in das AMP-Dokument aufgenommen werden.
Um diese Fehler zu beheben, rufen Sie die Referenzseite der erweiterten Komponente auf, kopieren Sie das erforderliche Skript und fügen es im `<head>` des AMP-Dokuments ein.
### Unzulässiges Tag
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>DISALLOWED_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' is disallowed."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Unzulässiges Tag entfernen</td>
</tr>
</table>
Da Tags auf die weiße Liste gesetzt werden, gibt es keine definitive Auflistung unzulässiger Tags. In der [AMP-Spezifikation](/docs/reference/spec.html) werden unzulässige Tags jedoch allgemein definiert.
### Erforderliches Attribut fehlt
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>MANDATORY_ATTR_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The mandatory attribute '%1' is missing in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Erforderliches Attribut in Tag einfügen</td>
</tr>
</table>
Die erforderlichen Attribute für AMP-Tags werden in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii) definiert.
Suchen Sie einfach nach dem Tag, sehen Sie sich die aufgeführten Attribute an und achten Sie auf `mandatory: true`.
Die erforderlichen Attribute der einzelnen AMP-Tags finden Sie außerdem in der Spezifikation des entsprechenden Tags.
### Ungültiger Attributwert
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>INVALID_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is set to the invalid value '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Gültigen Attributwert eingeben</td>
</tr>
</table>
Dieser Fehler bedeutet, dass ein HTML-Tag über ein Attribut mit einem zulässigen Namen, aber unzulässigen Wert verfügt.
Häufige Auslöser dieses Fehlers sind beispielsweise ungültige Werte für URLs. Sämtliche URL-Werte (in `href`- und `src`-Attributen) müssen einem [dieser möglichen Attributwerte](http://www.w3schools.com/tags/att_a_href.asp) entsprechen.
<strong>WICHTIG:</strong> Für viele URL-Werte in AMP ist HTTPS erforderlich. Wenn unklar ist, warum dieser Fehler zurückgegeben wird, sehen Sie in der Spezifikation des entsprechenden AMP-Tags nach, ob HTTPS für das Attribut erforderlich ist.
### Unzulässiges Attribut
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>DISALLOWED_ATTR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' may not appear in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Attribut aus dem HTML-Tag entfernen</td>
</tr>
</table>
Da Attribute auf die weiße Liste gesetzt werden, gibt es keine definitive Auflistung unzulässiger Attribute.
Die unterstützten Attribute für die einzelnen Tags finden Sie in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii). Suchen Sie dazu nach "HTML tag" und dann `attrs`.
Zusätzlich zur weißen Liste spezifischer Attribute für das betreffende Tag können für AMP-Tags auch alle Attribute verwendet werden, die unter `$GLOBAL_ATTRS` auf die weiße Liste gesetzt wurden. Sämtliche Attribute mit dem Präfix `"data-"` befinden sich ebenfalls auf der weißen Liste.
### Erforderlicher Text fehlt oder ist falsch
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>MANDATORY_CDATA_MISSING_OR_INCORRECT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The mandatory text (CDATA) inside tag '%1' is missing or incorrect."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Erforderlichen Text in Tag einfügen oder korrigieren</td>
</tr>
</table>
CDATA-Werte sind die Contentdaten zwischen einem HTML-Start- und -End-Tag. Sie werden derzeit sowohl mit schwarzen als auch weißen Listen ausgewertet.
Tags mit erforderlichen CDATA-Werten sind:
[sourcecode:html]
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
[/sourcecode]
und
[sourcecode:html]
<style amp-custom>
[/sourcecode]
Dafür werden unter Umständen die folgenden detaillierten Benachrichtigungen angezeigt:
* "Mandatory style boilerplate (js enabled)"
* "Mandatory style boilerplate (noscript)"
* "Disallowed -amp- CSS class name prefix"
* "Disallowed !important attribute in CSS"
* "Disallowed @charset in CSS"
* "Disallowed @import in CSS"
* "Disallowed @namespace in CSS"
* "Disallowed @supports in CSS"
* "Disallowed @document in CSS"
* "Disallowed @page in CSS"
* "Disallowed @viewport in CSS"
### Unzulässiger Text in Tag
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>CDATA_VIOLATES_BLACKLIST</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The text (CDATA) inside tag '%1' matches '%2', which is disallowed."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Unzulässigen Text entfernen</td>
</tr>
</table>
Bestimmte CSS-Daten wurden für die Validierung wichtiger CSS-AMP-Regeln auf die schwarze Liste gesetzt.
Nachstehend sind die CSS-Daten aufgelistet, die auf die schwarze Liste gesetzt wurden (weitere Informationen finden Sie in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii) unter `blacklisted_cdata_regex`):
* `"\\.i?-amp-"` ("CSS -amp- class name prefix")
* `"!important"`
* `"charset"`
* `"@import"`
* `"@namespace"`
* `"@document"`
* `"@page"`
* `"@viewport"`
### Unzulässige Property in einem Attribut im Tag
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>DISALLOWED_PROPERTY_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The property '%1' in attribute '%2' in tag '%3' is disallowed."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Unzulässige Property aus dem entsprechenden Attribut entfernen</td>
</tr>
</table>
Dieser Fehler wird zurückgegeben, wenn der Property-Name in einem Attribut nicht zulässig ist.
In diesem Kontext handelt es sich bei "Property" um die strukturierten Schlüssel-/Wertdaten in einem Attribut.
In `<meta name="viewport content="width=device-width;minimum-scale=1">` sind `width` und `minimum-scale` beispielsweise Property-Namen.
Für das folgende Beispiel wird der Fehler DISALLOWED_PROPERTY_IN_ATTR_VALUE zurückgegeben:
`<meta name="viewport content="width=device-width;invalidfoo=1">`
Auch dieses Beispiel würde einen Fehler auslösen:
`<meta http-equiv="X-UA-Compatible" content="invalidfoo=edge">`
Richtig ist `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
### Ungültiger Property-Wert
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>INVALID_PROPERTY_VALUE_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The property '%1' in attribute '%2' in tag '%3' is set to '%4', which is invalid."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Ungültigen Property-Wert korrigieren</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn der Property-Wert in einem Attribut ungültig ist.
In diesem Kontext handelt es sich bei "Property" um die strukturierten Schlüssel-/Wertdaten in einem Attribut.
In `<meta name="viewport content="width=device-width;minimum-scale=1">` sind `device-width` und `1` beispielsweise Property-Werte.
Für das folgende Beispiel wird der Fehler INVALID_PROPERTY_VALUE_IN_ATTR_VALUE zurückgegeben:
`<meta name=viewport content="width=device-width;minimum-scale=invalidfoo">`
Auch dieses Beispiel würde einen Fehler auslösen:
`<meta http-equiv="X-UA-Compatible" content="ie=invalidfoo">`
Richtig ist: `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
### URL fehlt
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>MISSING_URL</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Missing URL for attribute '%1' in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Gültige URL hinzufügen</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn eine URL für das Attribut erforderlich ist, aber nicht angegeben wurde, etwa ein leeres `href`- oder `src`-Attribut.
### Ungültige URL
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>INVALID_URL_PROTOCOL</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Malformed URL '%3' for attribute '%1' in tag '%2'"</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Fehlerhafte URL korrigieren</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn ein Attribut eine ungültige URL enthält.
### Ungültiges URL-Protokoll
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>INVALID_URL_PROTOCOL</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>Invalid URL protocol '%3:' for attribute '%1' in tag '%2'.</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>In ein gültiges Protokoll ändern, etwa `https` anstelle von `http`</td>
</tr>
</table>
Dieser Fehler tritt bei Tags mit `href`- oder `src`-Attributen auf, für die ein bestimmtes Protokoll festgelegt sein muss.
Für viele Tags ist beispielsweise `https` erforderlich.
### Erforderliche Property nicht in Attribut vorhanden
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The property '%1' is missing from attribute '%2' in tag '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Fehlende Property hinzufügen</td>
</tr>
</table>
Derzeit tritt dieser Fehler auf, wenn die folgenden erforderlichen Properties fehlen:
* `content="...ie=..."`
* `content="...width=..."`
* `content="...minimum-scale=..."`
Sie verweisen auf die erwarteten Tags:
* `<meta http-equiv="X-UA-Compatible" content="ie=edge">`
* `<meta name=viewport content="width=device-width;minimum-scale=1">`
### Sich gegenseitig ausschließende Attribute
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>MUTUALLY_EXCLUSIVE_ATTRS</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Mutually exclusive attributes encountered in tag '%1' - pick one of %2."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Eins der sich gegenseitig ausschließenden Attribute entfernen</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn beide sich gegenseitig ausschließende Attribute in einem Tag enthalten sind.
Beispielsweise ist in den folgenden Tags nur jeweils eines der Attribute zulässig:
* [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` oder `src`
* [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` oder `src`
* [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` oder `srcdoc`
* [amp-youtube](/docs/reference/extended/amp-youtube.html ): `src` oder `data-videoid`
### Erforderliches Attribut fehlt auf Liste
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>MANDATORY_ONEOF_ATTR_MISSING</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' is missing a mandatory attribute - pick one of %2." </td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Erforderliches Attribut aus den verfügbaren Attributen auswählen und einfügen</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn ein erforderliches Attribut aus mehreren Möglichkeiten in einem Tag fehlt.
Beispielsweise ist für die folgenden Tags jeweils eines der beiden anschließend genannten Attribute erforderlich:
* [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` oder `src`
* [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` oder `src`
* [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` oder `srcdoc`
* [amp-youtube](/docs/reference/extended/amp-youtube.html ): `src` oder `data-videoid`
### Falsches übergeordnetes Tag
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>WRONG_PARENT_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The parent tag of tag '%1' is '%2', but it can only be '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Tag dem erforderlichen übergeordneten Tag direkt unterordnen</td>
</tr>
</table>
Für manche Tags sind direkt übergeordnete Tags erforderlich.
Nachstehend sehen Sie die erforderlichen übergeordneten Tags für bestimmte Tags (Tag, übergeordnetes Tag):
* Für `!doctype` ist das übergeordnete Tag `root` erforderlich.
* Für `html` ist das übergeordnete Tag `!doctype` erforderlich.
* Für `head` ist das übergeordnete Tag `html` erforderlich.
* Für `body` ist das übergeordnete Tag `html` erforderlich.
* Für `link` ist das übergeordnete Tag `head` erforderlich.
* Für `meta` ist das übergeordnete Tag `head` erforderlich.
* Für `style amp-custom` ist das übergeordnete Tag `head` erforderlich.
* Für `style` ist das übergeordnete Tag `boilerplate (noscript)` erforderlich.
* Für `noscript` ist das übergeordnete Tag `head` erforderlich.
* Für `script` ist das übergeordnete Tag `head` erforderlich.
* Für `source` ist ein Medien-Tag erforderlich, etwa `amp-audio` oder `amp-video`.
### Unzulässiges Vorgängertag
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>DISALLOWED_TAG_ANCESTOR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' may not appear as a descendant of tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Unzulässiges verschachteltes Tag entfernen oder verschieben</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn ein Tag ein Nachfolger eines anderen Tags ist, das nicht validiert werden kann.
Derzeit wären hier als einziges Beispiel `template`-Tags zu nennen, die anderen `template`-Tags nicht untergeordnet werden dürfen.
### Erforderliches Vorgängertag
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>MANDATORY_TAG_ANCESTOR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' may only appear as a descendant of tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Tag entfernen oder zum Nachfolger des entsprechenden Tags machen</td>
</tr>
</table>
Erforderliche Nachfolger werden in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii) als `mandatory_ancestor` definiert.
Dieser Fehler tritt auf, wenn bei den folgenden Tags der `mandatory_ancestor` fehlt (Tag, Vorgängertag):
* `img` muss ein Nachfolger von `noscript` sein.
* `video` muss ein Nachfolger von `noscript` sein.
* `audio` muss ein Nachfolger von `noscript` sein.
* `noscript` muss ein Nachfolger von `body` sein.
### Erforderliches Vorgängertag mit hint-Tag
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>MANDATORY_TAG_ANCESTOR_WITH_HINT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' may only appear as a descendant of tag '%2'. Did you mean '%3'?"</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Tag entfernen, zum Nachfolger des entsprechenden Tags machen oder durch das hint-Tag ersetzen</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn eines der folgenden Tags im AMP-Dokument ermittelt wird, aber dem erforderlichen übergeordneten Tag nicht richtig untergeordnet wurde:
* `img` wurde dem übergeordneten Tag `noscript` nicht untergeordnet.
* `video` wurde dem übergeordneten Tag `noscript` nicht untergeordnet.
* `audio` wurde dem übergeordneten Tag `noscript` nicht untergeordnet.
* `noscript` wurde dem übergeordneten Tag `body` nicht untergeordnet.
### Doppeltes eindeutiges Tag
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>DUPLICATE_UNIQUE_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The tag '%1' appears more than once in the document."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Eines der doppelten Tags aus dem AMP-Dokument entfernen</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn genau eine Instanz des Tags zulässig ist, aber ein Duplikat ermittelt wurde.
Vollständige Liste der eindeutigen Tags:
* `<doctype html>`
* `<html amp>`
* `<head>`
* `<link rel=canonical href=...>`
* `<link rel=amphtml href=...>`
* `<meta charset="utf-8">`
* `<meta viewport>`
* `<style amp-custom>`
* `<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>`
* `<body>`
* `<script src="https://cdn.ampproject.org/v0.js">`
## Stil- und Layoutfehler
Bevor wir uns mit Stil- und Layoutfehlern befassen, sollten Sie wissen, wie [Stile](/docs/guides/responsive/style_pages.html) und [Layout](/docs/guides/responsive/control_layout.html ) in AMP funktionieren. Da es sich bei AMP-Seiten um HTML-Seiten handelt, sind die Stile praktisch dieselben wie bei anderen HTML-Seiten.
Allerdings gibt es einige Einschränkungen, die sicher stellen sollen, dass Seiten schnell laden. Das AMP-Validierungstool setzt diese Einschränkungen durch.
Für das Layout von AMP-Seiten gibt es feste Regeln.
Für alle Tags, die auf der Seite angezeigt werden, sind eine vordefinierte Höhe und Breite erforderlich. Dadurch werden Verzögerungen und Störungen beim Rendern und Scrollen deutlich reduziert.
Das bedeutet jedoch nicht, dass Sie diese Attribute manuell einfügen müssen.
Bei bestimmten Layouttypen gibt das AMP-Validierungstool keine Fehler zurück, da von Standardwerten ausgegangen wird.
Für jedes AMP-Tag gibt es eine Liste mit `supported_layouts`, die in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii) definiert sind.
Das Validierungstool gibt Fehler für nicht unterstützte Layouts zurück und prüft die Validierungsregeln für das vordefinierte Layout.
### Stylesheet zu lang
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>STYLESHEET_TOO_LONG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The author stylesheet specified in tag 'style' is too long - we saw %1 bytes whereas the limit is %2 bytes."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Größe des Stylesheets auf unter 50.000 Byte reduzieren.</td>
</tr>
</table>
Das AMP-Validierungstool gibt diesen Fehler zurück, wenn es feststellt, dass die Größe des Stilinhalts in `<style amp-custom>` 50.000 Byte überschreitet.
### CSS-Syntaxfehler
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>CSS_SYNTAX</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"CSS syntax error in tag '%1' - %2."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>CSS-Syntaxfehler beheben</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn das entsprechende Tag CSS-Syntaxfehler aufweist.
Wenn Sie nicht wissen, warum der Fehler auftritt, prüfen Sie das CSS mit einem Onlinetool für die CSS-Validierung wie [csslint](http://csslint.net/).
### CSS-Syntaxfehler bei bestimmter Regel
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>CSS_SYNTAX_INVALID_AT_RULE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"CSS syntax error in tag '%1' - saw invalid at rule '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>CSS-Syntaxfehler beheben</td>
</tr>
</table>
Dieser Fehler bezieht sich auf die @-Regeln in CSS, für die AMP nur einige wenige Regeln zulässt.
Weitere Informationen finden Sie in der [AMP-Spezifikation](/docs/reference/spec.html).
Beispielsweise ist `@import` nicht zulässig.
Dem Validierungsfehler können Sie entnehmen, welche Regel ungültig ist. So können Sie diese leichter korrigieren.
### Impliziertes Layout nicht vom AMP-Tag unterstützt
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>IMPLIED_LAYOUT_INVALID</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The implied layout '%1' is not supported by tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Gültiges Layoutattribut für das Tag angeben</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn Sie kein Layout für das AMP-Tag angeben und das implizierte Layout (hinsichtlich Breite, Höhe und Größen) nicht unterstützt wird.
Überprüfen Sie die `supported_layout`-Werte für das Tag in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Das tatsächliche Layoutverhalten richtet sich nach dem Attribut `layout`.
Weitere Informationen zur Funktionsweise von Layouts finden Sie [im Artikel zu den unterstützten Layouts](/docs/guides/responsive/control_layout.html ) und in der [Spezifikation des AMP-HTML-Layoutsystems](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
**Hinweis:** Wenn Sie kein Layout und keine Werte für `width` und `height` festlegen, wird standardmäßig CONTAINER als Layout verwendet. Das Validierungstool gibt in diesem Fall einen Fehler zurück, da CONTAINER nicht in AMP-Tags zulässig ist.
Geben Sie ein anderes Layout als CONTAINER an oder fügen Sie einen Wert für `width` und/oder `height` hinzu, um den Fehler zu beheben.
### Attribute nicht für impliziertes Layout zulässig
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>ATTR_DISALLOWED_BY_IMPLIED_LAYOUT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Unzulässiges Attribut aus dem Tag entfernen oder ein Layout auswählen, das dieses Attribut unterstützt</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn Sie kein Layout für das AMP-Tag angeben und das implizierte Layout ein unzulässiges Attribut enthält.
Die unzulässigen Attribute für Layouttypen werden in der [Spezifikation des AMP-HTML-Layoutsystems](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md) beschrieben.
### Festgelegtes Layout nicht vom AMP-Tag unterstützt
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>SPECIFIED_LAYOUT_INVALID</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The specified layout '%1' is not supported by tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Layout festlegen, das vom Tag unterstützt wird</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn das Layout, das für das Tag festgelegt wurde, nicht unterstützt wird.
Überprüfen Sie die `supported_layout`-Werte für das Tag in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
Das tatsächliche Layoutverhalten richtet sich nach dem Attribut `layout`.
Weitere Informationen zur Funktionsweise von Layouts finden Sie [im Artikel zu den unterstützten Layouts](/docs/guides/responsive/control_layout.html ) und in der [Spezifikation des AMP-HTML-Layoutsystems](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
### Attribute nicht für festgelegtes Layout zulässig
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Unzulässiges Attribut aus dem Tag entfernen oder ein Layout auswählen, das dieses Attribut unterstützt</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn Sie ein Layout für das AMP-Tag festlegen und das Layout ein unzulässiges Attribut enthält.
Die unzulässigen Attribute für Layouttypen werden in der [Spezifikation des AMP-HTML-Layoutsystems](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md) beschrieben.
### Ungültiger Wert eines für das Layout erforderlichen Attributs
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>ATTR_VALUE_REQUIRED_BY_LAYOUT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Invalid value '%1' for attribute '%2' in tag '%3' - for layout '%4', set the attribute '%2' to value '%5'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Attribut auf den festgelegten Wert setzen</td>
</tr>
</table>
Dieser Fehler tritt auf, wenn der Attributwert nicht für das festgelegte Layout gültig ist.
Um zu verstehen, wodurch dieser Fehler ausgelöst wird, müssen Sie sich mit dem [unterschiedlichen Verhalten von Layouts](/docs/guides/responsive/control_layout.html#size-and-position-elements) vertraut machen.
Angenommen, Sie legen `fixed-height` für das Layout fest und geben numerische Werte für `height` und `width` an.
Für das Layout `fixed-height` wird ein `height`-Wert übernommen.
Das Attribut `width` darf nicht vorhanden sein oder muss auf `auto` gesetzt werden.
Das Validierungstool gibt den Fehler ATTR_VALUE_REQUIRED_BY_LAYOUT zurück.
### Abweichende Einheiten für Breite und Höhe
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Inconsistent units for width and height in tag '%1' - width is specified in '%2' whereas height is specified in '%3'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Einheitliche Einheiten für Breite und Höhe angeben</td>
</tr>
</table>
Mit Ausnahme von `layout=fixed` müssen Attribute für Breite und Höhe in derselben Einheit angegeben werden.
Anderenfalls wird dieser Fehler zurückgegeben.
Beispielsweise wird für `<amp-img src="" layout="responsive" width="42px" height="42rem">` die folgende Fehlermeldung zurückgegeben:
"Im Tag 'amp-img' wurden abweichende Einheiten für Breite und Höhe festgestellt. Die Breite ist in 'px' angegeben, während für Höhe 'rem' verwendet wurde."
## Vorlagenfehler
AMP-Seiten dürfen Vorlagensyntax nur in AMP-Tags enthalten, die spezifisch für Vorlagen ausgelegt sind, etwa [amp-mustache](/docs/reference/extended/amp-mustache.html).
Sie können Vorlagen in Ihre Quelldateien einfügen, solange die generierte Ausgabe keine Vorlagen mehr enthält. Weitere Informationen finden Sie unter [CSS-Präprozessoren verwenden](/docs/guides/responsive/style_pages.html#use-css-preprocessors).
### Attribut enthält Vorlagensyntax
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>TEMPLATE_IN_ATTR_NAME</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"Mustache template syntax in attribute name '%1' in tag '%2'."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Mustache-Vorlagensyntax aus dem Attribut entfernen</td>
</tr>
</table>
Dieser Fehler tritt immer dann auf, wenn das Validierungstool [Mustache-Vorlagensyntax](https://mustache.github.io/mustache.5.html) in einem Attributwert ermittelt.
### Attribut enthält nicht korrekt codierte Vorlagensyntax
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>UNESCAPED_TEMPLATE_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is set to '%3', which contains unescaped Mustache template syntax."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Mustache-Vorlage richtig codieren</td>
</tr>
</table>
Dieser Fehler tritt immer dann auf, wenn das Validierungstool [nicht korrekt codierte Mustache-Vorlagensyntax](https://mustache.github.io/mustache.5.html) in einem Attributwert ermittelt.
### Attribut enthält einen Teil einer Mustache-Vorlage
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>TEMPLATE_PARTIAL_IN_ATTR_VALUE</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is set to '%3', which contains a Mustache template partial."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Teil der Mustache-Vorlage entfernen</td>
</tr>
</table>
Dieser Fehler tritt immer dann auf, wenn das Validierungstool [einen Teil einer Mustache-Vorlage](https://mustache.github.io/mustache.5.html) in einem Attributwert ermittelt.
## Einstellungsfehler
### Eingestellte Tags
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>DEPRECATED_TAG</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>No error message defined as yet (no deprecated tags).</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Eingestelltes Tag entfernen</td>
</tr>
</table>
Diese Warnung wird angezeigt, wenn ein zuvor gültiges AMP-Tag im AMP-Dokument ermittelt wird.
Dabei handelt es sich nur um eine Warnung. AMP-Dokumente mit Warnungen sind weiterhin gültig.
Derzeit gibt es keine veralteten Tags. Die Warnung soll künftig verwendet werden, wenn Tags eingestellt werden.
### Eingestelltes Attribut
<table>
<tr>
<td class="col-thirty"><strong>Code</strong></td>
<td>DEPRECATED_ATTR</td>
</tr>
<tr>
<td class="col-thirty"><strong>Format</strong></td>
<td>"The attribute '%1' in tag '%2' is deprecated - use '%3' instead."</td>
</tr>
<tr>
<td class="col-thirty"><strong>Korrektur</strong></td>
<td>Eingestelltes Attribut am besten entfernen</td>
</tr>
</table>
Diese Warnung wird angezeigt, wenn ein zuvor gültiges AMP-Attribut im AMP-Dokument ermittelt wird.
Dabei handelt es sich nur um eine Warnung. AMP-Dokumente mit Warnungen sind weiterhin gültig.
Die eingestellten Attribute für die einzelnen AMP-Tags finden Sie, indem Sie in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii) nach `deprecation` suchen.
```