This is page 21 of 24. Use http://codebase.md/cloudflare/docs/imgs/playground-ai-screenshot.png?lines=true&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
1 | ---
2 | $title: Errores de validación de AMP
3 | ---
4 |
5 | Los documentos de AMP no pueden tener errores de validación.
6 | 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).
7 | 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).
8 |
9 | [TOC]
10 |
11 | ## Errores en atributos y etiquetas AMP HTML
12 |
13 | ### Falta una etiqueta obligatoria
14 |
15 | <table>
16 | <tr>
17 | <td class="col-thirty"><strong>Código</strong></td>
18 | <td>MANDATORY_TAG_MISSING</td>
19 | </tr>
20 | <tr>
21 | <td class="col-thirty"><strong>Formato</strong></td>
22 | <td>"The mandatory tag '%1' is missing or incorrect."</td>
23 | </tr>
24 | <tr>
25 | <td class="col-thirty"><strong>Corrección</strong></td>
26 | <td>Añade (o corrige) la etiqueta HTML obligatoria.</td>
27 | </tr>
28 | </table>
29 |
30 | Todos los documentos de AMP deben contener las siguientes etiquetas:
31 |
32 | * <a name="doctype"></a>`<!doctype html>`
33 | * <a name="html"></a>`<html amp> or <html ⚡>`
34 | * <a name="head"></a>`<head>`
35 | * <a name="canonical"></a>`<link rel="canonical" href="$SOME_URL" />`
36 | * <a name="utf"></a>`<meta charset="utf-8">`
37 | * <a name="viewport"></a>`<meta name="viewport" content="...">`
38 | * <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>`
39 | * <a name="ampscript"></a>`<script async src="https://cdn.ampproject.org/v0.js"></script>`
40 | * <a name="body"></a>`<body>`
41 |
42 | 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).
43 |
44 | ### Falta una etiqueta requerida por otra etiqueta
45 |
46 | <table>
47 | <tr>
48 | <td class="col-thirty"><strong>Código</strong></td>
49 | <td>TAG_REQUIRED_BY_MISSING</td>
50 | </tr>
51 | <tr>
52 | <td class="col-thirty"><strong>Formato</strong></td>
53 | <td>"The '%1' tag is missing or incorrect, but required by '%2'."</td>
54 | </tr>
55 | <tr>
56 | <td class="col-thirty"><strong>Corrección</strong></td>
57 | <td>Añade (o corrige) la etiqueta HTML requerida.</td>
58 | </tr>
59 | </table>
60 |
61 | 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.
62 |
63 | Los [componentes ampliados](/docs/reference/extended.html) se deben incluir explícitamente en el documento de AMP como elementos personalizados.
64 | 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.
65 |
66 | ### Etiqueta no permitida
67 |
68 | <table>
69 | <tr>
70 | <td class="col-thirty"><strong>Código</strong></td>
71 | <td>DISALLOWED_TAG</td>
72 | </tr>
73 | <tr>
74 | <td class="col-thirty"><strong>Formato</strong></td>
75 | <td>"The tag '%1' is disallowed."</td>
76 | </tr>
77 | <tr>
78 | <td class="col-thirty"><strong>Corrección</strong></td>
79 | <td>Quita la etiqueta no permitida.</td>
80 | </tr>
81 | </table>
82 |
83 | 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.
84 |
85 | ### Falta un atributo obligatorio
86 |
87 | <table>
88 | <tr>
89 | <td class="col-thirty"><strong>Código</strong></td>
90 | <td>MANDATORY_ATTR_MISSING</td>
91 | </tr>
92 | <tr>
93 | <td class="col-thirty"><strong>Formato</strong></td>
94 | <td>"The mandatory attribute '%1' is missing in tag '%2'."</td>
95 | </tr>
96 | <tr>
97 | <td class="col-thirty"><strong>Corrección</strong></td>
98 | <td>Añade el atributo obligatorio a la etiqueta.</td>
99 | </tr>
100 | </table>
101 |
102 | 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).
103 | Busca la etiqueta, observa los atributos enumerados y comprueba que aparezca `mandatory: true`.
104 | Los atributos obligatorios para cada etiqueta de AMP también aparecen en la especificación de la etiqueta.
105 |
106 | ### Valor del atributo no válido
107 |
108 | <table>
109 | <tr>
110 | <td class="col-thirty"><strong>Código</strong></td>
111 | <td>INVALID_ATTR_VALUE</td>
112 | </tr>
113 | <tr>
114 | <td class="col-thirty"><strong>Formato</strong></td>
115 | <td>"The attribute '%1' in tag '%2' is set to the invalid value '%3'."</td>
116 | </tr>
117 | <tr>
118 | <td class="col-thirty"><strong>Corrección</strong></td>
119 | <td>Corrige el valor del atributo para que sea válido.</td>
120 | </tr>
121 | </table>
122 |
123 | Este error indica que una etiqueta HTML tiene un atributo con un nombre permitido, pero con un valor no permitido.
124 | 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).
125 |
126 | <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.
127 |
128 | ### Atributo no permitido
129 |
130 | <table>
131 | <tr>
132 | <td class="col-thirty"><strong>Código</strong></td>
133 | <td>DISALLOWED_ATTR</td>
134 | </tr>
135 | <tr>
136 | <td class="col-thirty"><strong>Formato</strong></td>
137 | <td>"The attribute '%1' may not appear in tag '%2'."</td>
138 | </tr>
139 | <tr>
140 | <td class="col-thirty"><strong>Corrección</strong></td>
141 | <td>Quita el atributo de la etiqueta HTML.</td>
142 | </tr>
143 | </table>
144 |
145 | Los atributos se incluyen en una lista blanca, por lo que no hay ninguna lista definitiva de todos los atributos no permitidos.
146 | 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).
147 |
148 | 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.
149 |
150 | ### Falta texto obligatorio o el texto es incorrecto
151 |
152 | <table>
153 | <tr>
154 | <td class="col-thirty"><strong>Código</strong></td>
155 | <td>MANDATORY_CDATA_MISSING_OR_INCORRECT</td>
156 | </tr>
157 | <tr>
158 | <td class="col-thirty"><strong>Formato</strong></td>
159 | <td>"The mandatory text (CDATA) inside tag '%1' is missing or incorrect."</td>
160 | </tr>
161 | <tr>
162 | <td class="col-thirty"><strong>Corrección</strong></td>
163 | <td>Añade o corrige el texto obligatorio que contiene la etiqueta.</td>
164 | </tr>
165 | </table>
166 |
167 | 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.
168 | Las etiquetas con CDATA obligatorio incluyen:
169 |
170 | [sourcecode:html]
171 | <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>
172 | [/sourcecode]
173 |
174 | Y:
175 |
176 | [sourcecode:html]
177 | <style amp-custom>
178 | [/sourcecode]
179 |
180 | Este caso se describe con uno de los siguientes mensajes detallados:
181 |
182 | * "Mandatory style boilerplate (js enabled)"
183 | * "Mandatory style boilerplate (noscript)"
184 | * "Disallowed -amp- CSS class name prefix"
185 | * "Disallowed !important attribute in CSS"
186 | * "Disallowed @charset in CSS"
187 | * "Disallowed @import in CSS"
188 | * "Disallowed @namespace in CSS"
189 | * "Disallowed @supports in CSS"
190 | * "Disallowed @document in CSS"
191 | * "Disallowed @page in CSS"
192 | * "Disallowed @viewport in CSS"
193 |
194 | ### Texto no permitido dentro de la etiqueta
195 |
196 | <table>
197 | <tr>
198 | <td class="col-thirty"><strong>Código</strong></td>
199 | <td>CDATA_VIOLATES_BLACKLIST</td>
200 | </tr>
201 | <tr>
202 | <td class="col-thirty"><strong>Formato</strong></td>
203 | <td>"The text (CDATA) inside tag '%1' matches '%2', which is disallowed."</td>
204 | </tr>
205 | <tr>
206 | <td class="col-thirty"><strong>Corrección</strong></td>
207 | <td>Quita el texto no permitido.</td>
208 | </tr>
209 | </table>
210 |
211 | Los datos de CSS específicos se han incluido en la lista negra para validar reglas fundamentales de AMP para CSS.
212 |
213 | 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>):
214 |
215 | * `"\\.i?-amp-"` ("prefijo de nombre de clase -amp- CSS")
216 | * `"!important"`
217 | * `"charset"`
218 | * `"@import"`
219 | * `"@namespace"`
220 | * `"@document"`
221 | * `"@page"`
222 | * `"@viewport"`
223 |
224 | ### Propiedad no permitida dentro del atributo incluido en la etiqueta
225 |
226 | <table>
227 | <tr>
228 | <td class="col-thirty"><strong>Código</strong></td>
229 | <td>DISALLOWED_PROPERTY_IN_ATTR_VALUE</td>
230 | </tr>
231 | <tr>
232 | <td class="col-thirty"><strong>Formato</strong></td>
233 | <td>"The property '%1' in attribute '%2' in tag '%3' is disallowed."</td>
234 | </tr>
235 | <tr>
236 | <td class="col-thirty"><strong>Corrección</strong></td>
237 | <td>Quita la propiedad no permitida en el atributo especificado.</td>
238 | </tr>
239 | </table>
240 |
241 | Este error se produce cuando el nombre de la propiedad no se permite dentro de un atributo.
242 | La propiedad del término, en este contexto, hace referencia a los datos clave-valor estructurados dentro de un atributo.
243 | Por ejemplo, en `<meta name="viewport content="width=device-width;minimum-scale=1">`, `width` y `minimum-scale` son nombres de propiedades.
244 |
245 | La cadena siguiente tiene como resultado un error DISALLOWED_PROPERTY_IN_ATTR_VALUE:
246 |
247 | `<meta name="viewport content="width=device-width;invalidfoo=1">`
248 |
249 | Igual que el ejemplo anterior, la cadena siguiente daría lugar a un error:
250 |
251 | `<meta http-equiv="X-UA-Compatible" content="invalidfoo=edge">`
252 |
253 | Debería ser `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
254 |
255 | ### Valor de propiedad no válido
256 |
257 | <table>
258 | <tr>
259 | <td class="col-thirty"><strong>Código</strong></td>
260 | <td>INVALID_PROPERTY_VALUE_IN_ATTR_VALUE</td>
261 | </tr>
262 | <tr>
263 | <td class="col-thirty"><strong>Formato</strong></td>
264 | <td>"The property '%1' in attribute '%2' in tag '%3' is set to '%4', which is invalid."</td>
265 | </tr>
266 | <tr>
267 | <td class="col-thirty"><strong>Corrección</strong></td>
268 | <td>Corrige el valor de propiedad no válido.</td>
269 | </tr>
270 | </table>
271 |
272 | Este error se produce cuando el valor de la propiedad dentro de un atributo no es válido.
273 | La propiedad del término, en este contexto, hace referencia a los datos clave-valor estructurados dentro de un atributo.
274 | Por ejemplo, en `<meta name="viewport content="width=device-width;minimum-scale=1">`, `device-width` y `1` son valores de propiedad.
275 |
276 | La cadena siguiente devuelve un error INVALID_PROPERTY_VALUE_IN_ATTR_VALUE:
277 |
278 | `<meta name=viewport content="width=device-width;minimum-scale=invalidfoo">`
279 |
280 | Igual que el ejemplo anterior, la cadena siguiente daría lugar a un error:
281 |
282 | `<meta http-equiv="X-UA-Compatible" content="ie=invalidfoo">`
283 |
284 | Debería ser `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
285 |
286 | ### Falta la URL
287 |
288 | <table>
289 | <tr>
290 | <td class="col-thirty"><strong>Código</strong></td>
291 | <td>MISSING_URL</td>
292 | </tr>
293 | <tr>
294 | <td class="col-thirty"><strong>Formato</strong></td>
295 | <td>"Missing URL for attribute '%1' in tag '%2'."</td>
296 | </tr>
297 | <tr>
298 | <td class="col-thirty"><strong>Corrección</strong></td>
299 | <td>Añade la URL válida.</td>
300 | </tr>
301 | </table>
302 |
303 | Este error se produce cuando un atributo requiere una URL pero no la tiene. Por ejemplo, un atributo `href` o `src` vacío.
304 |
305 | ### URL no válida
306 |
307 | <table>
308 | <tr>
309 | <td class="col-thirty"><strong>Código</strong></td>
310 | <td>INVALID_URL_PROTOCOL</td>
311 | </tr>
312 | <tr>
313 | <td class="col-thirty"><strong>Formato</strong></td>
314 | <td>"Malformed URL '%3' for attribute '%1' in tag '%2'"</td>
315 | </tr>
316 | <tr>
317 | <td class="col-thirty"><strong>Corrección</strong></td>
318 | <td>Corrige la URL incorrecta.</td>
319 | </tr>
320 | </table>
321 |
322 | Este error se produce cuando un atributo tiene una URL, pero no es válida.
323 |
324 | ### Protocolo de URL no válido
325 |
326 | <table>
327 | <tr>
328 | <td class="col-thirty"><strong>Código</strong></td>
329 | <td>INVALID_URL_PROTOCOL</td>
330 | </tr>
331 | <tr>
332 | <td class="col-thirty"><strong>Formato</strong></td>
333 | <td>Invalid URL protocol '%3:' for attribute '%1' in tag '%2'.</td>
334 | </tr>
335 | <tr>
336 | <td class="col-thirty"><strong>Corrección</strong></td>
337 | <td>Cámbialo por un protocolo válido, por ejemplo, cambia `http` por `https`.</td>
338 | </tr>
339 | </table>
340 |
341 | Este error se produce en etiquetas cuyos atributos `href` o `src` se deben establecer en ciertos protocolos.
342 | Por ejemplo, muchas etiquetas requieren `https`.
343 |
344 | ### Falta una propiedad obligatoria de un atributo
345 |
346 | <table>
347 | <tr>
348 | <td class="col-thirty"><strong>Código</strong></td>
349 | <td>MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE</td>
350 | </tr>
351 | <tr>
352 | <td class="col-thirty"><strong>Formato</strong></td>
353 | <td>"The property '%1' is missing from attribute '%2' in tag '%3'."</td>
354 | </tr>
355 | <tr>
356 | <td class="col-thirty"><strong>Corrección</strong></td>
357 | <td>Añade la propiedad que falta.</td>
358 | </tr>
359 | </table>
360 |
361 | Actualmente, este error se produce si faltan estas propiedades obligatorias:
362 |
363 | * `content="...ie=..."`
364 | * `content="...width=..."`
365 | * `content="...minimum-scale=..."`
366 |
367 | Hacen referencia a etiquetas previstas:
368 |
369 | * `<meta http-equiv="X-UA-Compatible" content="ie=edge">`
370 | * `<meta name=viewport content="width=device-width;minimum-scale=1">`
371 |
372 | ### Atributos que se excluyen mutuamente
373 |
374 | <table>
375 | <tr>
376 | <td class="col-thirty"><strong>Código</strong></td>
377 | <td>MUTUALLY_EXCLUSIVE_ATTRS</td>
378 | </tr>
379 | <tr>
380 | <td class="col-thirty"><strong>Formato</strong></td>
381 | <td>"Mutually exclusive attributes encountered in tag '%1' - pick one of %2."</td>
382 | </tr>
383 | <tr>
384 | <td class="col-thirty"><strong>Corrección</strong></td>
385 | <td>Quita uno de los atributos que se excluyen mutuamente.</td>
386 | </tr>
387 | </table>
388 |
389 | Este error se produce cuando una etiqueta contiene dos atributos que se excluyen mutuamente.
390 | Por ejemplo, en los siguientes casos, solo se permite uno de los dos atributos:
391 |
392 | * [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` o `src`
393 | * [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` o `src`
394 | * [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` o `srcdoc`
395 | * [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` o `data-videoid`
396 |
397 | ### Falta un atributo obligatorio en la lista
398 |
399 | <table>
400 | <tr>
401 | <td class="col-thirty"><strong>Código</strong></td>
402 | <td>MANDATORY_ONEOF_ATTR_MISSING</td>
403 | </tr>
404 | <tr>
405 | <td class="col-thirty"><strong>Formato</strong></td>
406 | <td>"The tag '%1' is missing a mandatory attribute - pick one of %2."</td>
407 | </tr>
408 | <tr>
409 | <td class="col-thirty"><strong>Corrección</strong></td>
410 | <td>Añade el atributo obligatorio que falta en la selección de atributos proporcionados.</td>
411 | </tr>
412 | </table>
413 |
414 | Este error se produce cuando a una etiqueta le falta un atributo requerido de varias opciones.
415 | Por ejemplo, las siguientes etiquetas requieren uno de los dos atributos posibles:
416 |
417 | * [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` o `src`
418 | * [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` o `src`
419 | * [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` o `srcdoc`
420 | * [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` o `data-videoid`
421 |
422 | ### Etiqueta principal incorrecta
423 |
424 | <table>
425 | <tr>
426 | <td class="col-thirty"><strong>Código</strong></td>
427 | <td>WRONG_PARENT_TAG</td>
428 | </tr>
429 | <tr>
430 | <td class="col-thirty"><strong>Formato</strong></td>
431 | <td>"The parent tag of tag '%1' is '%2', but it can only be '%3'."</td>
432 | </tr>
433 | <tr>
434 | <td class="col-thirty"><strong>Corrección</strong></td>
435 | <td>Convierte la etiqueta en una etiqueta secundaria directa de la principal obligatoria.</td>
436 | </tr>
437 | </table>
438 |
439 | Algunas etiquetas requieren una etiqueta principal inmediata (en contraposición a una etiqueta antecesora lejana).
440 | A continuación se enumeran las etiquetas principales necesarias para etiquetas concretas (etiqueta, principal):
441 |
442 | * `!doctype` requiere la etiqueta principal `root`.
443 | * `html` requiere la etiqueta principal `!doctype`.
444 | * `head` requiere la etiqueta principal `html`.
445 | * `body` requiere la etiqueta principal `html`.
446 | * `link` requiere la etiqueta principal `head`.
447 | * `meta` requiere la etiqueta principal `head`.
448 | * `style amp-custom` requiere la etiqueta principal `head`.
449 | * `style` requiere la etiqueta principal `boilerplate (noscript)`.
450 | * `noscript` requiere la etiqueta principal `head`.
451 | * `script` requiere la etiqueta principal `head`.
452 | * `source` requiere una etiqueta multimedia (`amp-audio`, `amp-video`, etc.).
453 |
454 | ### Etiqueta antecesora no permitida
455 |
456 | <table>
457 | <tr>
458 | <td class="col-thirty"><strong>Código</strong></td>
459 | <td>DISALLOWED_TAG_ANCESTOR</td>
460 | </tr>
461 | <tr>
462 | <td class="col-thirty"><strong>Formato</strong></td>
463 | <td>"The tag '%1' may not appear as a descendant of tag '%2'."</td>
464 | </tr>
465 | <tr>
466 | <td class="col-thirty"><strong>Corrección</strong></td>
467 | <td>Quita (o mueve) la etiqueta anidada no permitida.</td>
468 | </tr>
469 | </table>
470 |
471 | Este error se produce cuando una etiqueta es descendiente de otra etiqueta que no se valida.
472 | En la actualidad, el único ejemplo es una etiqueta `template`, que podría no estar anidada en otra etiqueta `template`.
473 |
474 | ### Etiqueta antecesora obligatoria
475 |
476 | <table>
477 | <tr>
478 | <td class="col-thirty"><strong>Código</strong></td>
479 | <td>MANDATORY_TAG_ANCESTOR</td>
480 | </tr>
481 | <tr>
482 | <td class="col-thirty"><strong>Formato</strong></td>
483 | <td>"The tag '%1' may only appear as a descendant of tag '%2'."</td>
484 | </tr>
485 | <tr>
486 | <td class="col-thirty"><strong>Corrección</strong></td>
487 | <td>Quita la etiqueta o conviértela en descendiente de la etiqueta específica.</td>
488 | </tr>
489 | </table>
490 |
491 | 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`.
492 |
493 | El error se produce cuando a las siguientes etiquetas les falta su `mandatory_ancestor` (etiqueta, antecesora):
494 |
495 | * `img` debe ser descendiente de `noscript`.
496 | * `video` debe ser descendiente de `noscript`.
497 | * `audio` debe ser descendiente de `noscript`.
498 | * `noscript` debe ser descendiente de `body`.
499 |
500 | ### Etiqueta antecesora obligatoria con sugerencia
501 |
502 | <table>
503 | <tr>
504 | <td class="col-thirty"><strong>Código</strong></td>
505 | <td>MANDATORY_TAG_ANCESTOR_WITH_HINT</td>
506 | </tr>
507 | <tr>
508 | <td class="col-thirty"><strong>Formato</strong></td>
509 | <td>"The tag '%1' may only appear as a descendant of tag '%2'. Did you mean '%3'?"</td>
510 | </tr>
511 | <tr>
512 | <td class="col-thirty"><strong>Corrección</strong></td>
513 | <td>Quita la etiqueta, conviértela en descendiente de la etiqueta específica o cambia la etiqueta por la etiqueta con sugerencia.</td>
514 | </tr>
515 | </table>
516 |
517 | 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:
518 |
519 | * `img` no está dentro de la etiqueta `noscript` principal.
520 | * `video` no está dentro de la etiqueta `noscript` principal.
521 | * `audio` no está dentro de la etiqueta `noscript` principal.
522 | * `noscript` no está dentro de la etiqueta `body` principal.
523 |
524 | ### Etiqueta única duplicada
525 |
526 | <table>
527 | <tr>
528 | <td class="col-thirty"><strong>Código</strong></td>
529 | <td>DUPLICATE_UNIQUE_TAG</td>
530 | </tr>
531 | <tr>
532 | <td class="col-thirty"><strong>Formato</strong></td>
533 | <td>"The tag '%1' appears more than once in the document."</td>
534 | </tr>
535 | <tr>
536 | <td class="col-thirty"><strong>Corrección</strong></td>
537 | <td>Quita una de las etiquetas duplicadas del documento de AMP.</td>
538 | </tr>
539 | </table>
540 |
541 | Este error se produce cuando solo está permitido usar una instancia de la etiqueta y se encuentra un duplicado.
542 |
543 | La lista completa de etiquetas únicas es la siguiente:
544 |
545 | * `<doctype html>`
546 | * `<html amp>`
547 | * `<head>`
548 | * `<link rel=canonical href=...>`
549 | * `<link rel=amphtml href=...>`
550 | * `<meta charset="utf-8">`
551 | * `<meta viewport>`
552 | * `<style amp-custom>`
553 | * `<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>`
554 | * `<body>`
555 | * `<script src="https://cdn.ampproject.org/v0.js">`
556 |
557 | ## Errores de estilo y de diseño
558 |
559 | 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.
560 | 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.
561 |
562 | El diseño está más controlado en las páginas de AMP.
563 | 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.
564 | Pero esto no significa que debas incluir manualmente estos atributos,
565 | ya que en algunos tipos de diseño, el validador de AMP no devuelve errores, sino que adopta los valores predeterminados.
566 |
567 | 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).
568 | El validador devolverá errores cuando detecte diseños no admitidos y aplicará reglas de validación para el diseño predefinido.
569 |
570 | ### Hoja de estilo demasiado larga
571 |
572 | <table>
573 | <tr>
574 | <td class="col-thirty"><strong>Código</strong></td>
575 | <td>STYLESHEET_TOO_LONG</td>
576 | </tr>
577 | <tr>
578 | <td class="col-thirty"><strong>Formato</strong></td>
579 | <td>"The author stylesheet specified in tag 'style' is too long - we saw %1 bytes whereas the limit is %2 bytes."</td>
580 | </tr>
581 | <tr>
582 | <td class="col-thirty"><strong>Corrección</strong></td>
583 | <td>Reduce el tamaño de la hoja de estilo hasta menos de 50.000 bytes.</td>
584 | </tr>
585 | </table>
586 |
587 | 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.
588 |
589 | ### Error de sintaxis CSS
590 |
591 | <table>
592 | <tr>
593 | <td class="col-thirty"><strong>Código</strong></td>
594 | <td>CSS_SYNTAX</td>
595 | </tr>
596 | <tr>
597 | <td class="col-thirty"><strong>Formato</strong></td>
598 | <td>"CSS syntax error in tag '%1' - %2."</td>
599 | </tr>
600 | <tr>
601 | <td class="col-thirty"><strong>Corrección</strong></td>
602 | <td>Corrige el error de sintaxis CSS.</td>
603 | </tr>
604 | </table>
605 |
606 | Este error se produce cuando hay errores de sintaxis CSS en la etiqueta especificada.
607 | 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/).
608 |
609 | ### Error de sintaxis CSS en una regla específica
610 |
611 | <table>
612 | <tr>
613 | <td class="col-thirty"><strong>Código</strong></td>
614 | <td>CSS_SYNTAX_INVALID_AT_RULE</td>
615 | </tr>
616 | <tr>
617 | <td class="col-thirty"><strong>Formato</strong></td>
618 | <td>"CSS syntax error in tag '%1' - saw invalid at rule '%2'."</td>
619 | </tr>
620 | <tr>
621 | <td class="col-thirty"><strong>Corrección</strong></td>
622 | <td>Corrige el error de sintaxis CSS especificado.</td>
623 | </tr>
624 | </table>
625 |
626 | Este error se refiere a las reglas de CSS que contienen @, para las que AMP solo permite una serie de reglas
627 | (consulta también la [especificación de AMP](/docs/reference/spec.html)).
628 | Por ejemplo, la regla `@import` no está permitida.
629 | 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.
630 |
631 | ### La etiqueta de AMP no admite el diseño implícito
632 |
633 | <table>
634 | <tr>
635 | <td class="col-thirty"><strong>Código</strong></td>
636 | <td>IMPLIED_LAYOUT_INVALID</td>
637 | </tr>
638 | <tr>
639 | <td class="col-thirty"><strong>Formato</strong></td>
640 | <td>"The implied layout '%1' is not supported by tag '%2'."</td>
641 | </tr>
642 | <tr>
643 | <td class="col-thirty"><strong>Corrección</strong></td>
644 | <td>Proporciona un atributo de diseño válido para la etiqueta.</td>
645 | </tr>
646 | </table>
647 |
648 | 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).
649 | 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).
650 |
651 | El atributo `layout` es el que determina el comportamiento real del diseño.
652 | 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).
653 |
654 | **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.
655 | Para que el error desaparezca, especifica un diseño distinto de CONTAINER o añade un valor `width` y/o `height`.
656 |
657 | ### Atributo no permitido por el diseño implícito
658 |
659 | <table>
660 | <tr>
661 | <td class="col-thirty"><strong>Código</strong></td>
662 | <td>ATTR_DISALLOWED_BY_IMPLIED_LAYOUT</td>
663 | </tr>
664 | <tr>
665 | <td class="col-thirty"><strong>Formato</strong></td>
666 | <td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
667 | </tr>
668 | <tr>
669 | <td class="col-thirty"><strong>Corrección</strong></td>
670 | <td>Quita el atributo no permitido de la etiqueta o bien especifica un diseño que lo permita.</td>
671 | </tr>
672 | </table>
673 |
674 | 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.
675 | 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).
676 |
677 | ### La etiqueta de AMP no admite el diseño especificado
678 |
679 | <table>
680 | <tr>
681 | <td class="col-thirty"><strong>Código</strong></td>
682 | <td>SPECIFIED_LAYOUT_INVALID</td>
683 | </tr>
684 | <tr>
685 | <td class="col-thirty"><strong>Formato</strong></td>
686 | <td>"The specified layout '%1' is not supported by tag '%2'."</td>
687 | </tr>
688 | <tr>
689 | <td class="col-thirty"><strong>Corrección</strong></td>
690 | <td>Especifica un diseño que la etiqueta admita.</td>
691 | </tr>
692 | </table>
693 |
694 | Este error se produce cuando no se admite el diseño especificado para la etiqueta.
695 | 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).
696 |
697 | El atributo `layout` es el que determina el comportamiento real del diseño.
698 | 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).
699 |
700 | ### Atributo no permitido por el diseño especificado
701 |
702 | <table>
703 | <tr>
704 | <td class="col-thirty"><strong>Código</strong></td>
705 | <td>ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT</td>
706 | </tr>
707 | <tr>
708 | <td class="col-thirty"><strong>Formato</strong></td>
709 | <td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
710 | </tr>
711 | <tr>
712 | <td class="col-thirty"><strong>Corrección</strong></td>
713 | <td>Quita el atributo no permitido de la etiqueta o bien especifica un diseño que lo permita.</td>
714 | </tr>
715 | </table>
716 |
717 | Este error se produce cuando se especifica un diseño para la etiqueta de AMP y ese diseño contiene un atributo no permitido.
718 | 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).
719 |
720 | ### El atributo requerido por el diseño tiene un valor no válido
721 |
722 | <table>
723 | <tr>
724 | <td class="col-thirty"><strong>Código</strong></td>
725 | <td>ATTR_VALUE_REQUIRED_BY_LAYOUT</td>
726 | </tr>
727 | <tr>
728 | <td class="col-thirty"><strong>Formato</strong></td>
729 | <td>"Invalid value '%1' for attribute '%2' in tag '%3' - for layout '%4', set the attribute '%2' to value '%5'."</td>
730 | </tr>
731 | <tr>
732 | <td class="col-thirty"><strong>Corrección</strong></td>
733 | <td>Asigna el valor especificado al atributo.</td>
734 | </tr>
735 | </table>
736 |
737 | Este error se produce cuando el valor del atributo no es válido para el diseño especificado.
738 | 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).
739 |
740 | Imaginemos que se establece que el diseño sea `fixed-height` y se incluyen valores numéricos para `height` y para `width`.
741 | El diseño `fixed-height` adquiere un valor `height`.
742 | El atributo `width` no debe estar presente ni tener un valor distinto a `auto`.
743 | El validador devuelve ATTR_VALUE_REQUIRED_BY_LAYOUT.
744 |
745 | ### Unidades de anchura y altura incompatibles
746 |
747 | <table>
748 | <tr>
749 | <td class="col-thirty"><strong>Código</strong></td>
750 | <td>INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT</td>
751 | </tr>
752 | <tr>
753 | <td class="col-thirty"><strong>Formato</strong></td>
754 | <td>"Inconsistent units for width and height in tag '%1' - width is specified in '%2' whereas height is specified in '%3'."</td>
755 | </tr>
756 | <tr>
757 | <td class="col-thirty"><strong>Corrección</strong></td>
758 | <td>Proporciona las mismas unidades para la anchura y la altura.</td>
759 | </tr>
760 | </table>
761 |
762 | A excepción de `layout=fixed`, los atributos de anchura y altura se tienen que expresar con las mismas unidades.
763 | De no ser así, se produce este error.
764 |
765 | Por ejemplo, `<amp-img src="" layout="responsive" width="42px" height="42rem">` tiene como resultado el mensaje de error siguiente:
766 |
767 | "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'."
768 |
769 | ## Errores en las plantillas
770 |
771 | 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).
772 |
773 | 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)).
774 |
775 | ### El atributo contiene sintaxis de la plantilla
776 |
777 | <table>
778 | <tr>
779 | <td class="col-thirty"><strong>Código</strong></td>
780 | <td>TEMPLATE_IN_ATTR_NAME</td>
781 | </tr>
782 | <tr>
783 | <td class="col-thirty"><strong>Formato</strong></td>
784 | <td>"Mustache template syntax in attribute name '%1' in tag '%2'."</td>
785 | </tr>
786 | <tr>
787 | <td class="col-thirty"><strong>Corrección</strong></td>
788 | <td>Quita la sintaxis de la plantilla Mustache del atributo.</td>
789 | </tr>
790 | </table>
791 |
792 | 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.
793 |
794 | ### El atributo contiene sintaxis unívoca de plantilla
795 |
796 | <table>
797 | <tr>
798 | <td class="col-thirty"><strong>Código</strong></td>
799 | <td>UNESCAPED_TEMPLATE_IN_ATTR_VALUE</td>
800 | </tr>
801 | <tr>
802 | <td class="col-thirty"><strong>Formato</strong></td>
803 | <td>"The attribute '%1' in tag '%2' is set to '%3', which contains unescaped Mustache template syntax."</td>
804 | </tr>
805 | <tr>
806 | <td class="col-thirty"><strong>Corrección</strong></td>
807 | <td>Introduce código de escape en la plantilla Mustache.</td>
808 | </tr>
809 | </table>
810 |
811 | 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.
812 |
813 | ### El atributo contiene parciales de la plantilla
814 |
815 | <table>
816 | <tr>
817 | <td class="col-thirty"><strong>Código</strong></td>
818 | <td>TEMPLATE_PARTIAL_IN_ATTR_VALUE</td>
819 | </tr>
820 | <tr>
821 | <td class="col-thirty"><strong>Formato</strong></td>
822 | <td>"The attribute '%1' in tag '%2' is set to '%3', which contains a Mustache template partial."</td>
823 | </tr>
824 | <tr>
825 | <td class="col-thirty"><strong>Corrección</strong></td>
826 | <td>Quita el parcial de Mustache.</td>
827 | </tr>
828 | </table>
829 |
830 | 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.
831 |
832 | ## Errores de desactivación
833 |
834 | ### Etiqueta obsoleta
835 |
836 | <table>
837 | <tr>
838 | <td class="col-thirty"><strong>Código</strong></td>
839 | <td>DEPRECATED_TAG</td>
840 | </tr>
841 | <tr>
842 | <td class="col-thirty"><strong>Formato</strong></td>
843 | <td>No error message defined as yet (no deprecated tags).</td>
844 | </tr>
845 | <tr>
846 | <td class="col-thirty"><strong>Corrección</strong></td>
847 | <td>Quita la etiqueta obsoleta.</td>
848 | </tr>
849 | </table>
850 |
851 | Esta advertencia se produce cuando en el documento de AMP se detecta una etiqueta de AMP que antes era válida.
852 | Se trata solamente de una advertencia, ya que los documentos de AMP con advertencias siguen siendo válidos.
853 | Actualmente no existen etiquetas obsoletas; la advertencia se reserva para futuras desactivaciones.
854 |
855 | ### Atributo obsoleto
856 |
857 | <table>
858 | <tr>
859 | <td class="col-thirty"><strong>Código</strong></td>
860 | <td>DEPRECATED_ATTR</td>
861 | </tr>
862 | <tr>
863 | <td class="col-thirty"><strong>Formato</strong></td>
864 | <td>"The attribute '%1' in tag '%2' is deprecated - use '%3' instead."</td>
865 | </tr>
866 | <tr>
867 | <td class="col-thirty"><strong>Corrección</strong></td>
868 | <td>Se recomienda quitar el atributo obsoleto.</td>
869 | </tr>
870 | </table>
871 |
872 | Esta advertencia se produce cuando en el documento de AMP se detecta un atributo de AMP que antes era válido.
873 | Se trata solamente de una advertencia, ya que los documentos de AMP con advertencias siguen siendo válidos.
874 |
875 | 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).
876 |
```
--------------------------------------------------------------------------------
/content/docs/reference/[email protected]:
--------------------------------------------------------------------------------
```markdown
1 | ---
2 | $title: AMP-Validierungsfehler
3 | ---
4 |
5 | <!---
6 | Copyright 2015 The AMP HTML Authors. All Rights Reserved.
7 |
8 | Licensed under the Apache License, Version 2.0 (the "License");
9 | you may not use this file except in compliance with the License.
10 | You may obtain a copy of the License at
11 |
12 | http://www.apache.org/licenses/LICENSE-2.0
13 |
14 | Unless required by applicable law or agreed to in writing, software
15 | distributed under the License is distributed on an "AS-IS" BASIS,
16 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | See the License for the specific language governing permissions and
18 | limitations under the License.
19 | -->
20 |
21 | Gültige AMP-Dokumente dürfen keine Validierungsfehler enthalten.
22 | 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.
23 | Eine komplette Übersicht aller Validierungsfehler finden Sie in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
24 |
25 | [TOC]
26 |
27 | ## Fehler bei AMP-HTML-Tags und -Attributen
28 |
29 | ### Erforderliches Tag fehlt
30 |
31 | <table>
32 | <tr>
33 | <td class="col-thirty"><strong>Code</strong></td>
34 | <td>MANDATORY_TAG_MISSING</td>
35 | </tr>
36 | <tr>
37 | <td class="col-thirty"><strong>Format</strong></td>
38 | <td>"The mandatory tag '%1' is missing or incorrect."</td>
39 | </tr>
40 | <tr>
41 | <td class="col-thirty"><strong>Korrektur</strong></td>
42 | <td>Erforderliches HTML-Tag hinzufügen oder korrigieren</td>
43 | </tr>
44 | </table>
45 |
46 | Die folgenden Tags müssen in allen AMP-Dokumenten vorhanden sein:
47 |
48 | * <a name="doctype"></a>`<!doctype html>`
49 | * <a name="html"></a>`<html amp> or <html ⚡>`
50 | * <a name="head"></a>`<head>`
51 | * <a name="canonical"></a>`<link rel="canonical" href="$SOME_URL" />`
52 | * <a name="utf"></a>`<meta charset="utf-8">`
53 | * <a name="viewport"></a>`<meta name="viewport" content="...">`
54 | * <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>`
55 | * <a name="ampscript"></a>`<script async src="https://cdn.ampproject.org/v0.js"></script>`
56 | * <a name="body"></a>`<body>`
57 |
58 | 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.
59 |
60 | ### Für ein anderes Tag erforderliches Tag fehlt
61 |
62 | <table>
63 | <tr>
64 | <td class="col-thirty"><strong>Code</strong></td>
65 | <td>TAG_REQUIRED_BY_MISSING</td>
66 | </tr>
67 | <tr>
68 | <td class="col-thirty"><strong>Format</strong></td>
69 | <td>"The '%1' tag is missing or incorrect, but required by '%2'."</td>
70 | </tr>
71 | <tr>
72 | <td class="col-thirty"><strong>Korrektur</strong></td>
73 | <td>Entsprechendes HTML-Tag hinzufügen oder korrigieren</td>
74 | </tr>
75 | </table>
76 |
77 | Das Validierungstool gibt den Fehler `TAG_REQUIRED_BY_MISSING` zurück, wenn eine
78 | erweiterte Komponente im AMP-Dokument ermittelt, das entsprechende `<script>` jedoch nicht gefunden wird.
79 |
80 | [Erweiterte Komponenten](/docs/reference/extended.html) müssen explizit als benutzerdefinierte Elemente in das AMP-Dokument aufgenommen werden.
81 | 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.
82 |
83 | ### Unzulässiges Tag
84 |
85 | <table>
86 | <tr>
87 | <td class="col-thirty"><strong>Code</strong></td>
88 | <td>DISALLOWED_TAG</td>
89 | </tr>
90 | <tr>
91 | <td class="col-thirty"><strong>Format</strong></td>
92 | <td>"The tag '%1' is disallowed."</td>
93 | </tr>
94 | <tr>
95 | <td class="col-thirty"><strong>Korrektur</strong></td>
96 | <td>Unzulässiges Tag entfernen</td>
97 | </tr>
98 | </table>
99 |
100 | 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.
101 |
102 | ### Erforderliches Attribut fehlt
103 |
104 | <table>
105 | <tr>
106 | <td class="col-thirty"><strong>Code</strong></td>
107 | <td>MANDATORY_ATTR_MISSING</td>
108 | </tr>
109 | <tr>
110 | <td class="col-thirty"><strong>Format</strong></td>
111 | <td>"The mandatory attribute '%1' is missing in tag '%2'."</td>
112 | </tr>
113 | <tr>
114 | <td class="col-thirty"><strong>Korrektur</strong></td>
115 | <td>Erforderliches Attribut in Tag einfügen</td>
116 | </tr>
117 | </table>
118 |
119 | 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.
120 | Suchen Sie einfach nach dem Tag, sehen Sie sich die aufgeführten Attribute an und achten Sie auf `mandatory: true`.
121 | Die erforderlichen Attribute der einzelnen AMP-Tags finden Sie außerdem in der Spezifikation des entsprechenden Tags.
122 |
123 | ### Ungültiger Attributwert
124 |
125 | <table>
126 | <tr>
127 | <td class="col-thirty"><strong>Code</strong></td>
128 | <td>INVALID_ATTR_VALUE</td>
129 | </tr>
130 | <tr>
131 | <td class="col-thirty"><strong>Format</strong></td>
132 | <td>"The attribute '%1' in tag '%2' is set to the invalid value '%3'."</td>
133 | </tr>
134 | <tr>
135 | <td class="col-thirty"><strong>Korrektur</strong></td>
136 | <td>Gültigen Attributwert eingeben</td>
137 | </tr>
138 | </table>
139 |
140 | Dieser Fehler bedeutet, dass ein HTML-Tag über ein Attribut mit einem zulässigen Namen, aber unzulässigen Wert verfügt.
141 | 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.
142 |
143 | <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.
144 |
145 | ### Unzulässiges Attribut
146 |
147 | <table>
148 | <tr>
149 | <td class="col-thirty"><strong>Code</strong></td>
150 | <td>DISALLOWED_ATTR</td>
151 | </tr>
152 | <tr>
153 | <td class="col-thirty"><strong>Format</strong></td>
154 | <td>"The attribute '%1' may not appear in tag '%2'."</td>
155 | </tr>
156 | <tr>
157 | <td class="col-thirty"><strong>Korrektur</strong></td>
158 | <td>Attribut aus dem HTML-Tag entfernen</td>
159 | </tr>
160 | </table>
161 |
162 | Da Attribute auf die weiße Liste gesetzt werden, gibt es keine definitive Auflistung unzulässiger Attribute.
163 | 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`.
164 |
165 | 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.
166 |
167 | ### Erforderlicher Text fehlt oder ist falsch
168 |
169 | <table>
170 | <tr>
171 | <td class="col-thirty"><strong>Code</strong></td>
172 | <td>MANDATORY_CDATA_MISSING_OR_INCORRECT</td>
173 | </tr>
174 | <tr>
175 | <td class="col-thirty"><strong>Format</strong></td>
176 | <td>"The mandatory text (CDATA) inside tag '%1' is missing or incorrect."</td>
177 | </tr>
178 | <tr>
179 | <td class="col-thirty"><strong>Korrektur</strong></td>
180 | <td>Erforderlichen Text in Tag einfügen oder korrigieren</td>
181 | </tr>
182 | </table>
183 |
184 | CDATA-Werte sind die Contentdaten zwischen einem HTML-Start- und -End-Tag. Sie werden derzeit sowohl mit schwarzen als auch weißen Listen ausgewertet.
185 | Tags mit erforderlichen CDATA-Werten sind:
186 |
187 | [sourcecode:html]
188 | <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>
189 | [/sourcecode]
190 |
191 | und
192 |
193 | [sourcecode:html]
194 | <style amp-custom>
195 | [/sourcecode]
196 |
197 | Dafür werden unter Umständen die folgenden detaillierten Benachrichtigungen angezeigt:
198 |
199 | * "Mandatory style boilerplate (js enabled)"
200 | * "Mandatory style boilerplate (noscript)"
201 | * "Disallowed -amp- CSS class name prefix"
202 | * "Disallowed !important attribute in CSS"
203 | * "Disallowed @charset in CSS"
204 | * "Disallowed @import in CSS"
205 | * "Disallowed @namespace in CSS"
206 | * "Disallowed @supports in CSS"
207 | * "Disallowed @document in CSS"
208 | * "Disallowed @page in CSS"
209 | * "Disallowed @viewport in CSS"
210 |
211 | ### Unzulässiger Text in Tag
212 |
213 | <table>
214 | <tr>
215 | <td class="col-thirty"><strong>Code</strong></td>
216 | <td>CDATA_VIOLATES_BLACKLIST</td>
217 | </tr>
218 | <tr>
219 | <td class="col-thirty"><strong>Format</strong></td>
220 | <td>"The text (CDATA) inside tag '%1' matches '%2', which is disallowed."</td>
221 | </tr>
222 | <tr>
223 | <td class="col-thirty"><strong>Korrektur</strong></td>
224 | <td>Unzulässigen Text entfernen</td>
225 | </tr>
226 | </table>
227 |
228 | Bestimmte CSS-Daten wurden für die Validierung wichtiger CSS-AMP-Regeln auf die schwarze Liste gesetzt.
229 |
230 | 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`):
231 |
232 | * `"\\.i?-amp-"` ("CSS -amp- class name prefix")
233 | * `"!important"`
234 | * `"charset"`
235 | * `"@import"`
236 | * `"@namespace"`
237 | * `"@document"`
238 | * `"@page"`
239 | * `"@viewport"`
240 |
241 | ### Unzulässige Property in einem Attribut im Tag
242 |
243 | <table>
244 | <tr>
245 | <td class="col-thirty"><strong>Code</strong></td>
246 | <td>DISALLOWED_PROPERTY_IN_ATTR_VALUE</td>
247 | </tr>
248 | <tr>
249 | <td class="col-thirty"><strong>Format</strong></td>
250 | <td>"The property '%1' in attribute '%2' in tag '%3' is disallowed."</td>
251 | </tr>
252 | <tr>
253 | <td class="col-thirty"><strong>Korrektur</strong></td>
254 | <td>Unzulässige Property aus dem entsprechenden Attribut entfernen</td>
255 | </tr>
256 | </table>
257 |
258 | Dieser Fehler wird zurückgegeben, wenn der Property-Name in einem Attribut nicht zulässig ist.
259 | In diesem Kontext handelt es sich bei "Property" um die strukturierten Schlüssel-/Wertdaten in einem Attribut.
260 | In `<meta name="viewport content="width=device-width;minimum-scale=1">` sind `width` und `minimum-scale` beispielsweise Property-Namen.
261 |
262 | Für das folgende Beispiel wird der Fehler DISALLOWED_PROPERTY_IN_ATTR_VALUE zurückgegeben:
263 |
264 | `<meta name="viewport content="width=device-width;invalidfoo=1">`
265 |
266 | Auch dieses Beispiel würde einen Fehler auslösen:
267 |
268 | `<meta http-equiv="X-UA-Compatible" content="invalidfoo=edge">`
269 |
270 | Richtig ist `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
271 |
272 | ### Ungültiger Property-Wert
273 |
274 | <table>
275 | <tr>
276 | <td class="col-thirty"><strong>Code</strong></td>
277 | <td>INVALID_PROPERTY_VALUE_IN_ATTR_VALUE</td>
278 | </tr>
279 | <tr>
280 | <td class="col-thirty"><strong>Format</strong></td>
281 | <td>"The property '%1' in attribute '%2' in tag '%3' is set to '%4', which is invalid."</td>
282 | </tr>
283 | <tr>
284 | <td class="col-thirty"><strong>Korrektur</strong></td>
285 | <td>Ungültigen Property-Wert korrigieren</td>
286 | </tr>
287 | </table>
288 |
289 | Dieser Fehler tritt auf, wenn der Property-Wert in einem Attribut ungültig ist.
290 | In diesem Kontext handelt es sich bei "Property" um die strukturierten Schlüssel-/Wertdaten in einem Attribut.
291 | In `<meta name="viewport content="width=device-width;minimum-scale=1">` sind `device-width` und `1` beispielsweise Property-Werte.
292 |
293 | Für das folgende Beispiel wird der Fehler INVALID_PROPERTY_VALUE_IN_ATTR_VALUE zurückgegeben:
294 |
295 | `<meta name=viewport content="width=device-width;minimum-scale=invalidfoo">`
296 |
297 | Auch dieses Beispiel würde einen Fehler auslösen:
298 |
299 | `<meta http-equiv="X-UA-Compatible" content="ie=invalidfoo">`
300 |
301 | Richtig ist: `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
302 |
303 | ### URL fehlt
304 |
305 | <table>
306 | <tr>
307 | <td class="col-thirty"><strong>Code</strong></td>
308 | <td>MISSING_URL</td>
309 | </tr>
310 | <tr>
311 | <td class="col-thirty"><strong>Format</strong></td>
312 | <td>"Missing URL for attribute '%1' in tag '%2'."</td>
313 | </tr>
314 | <tr>
315 | <td class="col-thirty"><strong>Korrektur</strong></td>
316 | <td>Gültige URL hinzufügen</td>
317 | </tr>
318 | </table>
319 |
320 | Dieser Fehler tritt auf, wenn eine URL für das Attribut erforderlich ist, aber nicht angegeben wurde, etwa ein leeres `href`- oder `src`-Attribut.
321 |
322 | ### Ungültige URL
323 |
324 | <table>
325 | <tr>
326 | <td class="col-thirty"><strong>Code</strong></td>
327 | <td>INVALID_URL_PROTOCOL</td>
328 | </tr>
329 | <tr>
330 | <td class="col-thirty"><strong>Format</strong></td>
331 | <td>"Malformed URL '%3' for attribute '%1' in tag '%2'"</td>
332 | </tr>
333 | <tr>
334 | <td class="col-thirty"><strong>Korrektur</strong></td>
335 | <td>Fehlerhafte URL korrigieren</td>
336 | </tr>
337 | </table>
338 |
339 | Dieser Fehler tritt auf, wenn ein Attribut eine ungültige URL enthält.
340 |
341 | ### Ungültiges URL-Protokoll
342 |
343 | <table>
344 | <tr>
345 | <td class="col-thirty"><strong>Code</strong></td>
346 | <td>INVALID_URL_PROTOCOL</td>
347 | </tr>
348 | <tr>
349 | <td class="col-thirty"><strong>Format</strong></td>
350 | <td>Invalid URL protocol '%3:' for attribute '%1' in tag '%2'.</td>
351 | </tr>
352 | <tr>
353 | <td class="col-thirty"><strong>Korrektur</strong></td>
354 | <td>In ein gültiges Protokoll ändern, etwa `https` anstelle von `http`</td>
355 | </tr>
356 | </table>
357 |
358 | Dieser Fehler tritt bei Tags mit `href`- oder `src`-Attributen auf, für die ein bestimmtes Protokoll festgelegt sein muss.
359 | Für viele Tags ist beispielsweise `https` erforderlich.
360 |
361 | ### Erforderliche Property nicht in Attribut vorhanden
362 |
363 | <table>
364 | <tr>
365 | <td class="col-thirty"><strong>Code</strong></td>
366 | <td>MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE</td>
367 | </tr>
368 | <tr>
369 | <td class="col-thirty"><strong>Format</strong></td>
370 | <td>"The property '%1' is missing from attribute '%2' in tag '%3'."</td>
371 | </tr>
372 | <tr>
373 | <td class="col-thirty"><strong>Korrektur</strong></td>
374 | <td>Fehlende Property hinzufügen</td>
375 | </tr>
376 | </table>
377 |
378 | Derzeit tritt dieser Fehler auf, wenn die folgenden erforderlichen Properties fehlen:
379 |
380 | * `content="...ie=..."`
381 | * `content="...width=..."`
382 | * `content="...minimum-scale=..."`
383 |
384 | Sie verweisen auf die erwarteten Tags:
385 |
386 | * `<meta http-equiv="X-UA-Compatible" content="ie=edge">`
387 | * `<meta name=viewport content="width=device-width;minimum-scale=1">`
388 |
389 | ### Sich gegenseitig ausschließende Attribute
390 |
391 | <table>
392 | <tr>
393 | <td class="col-thirty"><strong>Code</strong></td>
394 | <td>MUTUALLY_EXCLUSIVE_ATTRS</td>
395 | </tr>
396 | <tr>
397 | <td class="col-thirty"><strong>Format</strong></td>
398 | <td>"Mutually exclusive attributes encountered in tag '%1' - pick one of %2."</td>
399 | </tr>
400 | <tr>
401 | <td class="col-thirty"><strong>Korrektur</strong></td>
402 | <td>Eins der sich gegenseitig ausschließenden Attribute entfernen</td>
403 | </tr>
404 | </table>
405 |
406 | Dieser Fehler tritt auf, wenn beide sich gegenseitig ausschließende Attribute in einem Tag enthalten sind.
407 | Beispielsweise ist in den folgenden Tags nur jeweils eines der Attribute zulässig:
408 |
409 | * [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` oder `src`
410 | * [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` oder `src`
411 | * [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` oder `srcdoc`
412 | * [amp-youtube](/docs/reference/extended/amp-youtube.html ): `src` oder `data-videoid`
413 |
414 | ### Erforderliches Attribut fehlt auf Liste
415 |
416 | <table>
417 | <tr>
418 | <td class="col-thirty"><strong>Code</strong></td>
419 | <td>MANDATORY_ONEOF_ATTR_MISSING</td>
420 | </tr>
421 | <tr>
422 | <td class="col-thirty"><strong>Format</strong></td>
423 | <td>"The tag '%1' is missing a mandatory attribute - pick one of %2." </td>
424 | </tr>
425 | <tr>
426 | <td class="col-thirty"><strong>Korrektur</strong></td>
427 | <td>Erforderliches Attribut aus den verfügbaren Attributen auswählen und einfügen</td>
428 | </tr>
429 | </table>
430 |
431 | Dieser Fehler tritt auf, wenn ein erforderliches Attribut aus mehreren Möglichkeiten in einem Tag fehlt.
432 | Beispielsweise ist für die folgenden Tags jeweils eines der beiden anschließend genannten Attribute erforderlich:
433 |
434 | * [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` oder `src`
435 | * [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` oder `src`
436 | * [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` oder `srcdoc`
437 | * [amp-youtube](/docs/reference/extended/amp-youtube.html ): `src` oder `data-videoid`
438 |
439 | ### Falsches übergeordnetes Tag
440 |
441 | <table>
442 | <tr>
443 | <td class="col-thirty"><strong>Code</strong></td>
444 | <td>WRONG_PARENT_TAG</td>
445 | </tr>
446 | <tr>
447 | <td class="col-thirty"><strong>Format</strong></td>
448 | <td>"The parent tag of tag '%1' is '%2', but it can only be '%3'."</td>
449 | </tr>
450 | <tr>
451 | <td class="col-thirty"><strong>Korrektur</strong></td>
452 | <td>Tag dem erforderlichen übergeordneten Tag direkt unterordnen</td>
453 | </tr>
454 | </table>
455 |
456 | Für manche Tags sind direkt übergeordnete Tags erforderlich.
457 | Nachstehend sehen Sie die erforderlichen übergeordneten Tags für bestimmte Tags (Tag, übergeordnetes Tag):
458 |
459 | * Für `!doctype` ist das übergeordnete Tag `root` erforderlich.
460 | * Für `html` ist das übergeordnete Tag `!doctype` erforderlich.
461 | * Für `head` ist das übergeordnete Tag `html` erforderlich.
462 | * Für `body` ist das übergeordnete Tag `html` erforderlich.
463 | * Für `link` ist das übergeordnete Tag `head` erforderlich.
464 | * Für `meta` ist das übergeordnete Tag `head` erforderlich.
465 | * Für `style amp-custom` ist das übergeordnete Tag `head` erforderlich.
466 | * Für `style` ist das übergeordnete Tag `boilerplate (noscript)` erforderlich.
467 | * Für `noscript` ist das übergeordnete Tag `head` erforderlich.
468 | * Für `script` ist das übergeordnete Tag `head` erforderlich.
469 | * Für `source` ist ein Medien-Tag erforderlich, etwa `amp-audio` oder `amp-video`.
470 |
471 | ### Unzulässiges Vorgängertag
472 |
473 | <table>
474 | <tr>
475 | <td class="col-thirty"><strong>Code</strong></td>
476 | <td>DISALLOWED_TAG_ANCESTOR</td>
477 | </tr>
478 | <tr>
479 | <td class="col-thirty"><strong>Format</strong></td>
480 | <td>"The tag '%1' may not appear as a descendant of tag '%2'."</td>
481 | </tr>
482 | <tr>
483 | <td class="col-thirty"><strong>Korrektur</strong></td>
484 | <td>Unzulässiges verschachteltes Tag entfernen oder verschieben</td>
485 | </tr>
486 | </table>
487 |
488 | Dieser Fehler tritt auf, wenn ein Tag ein Nachfolger eines anderen Tags ist, das nicht validiert werden kann.
489 | Derzeit wären hier als einziges Beispiel `template`-Tags zu nennen, die anderen `template`-Tags nicht untergeordnet werden dürfen.
490 |
491 | ### Erforderliches Vorgängertag
492 |
493 | <table>
494 | <tr>
495 | <td class="col-thirty"><strong>Code</strong></td>
496 | <td>MANDATORY_TAG_ANCESTOR</td>
497 | </tr>
498 | <tr>
499 | <td class="col-thirty"><strong>Format</strong></td>
500 | <td>"The tag '%1' may only appear as a descendant of tag '%2'."</td>
501 | </tr>
502 | <tr>
503 | <td class="col-thirty"><strong>Korrektur</strong></td>
504 | <td>Tag entfernen oder zum Nachfolger des entsprechenden Tags machen</td>
505 | </tr>
506 | </table>
507 |
508 | Erforderliche Nachfolger werden in der [Spezifikation des AMP-Validierungstools](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii) als `mandatory_ancestor` definiert.
509 |
510 | Dieser Fehler tritt auf, wenn bei den folgenden Tags der `mandatory_ancestor` fehlt (Tag, Vorgängertag):
511 |
512 | * `img` muss ein Nachfolger von `noscript` sein.
513 | * `video` muss ein Nachfolger von `noscript` sein.
514 | * `audio` muss ein Nachfolger von `noscript` sein.
515 | * `noscript` muss ein Nachfolger von `body` sein.
516 |
517 | ### Erforderliches Vorgängertag mit hint-Tag
518 |
519 | <table>
520 | <tr>
521 | <td class="col-thirty"><strong>Code</strong></td>
522 | <td>MANDATORY_TAG_ANCESTOR_WITH_HINT</td>
523 | </tr>
524 | <tr>
525 | <td class="col-thirty"><strong>Format</strong></td>
526 | <td>"The tag '%1' may only appear as a descendant of tag '%2'. Did you mean '%3'?"</td>
527 | </tr>
528 | <tr>
529 | <td class="col-thirty"><strong>Korrektur</strong></td>
530 | <td>Tag entfernen, zum Nachfolger des entsprechenden Tags machen oder durch das hint-Tag ersetzen</td>
531 | </tr>
532 | </table>
533 |
534 | Dieser Fehler tritt auf, wenn eines der folgenden Tags im AMP-Dokument ermittelt wird, aber dem erforderlichen übergeordneten Tag nicht richtig untergeordnet wurde:
535 |
536 | * `img` wurde dem übergeordneten Tag `noscript` nicht untergeordnet.
537 | * `video` wurde dem übergeordneten Tag `noscript` nicht untergeordnet.
538 | * `audio` wurde dem übergeordneten Tag `noscript` nicht untergeordnet.
539 | * `noscript` wurde dem übergeordneten Tag `body` nicht untergeordnet.
540 |
541 | ### Doppeltes eindeutiges Tag
542 |
543 | <table>
544 | <tr>
545 | <td class="col-thirty"><strong>Code</strong></td>
546 | <td>DUPLICATE_UNIQUE_TAG</td>
547 | </tr>
548 | <tr>
549 | <td class="col-thirty"><strong>Format</strong></td>
550 | <td>"The tag '%1' appears more than once in the document."</td>
551 | </tr>
552 | <tr>
553 | <td class="col-thirty"><strong>Korrektur</strong></td>
554 | <td>Eines der doppelten Tags aus dem AMP-Dokument entfernen</td>
555 | </tr>
556 | </table>
557 |
558 | Dieser Fehler tritt auf, wenn genau eine Instanz des Tags zulässig ist, aber ein Duplikat ermittelt wurde.
559 |
560 | Vollständige Liste der eindeutigen Tags:
561 |
562 | * `<doctype html>`
563 | * `<html amp>`
564 | * `<head>`
565 | * `<link rel=canonical href=...>`
566 | * `<link rel=amphtml href=...>`
567 | * `<meta charset="utf-8">`
568 | * `<meta viewport>`
569 | * `<style amp-custom>`
570 | * `<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>`
571 | * `<body>`
572 | * `<script src="https://cdn.ampproject.org/v0.js">`
573 |
574 | ## Stil- und Layoutfehler
575 |
576 | 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.
577 | Allerdings gibt es einige Einschränkungen, die sicher stellen sollen, dass Seiten schnell laden. Das AMP-Validierungstool setzt diese Einschränkungen durch.
578 |
579 | Für das Layout von AMP-Seiten gibt es feste Regeln.
580 | 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.
581 | Das bedeutet jedoch nicht, dass Sie diese Attribute manuell einfügen müssen.
582 | Bei bestimmten Layouttypen gibt das AMP-Validierungstool keine Fehler zurück, da von Standardwerten ausgegangen wird.
583 |
584 | 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.
585 | Das Validierungstool gibt Fehler für nicht unterstützte Layouts zurück und prüft die Validierungsregeln für das vordefinierte Layout.
586 |
587 | ### Stylesheet zu lang
588 |
589 | <table>
590 | <tr>
591 | <td class="col-thirty"><strong>Code</strong></td>
592 | <td>STYLESHEET_TOO_LONG</td>
593 | </tr>
594 | <tr>
595 | <td class="col-thirty"><strong>Format</strong></td>
596 | <td>"The author stylesheet specified in tag 'style' is too long - we saw %1 bytes whereas the limit is %2 bytes."</td>
597 | </tr>
598 | <tr>
599 | <td class="col-thirty"><strong>Korrektur</strong></td>
600 | <td>Größe des Stylesheets auf unter 50.000 Byte reduzieren.</td>
601 | </tr>
602 | </table>
603 |
604 | 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.
605 |
606 | ### CSS-Syntaxfehler
607 |
608 | <table>
609 | <tr>
610 | <td class="col-thirty"><strong>Code</strong></td>
611 | <td>CSS_SYNTAX</td>
612 | </tr>
613 | <tr>
614 | <td class="col-thirty"><strong>Format</strong></td>
615 | <td>"CSS syntax error in tag '%1' - %2."</td>
616 | </tr>
617 | <tr>
618 | <td class="col-thirty"><strong>Korrektur</strong></td>
619 | <td>CSS-Syntaxfehler beheben</td>
620 | </tr>
621 | </table>
622 |
623 | Dieser Fehler tritt auf, wenn das entsprechende Tag CSS-Syntaxfehler aufweist.
624 | 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/).
625 |
626 | ### CSS-Syntaxfehler bei bestimmter Regel
627 |
628 | <table>
629 | <tr>
630 | <td class="col-thirty"><strong>Code</strong></td>
631 | <td>CSS_SYNTAX_INVALID_AT_RULE</td>
632 | </tr>
633 | <tr>
634 | <td class="col-thirty"><strong>Format</strong></td>
635 | <td>"CSS syntax error in tag '%1' - saw invalid at rule '%2'."</td>
636 | </tr>
637 | <tr>
638 | <td class="col-thirty"><strong>Korrektur</strong></td>
639 | <td>CSS-Syntaxfehler beheben</td>
640 | </tr>
641 | </table>
642 |
643 | Dieser Fehler bezieht sich auf die @-Regeln in CSS, für die AMP nur einige wenige Regeln zulässt.
644 | Weitere Informationen finden Sie in der [AMP-Spezifikation](/docs/reference/spec.html).
645 | Beispielsweise ist `@import` nicht zulässig.
646 | Dem Validierungsfehler können Sie entnehmen, welche Regel ungültig ist. So können Sie diese leichter korrigieren.
647 |
648 | ### Impliziertes Layout nicht vom AMP-Tag unterstützt
649 |
650 | <table>
651 | <tr>
652 | <td class="col-thirty"><strong>Code</strong></td>
653 | <td>IMPLIED_LAYOUT_INVALID</td>
654 | </tr>
655 | <tr>
656 | <td class="col-thirty"><strong>Format</strong></td>
657 | <td>"The implied layout '%1' is not supported by tag '%2'."</td>
658 | </tr>
659 | <tr>
660 | <td class="col-thirty"><strong>Korrektur</strong></td>
661 | <td>Gültiges Layoutattribut für das Tag angeben</td>
662 | </tr>
663 | </table>
664 |
665 | 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.
666 | Ü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).
667 |
668 | Das tatsächliche Layoutverhalten richtet sich nach dem Attribut `layout`.
669 | 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).
670 |
671 | **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.
672 | 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.
673 |
674 | ### Attribute nicht für impliziertes Layout zulässig
675 |
676 | <table>
677 | <tr>
678 | <td class="col-thirty"><strong>Code</strong></td>
679 | <td>ATTR_DISALLOWED_BY_IMPLIED_LAYOUT</td>
680 | </tr>
681 | <tr>
682 | <td class="col-thirty"><strong>Format</strong></td>
683 | <td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
684 | </tr>
685 | <tr>
686 | <td class="col-thirty"><strong>Korrektur</strong></td>
687 | <td>Unzulässiges Attribut aus dem Tag entfernen oder ein Layout auswählen, das dieses Attribut unterstützt</td>
688 | </tr>
689 | </table>
690 |
691 | Dieser Fehler tritt auf, wenn Sie kein Layout für das AMP-Tag angeben und das implizierte Layout ein unzulässiges Attribut enthält.
692 | 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.
693 |
694 | ### Festgelegtes Layout nicht vom AMP-Tag unterstützt
695 |
696 | <table>
697 | <tr>
698 | <td class="col-thirty"><strong>Code</strong></td>
699 | <td>SPECIFIED_LAYOUT_INVALID</td>
700 | </tr>
701 | <tr>
702 | <td class="col-thirty"><strong>Format</strong></td>
703 | <td>"The specified layout '%1' is not supported by tag '%2'."</td>
704 | </tr>
705 | <tr>
706 | <td class="col-thirty"><strong>Korrektur</strong></td>
707 | <td>Layout festlegen, das vom Tag unterstützt wird</td>
708 | </tr>
709 | </table>
710 |
711 | Dieser Fehler tritt auf, wenn das Layout, das für das Tag festgelegt wurde, nicht unterstützt wird.
712 | Ü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).
713 |
714 | Das tatsächliche Layoutverhalten richtet sich nach dem Attribut `layout`.
715 | 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).
716 |
717 | ### Attribute nicht für festgelegtes Layout zulässig
718 |
719 | <table>
720 | <tr>
721 | <td class="col-thirty"><strong>Code</strong></td>
722 | <td>ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT</td>
723 | </tr>
724 | <tr>
725 | <td class="col-thirty"><strong>Format</strong></td>
726 | <td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
727 | </tr>
728 | <tr>
729 | <td class="col-thirty"><strong>Korrektur</strong></td>
730 | <td>Unzulässiges Attribut aus dem Tag entfernen oder ein Layout auswählen, das dieses Attribut unterstützt</td>
731 | </tr>
732 | </table>
733 |
734 | Dieser Fehler tritt auf, wenn Sie ein Layout für das AMP-Tag festlegen und das Layout ein unzulässiges Attribut enthält.
735 | 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.
736 |
737 | ### Ungültiger Wert eines für das Layout erforderlichen Attributs
738 |
739 | <table>
740 | <tr>
741 | <td class="col-thirty"><strong>Code</strong></td>
742 | <td>ATTR_VALUE_REQUIRED_BY_LAYOUT</td>
743 | </tr>
744 | <tr>
745 | <td class="col-thirty"><strong>Format</strong></td>
746 | <td>"Invalid value '%1' for attribute '%2' in tag '%3' - for layout '%4', set the attribute '%2' to value '%5'."</td>
747 | </tr>
748 | <tr>
749 | <td class="col-thirty"><strong>Korrektur</strong></td>
750 | <td>Attribut auf den festgelegten Wert setzen</td>
751 | </tr>
752 | </table>
753 |
754 | Dieser Fehler tritt auf, wenn der Attributwert nicht für das festgelegte Layout gültig ist.
755 | 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.
756 |
757 | Angenommen, Sie legen `fixed-height` für das Layout fest und geben numerische Werte für `height` und `width` an.
758 | Für das Layout `fixed-height` wird ein `height`-Wert übernommen.
759 | Das Attribut `width` darf nicht vorhanden sein oder muss auf `auto` gesetzt werden.
760 | Das Validierungstool gibt den Fehler ATTR_VALUE_REQUIRED_BY_LAYOUT zurück.
761 |
762 | ### Abweichende Einheiten für Breite und Höhe
763 |
764 | <table>
765 | <tr>
766 | <td class="col-thirty"><strong>Code</strong></td>
767 | <td>INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT</td>
768 | </tr>
769 | <tr>
770 | <td class="col-thirty"><strong>Format</strong></td>
771 | <td>"Inconsistent units for width and height in tag '%1' - width is specified in '%2' whereas height is specified in '%3'."</td>
772 | </tr>
773 | <tr>
774 | <td class="col-thirty"><strong>Korrektur</strong></td>
775 | <td>Einheitliche Einheiten für Breite und Höhe angeben</td>
776 | </tr>
777 | </table>
778 |
779 | Mit Ausnahme von `layout=fixed` müssen Attribute für Breite und Höhe in derselben Einheit angegeben werden.
780 | Anderenfalls wird dieser Fehler zurückgegeben.
781 |
782 | Beispielsweise wird für `<amp-img src="" layout="responsive" width="42px" height="42rem">` die folgende Fehlermeldung zurückgegeben:
783 |
784 | "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."
785 |
786 | ## Vorlagenfehler
787 |
788 | 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).
789 |
790 | 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).
791 |
792 | ### Attribut enthält Vorlagensyntax
793 |
794 | <table>
795 | <tr>
796 | <td class="col-thirty"><strong>Code</strong></td>
797 | <td>TEMPLATE_IN_ATTR_NAME</td>
798 | </tr>
799 | <tr>
800 | <td class="col-thirty"><strong>Format</strong></td>
801 | <td>"Mustache template syntax in attribute name '%1' in tag '%2'."</td>
802 | </tr>
803 | <tr>
804 | <td class="col-thirty"><strong>Korrektur</strong></td>
805 | <td>Mustache-Vorlagensyntax aus dem Attribut entfernen</td>
806 | </tr>
807 | </table>
808 |
809 | Dieser Fehler tritt immer dann auf, wenn das Validierungstool [Mustache-Vorlagensyntax](https://mustache.github.io/mustache.5.html) in einem Attributwert ermittelt.
810 |
811 | ### Attribut enthält nicht korrekt codierte Vorlagensyntax
812 |
813 | <table>
814 | <tr>
815 | <td class="col-thirty"><strong>Code</strong></td>
816 | <td>UNESCAPED_TEMPLATE_IN_ATTR_VALUE</td>
817 | </tr>
818 | <tr>
819 | <td class="col-thirty"><strong>Format</strong></td>
820 | <td>"The attribute '%1' in tag '%2' is set to '%3', which contains unescaped Mustache template syntax."</td>
821 | </tr>
822 | <tr>
823 | <td class="col-thirty"><strong>Korrektur</strong></td>
824 | <td>Mustache-Vorlage richtig codieren</td>
825 | </tr>
826 | </table>
827 |
828 | 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.
829 |
830 | ### Attribut enthält einen Teil einer Mustache-Vorlage
831 |
832 | <table>
833 | <tr>
834 | <td class="col-thirty"><strong>Code</strong></td>
835 | <td>TEMPLATE_PARTIAL_IN_ATTR_VALUE</td>
836 | </tr>
837 | <tr>
838 | <td class="col-thirty"><strong>Format</strong></td>
839 | <td>"The attribute '%1' in tag '%2' is set to '%3', which contains a Mustache template partial."</td>
840 | </tr>
841 | <tr>
842 | <td class="col-thirty"><strong>Korrektur</strong></td>
843 | <td>Teil der Mustache-Vorlage entfernen</td>
844 | </tr>
845 | </table>
846 |
847 | 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.
848 |
849 | ## Einstellungsfehler
850 |
851 | ### Eingestellte Tags
852 |
853 | <table>
854 | <tr>
855 | <td class="col-thirty"><strong>Code</strong></td>
856 | <td>DEPRECATED_TAG</td>
857 | </tr>
858 | <tr>
859 | <td class="col-thirty"><strong>Format</strong></td>
860 | <td>No error message defined as yet (no deprecated tags).</td>
861 | </tr>
862 | <tr>
863 | <td class="col-thirty"><strong>Korrektur</strong></td>
864 | <td>Eingestelltes Tag entfernen</td>
865 | </tr>
866 | </table>
867 |
868 | Diese Warnung wird angezeigt, wenn ein zuvor gültiges AMP-Tag im AMP-Dokument ermittelt wird.
869 | Dabei handelt es sich nur um eine Warnung. AMP-Dokumente mit Warnungen sind weiterhin gültig.
870 | Derzeit gibt es keine veralteten Tags. Die Warnung soll künftig verwendet werden, wenn Tags eingestellt werden.
871 |
872 | ### Eingestelltes Attribut
873 |
874 | <table>
875 | <tr>
876 | <td class="col-thirty"><strong>Code</strong></td>
877 | <td>DEPRECATED_ATTR</td>
878 | </tr>
879 | <tr>
880 | <td class="col-thirty"><strong>Format</strong></td>
881 | <td>"The attribute '%1' in tag '%2' is deprecated - use '%3' instead."</td>
882 | </tr>
883 | <tr>
884 | <td class="col-thirty"><strong>Korrektur</strong></td>
885 | <td>Eingestelltes Attribut am besten entfernen</td>
886 | </tr>
887 | </table>
888 |
889 | Diese Warnung wird angezeigt, wenn ein zuvor gültiges AMP-Attribut im AMP-Dokument ermittelt wird.
890 | Dabei handelt es sich nur um eine Warnung. AMP-Dokumente mit Warnungen sind weiterhin gültig.
891 |
892 | 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.
893 |
```