This is page 20 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: Kesalahan Validasi AMP
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 | Tidak boleh ada kesalahan validasi apa pun dalam dokumen AMP yang valid.
22 | Tujuan dokumen ini adalah untuk membantu Anda memahami
23 | dengan lebih baik dan memperbaiki kesalahan validasi yang dihadapi
24 | ketika [memvalidasi laman AMP](/docs/guides/validate.html).
25 | Untuk ringkasan lengkap kesalahan validasi,
26 | lihat [spesifikasi validator AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
27 |
28 | [TOC]
29 |
30 | ## Kesalahan atribut dan tag HTML AMP
31 |
32 | ### Tag wajib tidak tersedia
33 |
34 | <table>
35 | <tr>
36 | <td class="col-thirty"><strong>Kode</strong></td>
37 | <td>MANDATORY_TAG_MISSING</td>
38 | </tr>
39 | <tr>
40 | <td class="col-thirty"><strong>Format</strong></td>
41 | <td>"The mandatory tag '%1' is missing or incorrect."</td>
42 | </tr>
43 | <tr>
44 | <td class="col-thirty"><strong>Perbaikan</strong></td>
45 | <td>Tambahkan (atau perbaiki) tag HTML wajib.</td>
46 | </tr>
47 | </table>
48 |
49 | Tag berikut harus ada di semua dokumen AMP:
50 |
51 | * <a name="doctype"></a>`<!doctype html>`
52 | * <a name="html"></a>`<html amp> or <html ⚡>`
53 | * <a name="head"></a>`<head>`
54 | * <a name="canonical"></a>`<link rel="canonical" href="$SOME_URL" />`
55 | * <a name="utf"></a>`<meta charset="utf-8">`
56 | * <a name="viewport"></a>`<meta name="viewport" content="...">`
57 | * <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>`
58 | * <a name="ampscript"></a>`<script async src="https://cdn.ampproject.org/v0.js"></script>`
59 | * <a name="body"></a>`body`
60 |
61 | Tag wajib ini termasuk bidang `mandatory: true` di [spek validator AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii);
62 | juga dirujuk dalam [spesifikasi AMP](/docs/reference/spec.html).
63 |
64 | ### Tag yang dibutuhkan oleh tag lain tidak tersedia
65 |
66 | <table>
67 | <tr>
68 | <td class="col-thirty"><strong>Kode</strong></td>
69 | <td>TAG_REQUIRED_BY_MISSING</td>
70 | </tr>
71 | <tr>
72 | <td class="col-thirty"><strong>Format</strong></td>
73 | <td>"The '%1' tag is missing or incorrect, but required by '%2'."</td>
74 | </tr>
75 | <tr>
76 | <td class="col-thirty"><strong>Perbaikan</strong></td>
77 | <td>Tambahkan (atau perbaiki) tag HTML yang dibutuhkan.</td>
78 | </tr>
79 | </table>
80 |
81 | Validator memunculkan kesalahan `TAG_REQUIRED_BY_MISSING`
82 | ketika menemukan komponen yang diperpanjang di dokumen AMP,
83 | tetapi tidak menemukan persamaannya `<script>`.
84 |
85 | [Komponen yang diperpanjang](/docs/reference/extended.html)
86 | harus disertakan dalam dokumen AMP sebagai komponen khusus.
87 | Untuk memperbaiki kesalahan ini, navigasikan ke laman referensi komponen yang diperpanjang,
88 | salin skrip yang dibutuhkan, dan tempel ke dokumen AMP `<head>`.
89 |
90 | ### Tag terlarang
91 |
92 | <table>
93 | <tr>
94 | <td class="col-thirty"><strong>Kode</strong></td>
95 | <td>DISALLOWED_TAG</td>
96 | </tr>
97 | <tr>
98 | <td class="col-thirty"><strong>Format</strong></td>
99 | <td>"The tag '%1' is disallowed."</td>
100 | </tr>
101 | <tr>
102 | <td class="col-thirty"><strong>Perbaikan</strong></td>
103 | <td>Hapus tag terlarang.</td>
104 | </tr>
105 | </table>
106 |
107 | Tag dimasukkan ke daftar putih, sehingga tidak ada daftar definitif semua tag terlarang;
108 | namun, [spesifikasi AMP](/docs/reference/spec.html)
109 | mendefinisikan secara luas kumpulan tag terlarang.
110 |
111 | ### Atribut wajib tidak tersedia
112 |
113 | <table>
114 | <tr>
115 | <td class="col-thirty"><strong>Kode</strong></td>
116 | <td>MANDATORY_ATTR_MISSING</td>
117 | </tr>
118 | <tr>
119 | <td class="col-thirty"><strong>Format</strong></td>
120 | <td>"The mandatory attribute '%1' is missing in tag '%2'."</td>
121 | </tr>
122 | <tr>
123 | <td class="col-thirty"><strong>Perbaikan</strong></td>
124 | <td>Tambahkan atribut wajib ke tag.</td>
125 | </tr>
126 | </table>
127 |
128 | Atribut wajib tag AMP didefinisikan dalam
129 | [spek validator AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
130 | Cukup telusuri tag,
131 | lihat atribut yang tercantum,
132 | dan periksa `mandatory: true`.
133 | Atribut wajib setiap tag AMP juga tercantum
134 | dalam spesifikasi tag.
135 |
136 | ### Nilai atribut tidak valid
137 |
138 | <table>
139 | <tr>
140 | <td class="col-thirty"><strong>Kode</strong></td>
141 | <td>INVALID_ATTR_VALUE</td>
142 | </tr>
143 | <tr>
144 | <td class="col-thirty"><strong>Format</strong></td>
145 | <td>"The attribute '%1' in tag '%2' is set to the invalid value '%3'."</td>
146 | </tr>
147 | <tr>
148 | <td class="col-thirty"><strong>Perbaikan</strong></td>
149 | <td>Perbaiki nilai atribut menjadi nilai yang valid.</td>
150 | </tr>
151 | </table>
152 |
153 | Kesalahan ini menunjukkan bahwa tag HTML memiliki atribut dengan nama yang diizinkan,
154 | tetapi nilainya terlarang.
155 | Misalnya, pemicu umum kesalahan ini adalah nilai yang tidak valid untuk URL.
156 | Semua nilai URL (di atribut `href` dan `src`) harus cocok dengan salah satu
157 | [nilai atribut yang mungkin](http://www.w3schools.com/tags/att_a_href.asp) berikut.
158 |
159 | <strong>PENTING:</strong> Banyak nilai URL di AMP membutuhkan HTTPS.
160 | Jika Anda mendapati kesalahan ini, dan tidak yakin tentang penyebabnya,
161 | periksa spesifikasi tag AMP yang relevan
162 | untuk melihat atribut yang membutuhkan HTTPS.
163 |
164 | ### Atribut terlarang
165 |
166 | <table>
167 | <tr>
168 | <td class="col-thirty"><strong>Kode</strong></td>
169 | <td>DISALLOWED_ATTR</td>
170 | </tr>
171 | <tr>
172 | <td class="col-thirty"><strong>Format</strong></td>
173 | <td>"The attribute '%1' may not appear in tag '%2'."</td>
174 | </tr>
175 | <tr>
176 | <td class="col-thirty"><strong>Perbaikan</strong></td>
177 | <td>Hapus atribut dari tag HTML.</td>
178 | </tr>
179 | </table>
180 |
181 | Atribut dimasukkan ke daftar putih, sehingga tidak ada daftar definitif atribut terlarang.
182 | Untuk memeriksa atribut yang didukung untuk setiap tag tertentu,
183 | telusuri tag HTML, kemudian `attrs`
184 | di [spek validator AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
185 |
186 | Selain daftar putih atribut tertentu untuk setiap tag,
187 | semua tag AMP dapat menggunakan atribut apa pun yang tercantum dalam daftar putih di `$GLOBAL_ATTRS`;
188 | semua atribut dengan awalan `"data-"` juga dimasukkan dalam daftar putih.
189 |
190 | ### Teks wajib tidak tersedia atau salah
191 |
192 | <table>
193 | <tr>
194 | <td class="col-thirty"><strong>Kode</strong></td>
195 | <td>MANDATORY_CDATA_MISSING_OR_INCORRECT</td>
196 | </tr>
197 | <tr>
198 | <td class="col-thirty"><strong>Format</strong></td>
199 | <td>"The mandatory text (CDATA) inside tag '%1' is missing or incorrect."</td>
200 | </tr>
201 | <tr>
202 | <td class="col-thirty"><strong>Perbaikan</strong></td>
203 | <td>Tambahkan atau perbaiki teks wajib dalam tag.</td>
204 | </tr>
205 | </table>
206 |
207 | CDATA adalah data konten antara tag HTML awal dan akhir
208 | serta saat ini dievaluasi dengan daftar putih dan daftar hitam.
209 | Tag dengan CDATA wajib termasuk:
210 |
211 | [sourcecode:YKL]
212 | <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>
213 | [/sourcecode]
214 |
215 | Dan:
216 |
217 | [sourcecode:YKL]
218 | <style amp-custom>
219 | [/sourcecode]
220 |
221 | Pesan mendetail kesalahan ini dapat berupa salah satu dari yang berikut:
222 |
223 | * "Gaya wajib yang diulang (js diaktifkan)"
224 | * "Gaya wajib yang diulang (noscript)"
225 | * "Awalan nama kelas CSS -amp- terlarang"
226 | * "Atribut penting terlarang di CSS!"
227 | * "@charset terlarang di CSS"
228 | * "@import terlarang di CSS"
229 | * "@namespace terlarang di CSS"
230 | * "@support terlarang di CSS"
231 | * "@document terlarang di CSS"
232 | * "@page terlarang di CSS"
233 | * "@viewport terlarang di CSS"
234 |
235 | ### Teks terlarang dalam tag
236 |
237 | <table>
238 | <tr>
239 | <td class="col-thirty"><strong>Kode</strong></td>
240 | <td>CDATA_VIOLATES_BLACKLIST</td>
241 | </tr>
242 | <tr>
243 | <td class="col-thirty"><strong>Format</strong></td>
244 | <td>"The text (CDATA) inside tag '%1' matches '%2', which is disallowed."</td>
245 | </tr>
246 | <tr>
247 | <td class="col-thirty"><strong>Perbaikan</strong></td>
248 | <td>Hapus teks terlarang.</td>
249 | </tr>
250 | </table>
251 |
252 | Data CSS tertentu dimasukkan ke daftar hitam
253 | untuk memvalidasi aturan AMP CSS yang penting.
254 |
255 | Berikut adalah daftar data CSS yang dimasukkan ke daftar hitam
256 | (lihat juga <a href="https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii">`blacklisted_cdata_regex` di spek validator AMP</a>):
257 |
258 | * `"\\.i?-amp-"` ("Awalan nama kelas -amp- CSS")
259 | * `"!important"`
260 | * `"charset"`
261 | * `"@import"`
262 | * `"@namespace"`
263 | * `"@document"`
264 | * `"@page"`
265 | * `"@viewport"`
266 |
267 | ### Properti terlarang dalam atribut di tag
268 |
269 | <table>
270 | <tr>
271 | <td class="col-thirty"><strong>Kode</strong></td>
272 | <td>DISALLOWED_PROPERTY_IN_ATTR_VALUE</td>
273 | </tr>
274 | <tr>
275 | <td class="col-thirty"><strong>Format</strong></td>
276 | <td>"The property '%1' in attribute '%2' in tag '%3' is disallowed."</td>
277 | </tr>
278 | <tr>
279 | <td class="col-thirty"><strong>Perbaikan</strong></td>
280 | <td>Hapus properti terlarang di atribut tertentu.</td>
281 | </tr>
282 | </table>
283 |
284 | Kesalahan ini terjadi ketika nama properti dalam atribut tidak diperbolehkan.
285 | Properti istilah dalam konteks ini berarti data kunci/nilai terstruktur dalam atribut.
286 | Misalnya, di
287 | `<meta name="viewport content="width=device-width;minimum-scale=1">`,
288 | `width` dan `minimum-scale` adalah nama properti.
289 |
290 | Berikut ini yang menyebabkan kesalahan DISALLOWED_PROPERTY_IN_ATTR_VALUE:
291 |
292 | `<meta name="viewport content="width=device-width;invalidfoo=1">`
293 |
294 | Contoh lainnya,
295 | yang berikut akan menyebabkan kesalahan:
296 |
297 | `<meta http-equiv="X-UA-Compatible" content="invalidfoo=edge">`
298 |
299 | Seharusnya: `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
300 |
301 | ### Nilai properti tidak valid
302 |
303 | <table>
304 | <tr>
305 | <td class="col-thirty"><strong>Kode</strong></td>
306 | <td>INVALID_PROPERTY_VALUE_IN_ATTR_VALUE</td>
307 | </tr>
308 | <tr>
309 | <td class="col-thirty"><strong>Format</strong></td>
310 | <td>"The property '%1' in attribute '%2' in tag '%3' is set to '%4', which is invalid."</td>
311 | </tr>
312 | <tr>
313 | <td class="col-thirty"><strong>Perbaikan</strong></td>
314 | <td>Perbaiki nilai properti yang tidak valid.</td>
315 | </tr>
316 | </table>
317 |
318 | Kesalahan ini terjadi jika nilai properti dalam atribut tidak valid.
319 | Properti istilah dalam konteks ini berarti data kunci/nilai terstruktur dalam atribut.
320 | Misalnya, di
321 | `<meta name="viewport content="width=device-width;minimum-scale=1">`,
322 | `device-width` dan `1` adalah nilai properti.
323 |
324 | Berikut ini yang menyebabkan kesalahan INVALID_PROPERTY_VALUE_IN_ATTR_VALUE:
325 |
326 | `<meta name=viewport content="width=device-width;minimum-scale=invalidfoo">`
327 |
328 | Contoh lainnya,
329 | yang berikut akan menyebabkan kesalahan:
330 |
331 | `<meta http-equiv="X-UA-Compatible" content="ie=invalidfoo">`
332 |
333 | Seharusnya: `<meta http-equiv="X-UA-Compatible" content="ie=edge">`
334 |
335 | ### URL tidak tersedia
336 |
337 | <table>
338 | <tr>
339 | <td class="col-thirty"><strong>Kode</strong></td>
340 | <td>MISSING_URL</td>
341 | </tr>
342 | <tr>
343 | <td class="col-thirty"><strong>Format</strong></td>
344 | <td>"Missing URL for attribute '%1' in tag '%2'."</td>
345 | </tr>
346 | <tr>
347 | <td class="col-thirty"><strong>Perbaikan</strong></td>
348 | <td>Tambahkan URL yang valid.</td>
349 | </tr>
350 | </table>
351 |
352 | Kesalahan ini terjadi jika URL yang dibutuhkan atribut tidak tersedia,
353 | misalnya, atribut `href` atau `src` kosong.
354 |
355 | ### URL tidak valid
356 |
357 | <table>
358 | <tr>
359 | <td class="col-thirty"><strong>Kode</strong></td>
360 | <td>INVALID_URL_PROTOCOL</td>
361 | </tr>
362 | <tr>
363 | <td class="col-thirty"><strong>Format</strong></td>
364 | <td>"Malformed URL '%3' for attribute '%1' in tag '%2'"</td>
365 | </tr>
366 | <tr>
367 | <td class="col-thirty"><strong>Perbaikan</strong></td>
368 | <td>Perbaiki URL yang rusak.</td>
369 | </tr>
370 | </table>
371 |
372 | Kesalahan ini terjadi jika atribut memiliki URL,
373 | tetapi URL-nya tidak valid.
374 |
375 | ### Protokol URL tidak valid
376 |
377 | <table>
378 | <tr>
379 | <td class="col-thirty"><strong>Kode</strong></td>
380 | <td>INVALID_URL_PROTOCOL</td>
381 | </tr>
382 | <tr>
383 | <td class="col-thirty"><strong>Format</strong></td>
384 | <td>Invalid URL protocol '%3:' for attribute '%1' in tag '%2'.</td>
385 | </tr>
386 | <tr>
387 | <td class="col-thirty"><strong>Perbaikan</strong></td>
388 | <td>Ubah ke protokol yang valid, misalnya, `http` mungkin perlu diubah ke `https`.</td>
389 | </tr>
390 | </table>
391 |
392 | Kesalahan ini terjadi karena tag yang memiliki `href` atau `src`
393 | harus ditetapkan ke protokol tertentu.
394 | Misalnya, banyak tag yang memerlukan `https`.
395 |
396 | ### Properti wajib tidak tersedia di atribut
397 |
398 | <table>
399 | <tr>
400 | <td class="col-thirty"><strong>Kode</strong></td>
401 | <td>MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE</td>
402 | </tr>
403 | <tr>
404 | <td class="col-thirty"><strong>Format</strong></td>
405 | <td>"The property '%1' is missing from attribute '%2' in tag '%3'."</td>
406 | </tr>
407 | <tr>
408 | <td class="col-thirty"><strong>Perbaikan</strong></td>
409 | <td>Tambahkan properti yang tidak tersedia.</td>
410 | </tr>
411 | </table>
412 |
413 | Saat ini, kesalahan ini terjadi jika properti wajib berikut tidak tersedia:
414 |
415 | * `content="...ie=..."`
416 | * `content="...width=..."`
417 | * `content="...minimum-scale=..."`
418 |
419 | Properti tersebut mengacu pada tag yang diharapkan:
420 |
421 | * `<meta http-equiv="X-UA-Compatible" content="ie=edge">`
422 | * `<meta name=viewport content="width=device-width;minimum-scale=1">`
423 |
424 | ### Atribut saling lepas
425 |
426 | <table>
427 | <tr>
428 | <td class="col-thirty"><strong>Kode</strong></td>
429 | <td>MUTUALLY_EXCLUSIVE_ATTRS</td>
430 | </tr>
431 | <tr>
432 | <td class="col-thirty"><strong>Format</strong></td>
433 | <td>"Mutually exclusive attributes encountered in tag '%1' - pick one of %2."</td>
434 | </tr>
435 | <tr>
436 | <td class="col-thirty"><strong>Perbaikan</strong></td>
437 | <td>Hapus salah satu atribut yang saling lepas.</td>
438 | </tr>
439 | </table>
440 |
441 | Kesalahan ini terjadi jika tag memiliki atribut yang saling lepas.
442 | Misalnya, hanya satu yang diizinkan dari tag berikut:
443 |
444 | * [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` atau `src`
445 | * [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` atau `src`
446 | * [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` atau `srcdoc`
447 | * [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` atau `data-videoid`
448 |
449 | ### Atribut wajib di daftar tidak tersedia
450 |
451 | <table>
452 | <tr>
453 | <td class="col-thirty"><strong>Kode</strong></td>
454 | <td>MANDATORY_ONEOF_ATTR_MISSING</td>
455 | </tr>
456 | <tr>
457 | <td class="col-thirty"><strong>Format</strong></td>
458 | <td>"The tag '%1' is missing a mandatory attribute - pick one of %2." </td>
459 | </tr>
460 | <tr>
461 | <td class="col-thirty"><strong>Perbaikan</strong></td>
462 | <td>Tambahkan atribut wajib yang tidak tersedia dari pilihan atribut yang tersedia.</td>
463 | </tr>
464 | </table>
465 |
466 | Kesalahan ini terjadi jika atribut yang dibutuhkan tag tidak tersedia
467 | di pilihan.
468 | Misalnya, tag berikut memerlukan salah satu atribut dari pilihan yang tersedia:
469 |
470 | * [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` atau `src`
471 | * [amp-instagram](/docs/reference/extended/amp-instagram.htm): `data-shortcode` atau `src`
472 | * [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` atau `srcdoc`
473 | * [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` atau `data-videoid`
474 |
475 | ### Tag induk salah
476 |
477 | <table>
478 | <tr>
479 | <td class="col-thirty"><strong>Kode</strong></td>
480 | <td>WRONG_PARENT_TAG</td>
481 | </tr>
482 | <tr>
483 | <td class="col-thirty"><strong>Format</strong></td>
484 | <td>"The parent tag of tag '%1' is '%2', but it can only be '%3'."</td>
485 | </tr>
486 | <tr>
487 | <td class="col-thirty"><strong>Perbaikan</strong></td>
488 | <td>Buat tag turunan langsung dari tag induk yang dibutuhkan.</td>
489 | </tr>
490 | </table>
491 |
492 | Tag tertentu memerlukan induk langsung (bukan induk jauh).
493 | Berikut daftar tag tertentu yang membutuhkan induk
494 | (tag, induk):
495 |
496 | * `!doctype` membutuhkan tag induk `root`.
497 | * `html` membutuhkan tag induk `!doctype`.
498 | * `head` membutuhkan tag induk `html`.
499 | * `body` membutuhkan tag induk `html`.
500 | * `link` membutuhkan tag induk `head`.
501 | * `meta` membutuhkan tag induk `head`.
502 | * `style amp-custom` membutuhkan tag induk `head`.
503 | * `style` membutuhkan tag induk `boilerplate (noscript)`.
504 | * `noscript` membutuhkan tag induk `head`.
505 | * `script` membutuhkan tag induk `head`.
506 | * `source` membutuhkan tag media (`amp-audio`, `amp-video`, dll.).
507 |
508 | ### Induk tag terlarang
509 |
510 | <table>
511 | <tr>
512 | <td class="col-thirty"><strong>Kode</strong></td>
513 | <td>DISALLOWED_TAG_ANCESTOR</td>
514 | </tr>
515 | <tr>
516 | <td class="col-thirty"><strong>Format</strong></td>
517 | <td>"The tag '%1' may not appear as a descendant of tag '%2'."</td>
518 | </tr>
519 | <tr>
520 | <td class="col-thirty"><strong>Perbaikan</strong></td>
521 | <td>Hapus (atau pindahkan) tag bertingkat terlarang.</td>
522 | </tr>
523 | </table>
524 |
525 | Kesalahan ini terjadi jika tag merupakan turunan dari tag lain
526 | yang tidak memvalidasi.
527 | Saat ini, contohnya hanya tag `template`,
528 | yang tidak dapat bertingkat di tag `template` lain.
529 |
530 | ### Induk tag wajib
531 |
532 | <table>
533 | <tr>
534 | <td class="col-thirty"><strong>Kode</strong></td>
535 | <td>MANDATORY_TAG_ANCESTOR</td>
536 | </tr>
537 | <tr>
538 | <td class="col-thirty"><strong>Format</strong></td>
539 | <td>"The tag '%1' may only appear as a descendant of tag '%2'."</td>
540 | </tr>
541 | <tr>
542 | <td class="col-thirty"><strong>Perbaikan</strong></td>
543 | <td>Hapus tag atau buat turunan tag tertentu.</td>
544 | </tr>
545 | </table>
546 |
547 | Turunan wajib didefinisikan di
548 | [spesifikasi validator AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii)
549 | sebagai `mandatory_ancestor`.
550 |
551 | Kesalahan ini terjadi saat tag berikut
552 | tidak memiliki `mandatory_ancestor` (tag, induk):
553 |
554 | * `img` harus berupa turunan dari `noscript`.
555 | * `video` harus berupa turunan dari `noscript`.
556 | * `audio` harus berupa turunan dari `noscript`.
557 | * `noscript` harus berupa turunan dari `body`.
558 |
559 | ### Induk tag wajib dengan petunjuk
560 |
561 | <table>
562 | <tr>
563 | <td class="col-thirty"><strong>Kode</strong></td>
564 | <td>MANDATORY_TAG_ANCESTOR_WITH_HINT</td>
565 | </tr>
566 | <tr>
567 | <td class="col-thirty"><strong>Format</strong></td>
568 | <td>"The tag '%1' may only appear as a descendant of tag '%2'. Did you mean '%3'?"</td>
569 | </tr>
570 | <tr>
571 | <td class="col-thirty"><strong>Perbaikan</strong></td>
572 | <td>Hapus tag, buat turunan tag tertentu, atau ganti tag dengan tag yang diberi petunjuk.</td>
573 | </tr>
574 | </table>
575 |
576 | Kesalahan terjadi jika salah satu tag berikut ditemukan di dokumen AMP,
577 | dan tidak bertumpuk dengan benar di induk wajibnya:
578 |
579 | * `img` tidak dalam induk `noscript`.
580 | * `video` tidak dalam induk `noscript`.
581 | * `audio` tidak dalam induk `noscript`.
582 | * `noscript` tidak dalam induk `body`.
583 |
584 | ### Tag unik duplikat
585 |
586 | <table>
587 | <tr>
588 | <td class="col-thirty"><strong>Kode</strong></td>
589 | <td>DUPLICATE_UNIQUE_TAG</td>
590 | </tr>
591 | <tr>
592 | <td class="col-thirty"><strong>Format</strong></td>
593 | <td>"The tag '%1' appears more than once in the document."</td>
594 | </tr>
595 | <tr>
596 | <td class="col-thirty"><strong>Perbaikan</strong></td>
597 | <td>Hapus salah satu tag duplikat dari dokumen AMP.</td>
598 | </tr>
599 | </table>
600 |
601 | Kesalahan ini terjadi jika hanya satu kemunculan tag yang diizinkan,
602 | dan ditemukan diplikatnya.
603 |
604 | Daftar lengkap tag unik yang diketahui:
605 |
606 | * `<doctype html>`
607 | * `<html amp>`
608 | * `<head>`
609 | * `<link rel=canonical href=...>`
610 | * `<link rel=amphtml href=...>`
611 | * `<meta charset="utf-8">`
612 | * `<meta viewport>`
613 | * `<style amp-custom>`
614 | * `<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>`
615 | * `<body>`
616 | * `<script src="https://cdn.ampproject.org/v0.js">`
617 |
618 | ## Kesalahan gaya dan tata letak
619 |
620 | Sebelum mendalami kesalahan gaya dan tata letak,
621 | Anda perlu memahami cara kerja
622 | [pemberian gaya](/docs/guides/responsive/style_pages.html) dan
623 | [tata letak](/docs/guides/responsive/control_layout.html) di AMP.
624 | Karena laman AMP adalah laman HTML, pemberian gaya kurang lebih sama seperti pada laman HTML.
625 | Tetapi ada beberapa pembatasan untuk memastikan laman dimuat dengan cepat,
626 | dan validator AMP memberlakukan pembatasan ini.
627 |
628 | Tata letak lebih terkontrol di laman AMP.
629 | Setiap tag yang ditampilkan pada laman
630 | membutuhkan tinggi dan lebar yang telah ditetapkan sebelumnya,
631 | untuk mengurangi perenderan dan pengguliran yang tidak perlu secara signifikan.
632 | Hal ini tidak berarti Anda perlu menyertakan atribut ini secara manual.
633 | Untuk jenis tata letak tertentu,
634 | validator AMP tidak akan menampilkan kesalahan
635 | karena nilai default telah diasumsikan.
636 |
637 | Setiap tag AMP memiliki akhiran `supported_layouts`,
638 | seperti yang didefinisikan dalam
639 | [spesifikasi validator AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
640 | Validator akan menampilkan kesalahan untuk tata letak yang tidak didukung,
641 | dan akan memeriksa aturan validasi tata letak yang telah didefinisikan sebelumnya.
642 |
643 | ### Stylesheet terlalu panjang
644 |
645 | <table>
646 | <tr>
647 | <td class="col-thirty"><strong>Kode</strong></td>
648 | <td>STYLESHEET_TOO_LONG</td>
649 | </tr>
650 | <tr>
651 | <td class="col-thirty"><strong>Format</strong></td>
652 | <td>"The author stylesheet specified in tag 'style' is too long - we saw %1 bytes whereas the limit is %2 bytes."</td>
653 | </tr>
654 | <tr>
655 | <td class="col-thirty"><strong>Perbaikan</strong></td>
656 | <td>Kurangi ukuran stylesheet menjadi di bawah 50.000 byte.</td>
657 | </tr>
658 | </table>
659 |
660 | Kesalahan ini akan ditampilkan
661 | jika validator AMP mengukur konten gaya
662 | dalam `<style amp-custom>` dan ukurannya melebihi batas 50.000 byte.
663 |
664 | ### Kesalahan sintaksis CSS
665 |
666 | <table>
667 | <tr>
668 | <td class="col-thirty"><strong>Kode</strong></td>
669 | <td>CSS_SYNTAX</td>
670 | </tr>
671 | <tr>
672 | <td class="col-thirty"><strong>Format</strong></td>
673 | <td>"CSS syntax error in tag '%1' - %2."</td>
674 | </tr>
675 | <tr>
676 | <td class="col-thirty"><strong>Perbaikan</strong></td>
677 | <td>Perbaiki kesalahan sintaksis CSS.</td>
678 | </tr>
679 | </table>
680 |
681 | Kesalahan ini terjadi jika Anda memiliki kesalahan sintaksis CSS
682 | di tag tertentu.
683 | Jika tidak yakin penyebab kesalahan,
684 | coba jalankan CSS
685 | lewat validator CSS online, misalnya,
686 | [csslint](http://csslint.net/).
687 |
688 | ### Kesalahan sintaksis CSS pada aturan tertentu
689 |
690 | <table>
691 | <tr>
692 | <td class="col-thirty"><strong>Kode</strong></td>
693 | <td>CSS_SYNTAX_INVALID_AT_RULE</td>
694 | </tr>
695 | <tr>
696 | <td class="col-thirty"><strong>Format</strong></td>
697 | <td>"CSS syntax error in tag '%1' - saw invalid at rule '%2'."</td>
698 | </tr>
699 | <tr>
700 | <td class="col-thirty"><strong>Perbaikan</strong></td>
701 | <td>Perbaiki kesalahan sintaksis CSS tertentu.</td>
702 | </tr>
703 | </table>
704 |
705 | Kesalahan ini mengacu pada @-aturan dalam CSS,
706 | untuk setiap AMP yang hanya mengizinkan beberapa aturan.
707 | (lihat juga [spesifikasi AMP ](/docs/reference/spec.html)).
708 | Misalnya, `@import` tidak diizinkan.
709 | Kesalahan validasi secara khusus
710 | memberi tahu Anda aturan yang tidak valid,
711 | memudahkan untuk memperbaiki aturan.
712 |
713 | ### Tata letak tersirat tidak didukung tag AMP
714 |
715 | <table>
716 | <tr>
717 | <td class="col-thirty"><strong>Kode</strong></td>
718 | <td>IMPLIED_LAYOUT_INVALID</td>
719 | </tr>
720 | <tr>
721 | <td class="col-thirty"><strong>Format</strong></td>
722 | <td>"The implied layout '%1' is not supported by tag '%2'."</td>
723 | </tr>
724 | <tr>
725 | <td class="col-thirty"><strong>Perbaikan</strong></td>
726 | <td>Berikan atribut tata letak yang valid kepada tag.</td>
727 | </tr>
728 | </table>
729 |
730 | Kesalahan ini terjadi jika Anda tidak menentukan tata letak untuk tag AMP,
731 | dan tata letak tersirat (berdasarkan lebar, tinggi, dan ukuran) tidak didukung.
732 | Periksa nilai `supported_layout` untuk tag
733 | di [spesifikasi validator AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
734 |
735 | Perilaku tata letak yang sebenarnya ditentukan oleh atribut `layout`.
736 | Untuk mengetahui lebih banyak tentang cara kerja tata letak,
737 | lihat [Cara Mengontrol Tata Letak](/docs/guides/responsive/control_layout.html) dan
738 | [Spesifikasi sistem tata letak HTML AMP](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
739 |
740 | **Catatan:** Jika tata letak tidak ditentukan,
741 | serta nilai `width` dan `height` tidak disertakan,
742 | default tata letak menjadi PENAMPUNG.
743 | Validator menampilkan kesalahan
744 | karena PENAMPUNG tidak didukung di tag AMP mana pun.
745 | Tentukan tata letak selain PENAMPUNG,
746 | atau tambahkan nilai `width` dan/atau `height`, maka kesalahan akan hilang.
747 |
748 | ### Atribut tidak diizinkan oleh tata letak tersirat
749 |
750 | <table>
751 | <tr>
752 | <td class="col-thirty"><strong>Kode</strong></td>
753 | <td>ATTR_DISALLOWED_BY_IMPLIED_LAYOUT</td>
754 | </tr>
755 | <tr>
756 | <td class="col-thirty"><strong>Format</strong></td>
757 | <td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
758 | </tr>
759 | <tr>
760 | <td class="col-thirty"><strong>Perbaikan</strong></td>
761 | <td>Hapus atribut terlarang dari tag,
762 | atau tentukan tata letak lain yang mengizinkannya.</td>
763 | </tr>
764 | </table>
765 |
766 | Kesalahan ini terjadi jika Anda tidak menentukan tata letak untuk tag AMP,
767 | dan tata letak tersirat berisi atribut terlarang.
768 | Atribut terlarang untuk jenis tata letak dijelaskan di
769 | [spesifikasi sistem tata letak HTML AMP](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
770 |
771 | ### Tata letak yang ditentukan tidak didukung oleh tag AMP
772 |
773 | <table>
774 | <tr>
775 | <td class="col-thirty"><strong>Kode</strong></td>
776 | <td>SPECIFIED_LAYOUT_INVALID</td>
777 | </tr>
778 | <tr>
779 | <td class="col-thirty"><strong>Format</strong></td>
780 | <td>"The specified layout '%1' is not supported by tag '%2'."</td>
781 | </tr>
782 | <tr>
783 | <td class="col-thirty"><strong>Perbaikan</strong></td>
784 | <td>Tentukan tata letak yang didukung oleh tag.</td>
785 | </tr>
786 | </table>
787 |
788 | Kesalahan ini terjadi jika tata letak yang ditentukan
789 | untuk tag tidak didukung.
790 | Periksa nilai `supported_layout` untuk tag
791 | di [spesifikasi validator AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
792 |
793 | Perilaku tata letak yang sebenarnya ditentukan oleh atribut `layout`.
794 | Untuk mengetahui lebih banyak tentang cara kerja tata letak,
795 | lihat [Cara Mengontrol Tata Letak](/docs/guides/responsive/control_layout.html) dan
796 | [Spesifikasi sistem tata letak HTML AMP](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
797 |
798 | ### Atribut tidak diizinkan oleh tata letak tertentu
799 |
800 | <table>
801 | <tr>
802 | <td class="col-thirty"><strong>Kode</strong></td>
803 | <td>ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT</td>
804 | </tr>
805 | <tr>
806 | <td class="col-thirty"><strong>Format</strong></td>
807 | <td>"The attribute '%1' in tag '%2' is disallowed by implied layout '%3'."</td>
808 | </tr>
809 | <tr>
810 | <td class="col-thirty"><strong>Perbaikan</strong></td>
811 | <td>Hapus atribut terlarang dari tag,
812 | atau tentukan tata letak lain yang mengizinkannya.</td>
813 | </tr>
814 | </table>
815 |
816 | Kesalahan ini terjadi jika Anda menentukan tata letak untuk tag AMP,
817 | dan tata letak berisi atribut terlarang.
818 | Atribut terlarang untuk jenis tata letak dijelaskan di
819 | [spesifikasi sistem tata letak HTML AMP](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
820 |
821 | ### Nilai yang dibutuhkan tata letak tidak valid
822 |
823 | <table>
824 | <tr>
825 | <td class="col-thirty"><strong>Kode</strong></td>
826 | <td>ATTR_VALUE_REQUIRED_BY_LAYOUT</td>
827 | </tr>
828 | <tr>
829 | <td class="col-thirty"><strong>Format</strong></td>
830 | <td>"Invalid value '%1' for attribute '%2' in tag '%3' - for layout '%4', set the attribute '%2' to value '%5'."</td>
831 | </tr>
832 | <tr>
833 | <td class="col-thirty"><strong>Perbaikan</strong></td>
834 | <td>Tentukan atribut ke nilai tertentu.</td>
835 | </tr>
836 | </table>
837 |
838 | Kesalahan ini terjadi jika nilai atribut tata letak tertentu tidak valid.
839 | Untuk memahami hal yang memicu kesalahan ini,
840 | Anda perlu membiasakan diri dengan
841 | [perilaku tata letak yang berbeda](/docs/guides/responsive/control_layout.html#size-and-position-elements).
842 |
843 | Anggap tata letak ditetapkan ke `fixed-height` dan
844 | Anda menyertakan nilai numerik `height` dan `width`.
845 | Tata letak `fixed-height` bernilai `height`.
846 | Atribut `width` tidak boleh ada, atau setel ke `auto`.
847 | Validator menampilkan ATTR_VALUE_REQUIRED_BY_LAYOUT.
848 |
849 | ### Unit lebar dan tinggi tidak konsisten
850 |
851 | <table>
852 | <tr>
853 | <td class="col-thirty"><strong>Kode</strong></td>
854 | <td>INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT</td>
855 | </tr>
856 | <tr>
857 | <td class="col-thirty"><strong>Format</strong></td>
858 | <td>"Inconsistent units for width and height in tag '%1' - width is specified in '%2' whereas height is specified in '%3'."</td>
859 | </tr>
860 | <tr>
861 | <td class="col-thirty"><strong>Perbaikan</strong></td>
862 | <td>Berikan unit lebar dan tinggi yang konsisten.</td>
863 | </tr>
864 | </table>
865 |
866 | Dengan pengecualian `layout=fixed`,
867 | atribut lebar dan tinggi harus dinyatakan dalam unit yang sama.
868 | Jika tidak, hal ini akan memicu kesalahan.
869 |
870 | Misalnya, `<amp-img src="" layout="responsive" width="42px" height="42rem">`,
871 | menyebabkan pesan kesalahan:
872 |
873 | "Unit lebar dan tinggi pada tag 'amp-img' tidak konsisten- lebar ditentukan dalam 'px' sedangkan tinggi ditentukan dalam 'rem'."
874 |
875 | ## Kesalahan pemberian template
876 |
877 | Laman AMP tidak dapat menyertakan sintaksis pemberian template,
878 | kecuali sintaksis tersebut dalam tag AMP yang
879 | dirancang khusus untuk menyertakan template, misalnya,
880 | [amp-mustache](/docs/reference/extended/amp-mustache.html).
881 |
882 | Diperbolehkan menyertakan template di file sumber,
883 | selama keluaran yang dihasilkan file tersebut tidak berisi template
884 | (lihat juga
885 | [Menggunakan prapemrosesan CSS](/docs/guides/responsive/style_pages.html#use-css-preprocessors)).
886 |
887 | ### Atribut berisi sintaksis template
888 |
889 | <table>
890 | <tr>
891 | <td class="col-thirty"><strong>Kode</strong></td>
892 | <td>TEMPLATE_IN_ATTR_NAME</td>
893 | </tr>
894 | <tr>
895 | <td class="col-thirty"><strong>Format</strong></td>
896 | <td>"Mustache template syntax in attribute name '%1' in tag '%2'."</td>
897 | </tr>
898 | <tr>
899 | <td class="col-thirty"><strong>Perbaikan</strong></td>
900 | <td>Hapus sintaksis template Mustache dari atribut.</td>
901 | </tr>
902 | </table>
903 |
904 | Kesalahan ini terjadi kapan pun validator menemukan
905 | [sintaksis template Mustache](https://mustache.github.io/mustache.5.html)
906 | di nilai atribut.
907 |
908 | ### Atribut berisi sintaksis template yang tidak dapat lolos
909 |
910 | <table>
911 | <tr>
912 | <td class="col-thirty"><strong>Kode</strong></td>
913 | <td>UNESCAPED_TEMPLATE_IN_ATTR_VALUE</td>
914 | </tr>
915 | <tr>
916 | <td class="col-thirty"><strong>Format</strong></td>
917 | <td>"The attribute '%1' in tag '%2' is set to '%3', which contains unescaped Mustache template syntax."</td>
918 | </tr>
919 | <tr>
920 | <td class="col-thirty"><strong>Perbaikan</strong></td>
921 | <td>Loloskan template Mustache.</td>
922 | </tr>
923 | </table>
924 |
925 | Kesalahan ini terjadi kapan pun validator menemukan
926 | [sintaksis template Mustache yang tidak dapat lolos](https://mustache.github.io/mustache.5.html)
927 | di nilai atribut.
928 |
929 | ### Atribut berisi sebagian template
930 |
931 | <table>
932 | <tr>
933 | <td class="col-thirty"><strong>Kode</strong></td>
934 | <td>TEMPLATE_PARTIAL_IN_ATTR_VALUE</td>
935 | </tr>
936 | <tr>
937 | <td class="col-thirty"><strong>Format</strong></td>
938 | <td>"The attribute '%1' in tag '%2' is set to '%3', which contains a Mustache template partial."</td>
939 | </tr>
940 | <tr>
941 | <td class="col-thirty"><strong>Perbaikan</strong></td>
942 | <td>Hapus sebagian mustache.</td>
943 | </tr>
944 | </table>
945 |
946 | Kesalahan ini terjadi kapan saja validator menemukan
947 | [Mustache sebagian](https://mustache.github.io/mustache.5.html)
948 | di nilai atribut.
949 |
950 | ## Kesalahan penghentian
951 |
952 | ### Tag tidak berlaku lagi
953 |
954 | <table>
955 | <tr>
956 | <td class="col-thirty"><strong>Kode</strong></td>
957 | <td>DEPRECATED_TAG</td>
958 | </tr>
959 | <tr>
960 | <td class="col-thirty"><strong>Format</strong></td>
961 | <td>No error message defined as yet (no deprecated tags).</td>
962 | </tr>
963 | <tr>
964 | <td class="col-thirty"><strong>Perbaikan</strong></td>
965 | <td>Hapus tag yang tidak berlaku lagi.</td>
966 | </tr>
967 | </table>
968 |
969 | Peringatan ini terjadi jika tag AMP yang sebelumnya valid ditemukan di dokumen AMP.
970 | Ini hanya peringatan; dokumen AMP dengan peringatan ini masih tetap valid.
971 | Saat ini tidak ada tag yang tidak berlaku; peringatan ini dipesan untuk penghentian mendatang.
972 |
973 | ### Atribut tidak berlaku lagi
974 |
975 | <table>
976 | <tr>
977 | <td class="col-thirty"><strong>Kode</strong></td>
978 | <td>DEPRECATED_ATTR</td>
979 | </tr>
980 | <tr>
981 | <td class="col-thirty"><strong>Format</strong></td>
982 | <td>"The attribute '%1' in tag '%2' is deprecated - use '%3' instead."</td>
983 | </tr>
984 | <tr>
985 | <td class="col-thirty"><strong>Perbaikan</strong></td>
986 | <td>Sebagai praktik yang baik, hapus atribut yang tidak berlaku lagi.</td>
987 | </tr>
988 | </table>
989 |
990 | Peringatan ini terjadi jika atribut AMP yang sebelumnya valid ditemukan di dokumen AMP.
991 | Ini hanya peringatan; dokumen AMP dengan peringatan ini masih tetap valid.
992 |
993 | Identifikasikan atribut setiap tag AMP yang tidak berlaku lagi
994 | dengan menelusuri `deprecation` di
995 | [spesifikasi validator AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
996 | </body>
997 | </html>
998 |
```
--------------------------------------------------------------------------------
/content/docs/reference/[email protected]:
--------------------------------------------------------------------------------
```markdown
1 | ---
2 | $title: Błędy weryfikacji stron AMP
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 | Poprawne dokumenty AMP nie mogą zawierać żadnych błędów weryfikacji.
22 | Ten artykuł pomoże Ci lepiej zrozumieć błędy weryfikacji i skuteczniej usuwać problemy, które możesz napotkać podczas [weryfikacji stron AMP](/docs/guides/validate.html).
23 | Pełny przegląd błędów weryfikacji zawiera [specyfikacja narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
24 |
25 | [TOC]
26 |
27 | ## Błędy tagów HTML i atrybutów na stronach AMP
28 |
29 | ### Brak obowiązkowego tagu
30 |
31 | <table>
32 | <tr>
33 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
42 | <td>Dodaj (lub popraw) obowiązkowy tag HTML.</td>
43 | </tr>
44 | </table>
45 |
46 | Wszystkie dokumenty AMP muszą zawierać poniższe tagi:
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 | Obowiązkowe tagi zawierają pole `mandatory: true` w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii), a [specyfikacja AMP](/docs/reference/spec.html) również odwołuje się do niego.
59 |
60 | ### Brak tagu wymaganego przez inny tag
61 |
62 | <table>
63 | <tr>
64 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
73 | <td>Dodaj (lub popraw) wymagany tag HTML.</td>
74 | </tr>
75 | </table>
76 |
77 | Narzędzie do weryfikacji generuje błąd `TAG_REQUIRED_BY_MISSING` po napotkaniu rozszerzonego komponentu w dokumencie AMP, dla którego nie ma odpowiednika w postaci tagu `<script>`.
78 |
79 | [Rozszerzone komponenty](/docs/reference/extended.html) muszą być zawarte w dokumencie AMP jako niestandardowe elementy.
80 | Aby usunąć takie błędy, przejdź do referencyjnej strony rozszerzonego elementu, skopiuj wymagany skrypt i wklej go do tagu `<head>` dokumentu AMP.
81 |
82 | ### Niedozwolony tag
83 |
84 | <table>
85 | <tr>
86 | <td class="col-thirty"><strong>Kod</strong></td>
87 | <td>DISALLOWED_TAG</td>
88 | </tr>
89 | <tr>
90 | <td class="col-thirty"><strong>Format</strong></td>
91 | <td>"The tag '%1' is disallowed."</td>
92 | </tr>
93 | <tr>
94 | <td class="col-thirty"><strong>Rozwiązanie</strong></td>
95 | <td>Usuń niedozwolony tag.</td>
96 | </tr>
97 | </table>
98 |
99 | Tagi są dozwolonymi elementami, i chociaż nie istnieje zamknięta lista wszystkich niedozwolonych tagów, [specyfikacja AMP](/docs/reference/spec.html) zawiera obszerną definicję takich tagów.
100 |
101 | ### Brak obowiązkowego atrybutu
102 |
103 | <table>
104 | <tr>
105 | <td class="col-thirty"><strong>Kod</strong></td>
106 | <td>MANDATORY_ATTR_MISSING</td>
107 | </tr>
108 | <tr>
109 | <td class="col-thirty"><strong>Format</strong></td>
110 | <td>"The mandatory attribute '%1' is missing in tag '%2'."</td>
111 | </tr>
112 | <tr>
113 | <td class="col-thirty"><strong>Rozwiązanie</strong></td>
114 | <td>Dodaj obowiązkowy atrybut do tagu.</td>
115 | </tr>
116 | </table>
117 |
118 | Obowiązkowe atrybuty tagów AMP są zdefiniowane w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
119 | Wystarczy tylko znaleźć tag, przejrzeć wyświetlone atrybuty i sprawdzić, czy występuje tam wartość `mandatory: true`.
120 | Specyfikacja każdego tagu AMP zawiera również jego obowiązkowe atrybuty.
121 |
122 | ### Nieprawidłowa wartość atrybutu
123 |
124 | <table>
125 | <tr>
126 | <td class="col-thirty"><strong>Kod</strong></td>
127 | <td>INVALID_ATTR_VALUE</td>
128 | </tr>
129 | <tr>
130 | <td class="col-thirty"><strong>Format</strong></td>
131 | <td>"The attribute '%1' in tag '%2' is set to the invalid value '%3'."</td>
132 | </tr>
133 | <tr>
134 | <td class="col-thirty"><strong>Rozwiązanie</strong></td>
135 | <td>Zmień wartość atrybutu na prawidłową.</td>
136 | </tr>
137 | </table>
138 |
139 | Ten błąd oznacza, że tag HTML zawiera atrybut o dozwolonej nazwie, ale o niedozwolonej wartości.
140 | Ten błąd wywołują często nieprawidłowe wartości adresów URL.
141 | Wszystkie wartości adresów URL (w atrybutach `href` i `src`) muszą odpowiadać jednej z takich [możliwych wartości atrybutów](http://www.w3schools.com/tags/att_a_href.asp).
142 |
143 | <strong>WAŻNE:</strong> wiele wartości adresów URL na stronach AMP wymaga HTTPS. Jeśli ten błąd pojawia się z niejasnych dla Ciebie przyczyn, sprawdź w specyfikacji odpowiedniego tagu AMP, czy konkretny atrybut wymaga HTTPS.
144 |
145 | ### Niedozwolony atrybut
146 |
147 | <table>
148 | <tr>
149 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
158 | <td>Usuń atrybut z tagu HTML.</td>
159 | </tr>
160 | </table>
161 |
162 | Atrybuty są dozwolonymi elementami, dlatego nie istnieje zamknięta lista wszystkich niedozwolonych atrybutów.
163 | Aby dowiedzieć się, które atrybuty są obsługiwane w przypadku konkretnego tagu, wyszukaj tag HTML, a następnie atrybut `attrs` w [specyfikacji narzędzia AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
164 |
165 | Oprócz listy dozwolonych atrybutów każdego tagu, wszystkie tagi AMP mogą używać dowolnego atrybutu wymienionego w sekcji `$GLOBAL_ATTRS`. Dozwolone są również wszystkie atrybuty z prefiksem `"data-"`.
166 |
167 | ### Brak obowiązkowego tekstu lub jest on nieprawidłowy
168 |
169 | <table>
170 | <tr>
171 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
180 | <td>Dodaj lub popraw obowiązkowy tekst w tagu.</td>
181 | </tr>
182 | </table>
183 |
184 | CDATA to dane o treści umieszczone między początkowym i końcowym tagiem HTML, które są aktualnie weryfikowane w celu umieszczenia ich na liście elementów dozwolonych albo niedozwolonych.
185 | Przykłady tagów z obowiązkowymi danymi CDATA:
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 | oraz:
192 |
193 | [sourcecode:html]
194 | <style amp-custom>
195 | [/sourcecode]
196 |
197 | Przykłady komunikatów związanych z tym problemem:
198 |
199 | * „Obowiązkowy schemat stylu (kod JavaScript włączony)”
200 | * „Obowiązkowy schemat stylu (brak skryptu)”
201 | * „Niedozwolony prefiks nazwy klasy CSS -amp-”
202 | * „Niedozwolony atrybut !important w kodzie CSS”
203 | * „Niedozwolony atrybut @charset w kodzie CSS”
204 | * „Niedozwolony atrybut @import w kodzie CSS”
205 | * „Niedozwolony atrybut @namespace w kodzie CSS”
206 | * „Niedozwolony atrybut @supports w kodzie CSS”
207 | * „Niedozwolony atrybut @document w kodzie CSS”
208 | * „Niedozwolony atrybut @page w kodzie CSS”
209 | * „Niedozwolony atrybut @viewport w kodzie CSS”
210 |
211 | ### Niedozwolony tekst w tagu
212 |
213 | <table>
214 | <tr>
215 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
224 | <td>Usuń niedozwolony tekst.</td>
225 | </tr>
226 | </table>
227 |
228 | Określone dane CSS są niedozwolone w procesie weryfikacji podstawowych reguł CSS stron AMP.
229 |
230 | Poniżej znajduje się lista niedozwolonych danych CSS (zobacz też atrybut [`blacklisted_cdata_regex` w specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii)):
231 |
232 | * `"\\.i?-amp-"` („prefiks nazwy klasy CSS -amp-”)
233 | * `"!important"`
234 | * `"charset"`
235 | * `"@import"`
236 | * `"@namespace"`
237 | * `"@document"`
238 | * `"@page"`
239 | * `"@viewport"`
240 |
241 | ### Niedozwolona właściwość w atrybucie w tagu
242 |
243 | <table>
244 | <tr>
245 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
254 | <td>Usuń niedozwoloną właściwość w określonym atrybucie.</td>
255 | </tr>
256 | </table>
257 |
258 | Ten błąd występuje wówczas, gdy atrybut zawiera niedozwoloną nazwę właściwości.
259 | W tym kontekście termin „właściwość” oznacza strukturalne dane klucza/wartości w atrybucie.
260 | Na przykład atrybuty `width` i `minimum-scale` w tagu `<meta name="viewport content="width=device-width;minimum-scale=1">` są nazwami właściwości.
261 |
262 | Użycie poniższego tagu spowoduje wygenerowanie błędu DISALLOWED_PROPERTY_IN_ATTR_VALUE:
263 |
264 | `<meta name="viewport content="width=device-width;invalidfoo=1">`
265 |
266 | Innym przykładem tagu, który spowoduje wystąpienie błędu, jest:
267 |
268 | `<meta http-equiv="X-UA-Compatible" content="invalidfoo=edge">`
269 |
270 | Prawidłowa składnia: `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
271 |
272 | ### Nieprawidłowa wartość właściwości
273 |
274 | <table>
275 | <tr>
276 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
285 | <td>Popraw wartość właściwości.</td>
286 | </tr>
287 | </table>
288 |
289 | Ten błąd występuje wówczas, gdy atrybut zawiera nieprawidłową wartość właściwości.
290 | W tym kontekście termin „właściwość” oznacza strukturalne dane klucza/wartości w atrybucie.
291 | Na przykład atrybuty `device-width` i `1` w tagu `<meta name="viewport content="width=device-width;minimum-scale=1">` są wartościami właściwości.
292 |
293 | Użycie poniższego tagu spowoduje wystąpienie błędu INVALID_PROPERTY_VALUE_IN_ATTR_VALUE:
294 |
295 | `<meta name=viewport content="width=device-width;minimum-scale=invalidfoo">`
296 |
297 | Innym przykładem tagu, który spowoduje wystąpienie błędu, jest:
298 |
299 | `<meta http-equiv="X-UA-Compatible" content="ie=invalidfoo">`
300 |
301 | Prawidłowa składnia: `<meta http-equiv="X-UA-Compatible" content="ie=edge">`.
302 |
303 | ### Brak adresu URL
304 |
305 | <table>
306 | <tr>
307 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
316 | <td>Dodaj prawidłowy adres URL.</td>
317 | </tr>
318 | </table>
319 |
320 | Ten błąd występuje w przypadku braku adresu URL w atrybucie, który go wymaga – na przykład wówczas, gdy atrybuty `href` lub `src` są puste.
321 |
322 | ### Nieprawidłowy adres URL
323 |
324 | <table>
325 | <tr>
326 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
335 | <td>Popraw adres URL.</td>
336 | </tr>
337 | </table>
338 |
339 | Ten błąd występuje wówczas, gdy atrybut zawiera adres URL, ale jest on nieprawidłowy.
340 |
341 | ### Nieprawidłowy protokół adresu URL
342 |
343 | <table>
344 | <tr>
345 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
354 | <td>Użyj prawidłowego protokołu. Być może protokół `http` należy zastąpić protokołem `https`.</td>
355 | </tr>
356 | </table>
357 |
358 | Ten błąd występuje w przypadku tagów zawierających atrybuty `href` lub `src`, którym trzeba przyporządkować konkretną wartość (konkretny protokół).
359 | Na przykład wiele tagów wymaga protokołu `https`.
360 |
361 | ### Brak obowiązkowej właściwości w atrybucie
362 |
363 | <table>
364 | <tr>
365 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
374 | <td>Dodaj brakującą właściwość.</td>
375 | </tr>
376 | </table>
377 |
378 | Obecnie ten błąd występuje w przypadku braku poniższych obowiązkowych właściwości:
379 |
380 | * `content="...ie=..."`
381 | * `content="...width=..."`
382 | * `content="...minimum-scale=..."`
383 |
384 | Odnoszą się one do oczekiwanych tagów:
385 |
386 | * `<meta http-equiv="X-UA-Compatible" content="ie=edge">`
387 | * `<meta name=viewport content="width=device-width;minimum-scale=1">`
388 |
389 | ### Wzajemnie wykluczające się atrybuty
390 |
391 | <table>
392 | <tr>
393 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
402 | <td>Usuń jeden ze wzajemnie wykluczających się atrybutów.</td>
403 | </tr>
404 | </table>
405 |
406 | Ten błąd występuje wówczas, gdy tag zawiera oba wzajemnie wykluczające się atrybuty.
407 | Na przykład w poniższych tagach dozwolony jest tylko jeden z wymienionych atrybutów:
408 |
409 | * [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` albo `src`
410 | * [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` albo `src`
411 | * [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` albo `srcdoc`
412 | * [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` albo `data-videoid`
413 |
414 | ### Brak obowiązkowego atrybutu z listy
415 |
416 | <table>
417 | <tr>
418 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
427 | <td>Dodaj brakujący obowiązkowy atrybut z podanej listy atrybutów.</td>
428 | </tr>
429 | </table>
430 |
431 | Ten błąd występuje wówczas, gdy w tagu brakuje jednego wymaganego atrybutu.
432 | Na przykład poniższe tagi wymagają jednego z dwóch atrybutów do wyboru:
433 |
434 | * [amp-twitter](/docs/reference/extended/amp-twitter.html): `data-tweetid` albo `src`
435 | * [amp-instagram](/docs/reference/extended/amp-instagram.html): `data-shortcode` albo `src`
436 | * [amp-iframe](/docs/reference/extended/amp-iframe.html): `src` albo `srcdoc`
437 | * [amp-youtube](/docs/reference/extended/amp-youtube.html): `src` albo `data-videoid`
438 |
439 | ### Niewłaściwy tag nadrzędny
440 |
441 | <table>
442 | <tr>
443 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
452 | <td>Ustaw tag jako bezpośredni element podrzędny wymaganego tagu nadrzędnego.</td>
453 | </tr>
454 | </table>
455 |
456 | Niektóre tagi wymagają bezpośredniego tagu nadrzędnego (w przeciwieństwie do odległego przodka).
457 | Poniżej znajduje się lista wymaganych tagów nadrzędnych dla określonych tagów (w kolejności tag – element nadrzędny):
458 |
459 | * Tag `!doctype` wymaga tagu nadrzędnego `root`.
460 | * Tag `html` wymaga tagu nadrzędnego `!doctype`.
461 | * Tag `head` wymaga tagu nadrzędnego `html`.
462 | * Tag `body` wymaga tagu nadrzędnego `html`.
463 | * Tag `link` wymaga tagu nadrzędnego `head`.
464 | * Tag `meta` wymaga tagu nadrzędnego `head`.
465 | * Tag `style amp-custom` wymaga tagu nadrzędnego `head`.
466 | * Tag `style` wymaga tagu nadrzędnego `boilerplate (noscript)`.
467 | * Tag `noscript` wymaga tagu nadrzędnego `head`.
468 | * Tag `script` wymaga tagu nadrzędnego `head`.
469 | * Tag `source` wymaga tagu multimediów (`amp-audio`, `amp-video` itd.).
470 |
471 | ### Niedozwolony przodek tagu
472 |
473 | <table>
474 | <tr>
475 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
484 | <td>Usuń (albo przenieś) niedozwolony zagnieżdżony tag.</td>
485 | </tr>
486 | </table>
487 |
488 | Ten błąd występuje wówczas, gdy tag jest potomkiem innego tagu, który nie przeszedł weryfikacji.
489 | Obecnie jedynym przykładem jest tag `template`, który nie może być zagnieżdżony pod innym tagiem `template`.
490 |
491 | ### Obowiązkowy przodek tagu
492 |
493 | <table>
494 | <tr>
495 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
504 | <td>Przenieś tag albo ustaw go jako potomka określonego tagu.</td>
505 | </tr>
506 | </table>
507 |
508 | Obowiązkowe tagi potomne są zdefiniowane za pomocą atrybutu `mandatory_ancestor` w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
509 |
510 | Ten błąd występuje w przypadku, gdy w poniższych tagach brakuje atrybutu `mandatory_ancestor` (w kolejności tag – przodek):
511 |
512 | * Tag `img` musi być elementem potomnym tagu `noscript`.
513 | * Tag `video` musi być elementem potomnym tagu `noscript`.
514 | * Tag `audio` musi być elementem potomnym tagu `noscript`.
515 | * Tag `noscript` musi być elementem potomnym tagu `body`.
516 |
517 | ### Obowiązkowy przodek tagu z podpowiedzią
518 |
519 | <table>
520 | <tr>
521 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
530 | <td>Usuń tag, ustaw go jako element potomny określonego tagu lub zastąp go tagiem z podpowiedzią.</td>
531 | </tr>
532 | </table>
533 |
534 | Ten błąd występuje wówczas, gdy dokument AMP zawiera jeden z poniższych tagów, który jest nieprawidłowo zagnieżdżony w jego obowiązkowym tagu nadrzędnym:
535 |
536 | * Tag `img` nie jest zagnieżdżony w tagu nadrzędnym `noscript`.
537 | * Tag `video` nie jest zagnieżdżony w tagu nadrzędnym `noscript`.
538 | * Tag `audio` nie jest zagnieżdżony w tagu nadrzędnym `noscript`.
539 | * Tag `noscript` nie jest zagnieżdżony w tagu nadrzędnym `body`.
540 |
541 | ### Zduplikowany unikalny tag
542 |
543 | <table>
544 | <tr>
545 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
554 | <td>Usuń jeden ze zduplikowanych tagów z dokumentu AMP.</td>
555 | </tr>
556 | </table>
557 |
558 | Ten błąd występuje wówczas, gdy dozwolone jest tylko jedno wystąpienie tagu, a dokument zawiera jego duplikat.
559 |
560 | Znana jest pełna lista unikalnych tagów:
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 | ## Błędy stylu i układu
575 |
576 | Zanim przejdziemy do omawiania błędów stylu i układu, warto wyjaśnić działanie [stylu](/docs/guides/responsive/style_pages.html) i [układu](/docs/guides/responsive/control_layout.html) na stronach AMP. Strony AMP są stronami HTML, dlatego ich styl jest bardzo podobny do stylu każdej strony HTML.
577 | Istnieją jednak pewne ograniczenia, które mają zagwarantować szybkie wczytywanie się stron, a narzędzie do weryfikacji stron AMP wymusza stosowanie tych ograniczeń.
578 |
579 | Na stronach AMP układ podlega ściślejszej kontroli.
580 | Każdy wyświetlany na stronie tag wymaga wstępnie określonej wysokości i szerokości, co znacznie usprawnia renderowanie i przewijanie.
581 | Nie oznacza to, że te atrybuty muszą być wpisywane ręcznie.
582 | Niektóre układy przyjmują domyślne wartości, dlatego narzędzie do weryfikacji stron AMP nie będzie generować błędów w ich przypadku.
583 |
584 | Każdy tag AMP zawiera listę atrybutów `supported_layouts` zdefiniowaną w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
585 | Narzędzie generuje błędy w przypadku nieobsługiwanych układów, a zasady weryfikacji stosuje do układów o wstępnie zdefiniowanych parametrach.
586 |
587 | ### Zbyt długi arkusz stylów
588 |
589 | <table>
590 | <tr>
591 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
600 | <td>Zmniejsz rozmiar arkusza stylów tak, by nie przekraczał 50 000 bajtów.</td>
601 | </tr>
602 | </table>
603 |
604 | Narzędzie do weryfikacji stron AMP generuje ten błąd, gdy zmierzony rozmiar zawartości stylów w tagu `<style amp-custom>` przekracza limit 50 000 bajtów.
605 |
606 | ### Błąd składni CSS
607 |
608 | <table>
609 | <tr>
610 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
619 | <td>Usuń błąd składni CSS.</td>
620 | </tr>
621 | </table>
622 |
623 | Ten błąd występuje wówczas, gdy określony tag zawiera błędy składni CSS.
624 | Jeśli nie wiesz, co powoduje ten błąd, spróbuj przeanalizować składnię CSS za pomocą internetowego narzędzia do weryfikacji składni CSS, takiego jak [csslint](http://csslint.net/).
625 |
626 | ### Błąd składni CSS w określonej regule
627 |
628 | <table>
629 | <tr>
630 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
639 | <td>Usuń podany błąd składni CSS.</td>
640 | </tr>
641 | </table>
642 |
643 | Ten błąd dotyczy reguł ze znakiem @ w składni CSS; standard AMP dopuszcza zaledwie kilka takich reguł w przypadku takiej składni
644 | (zobacz też [specyfikację standardu AMP](/docs/reference/spec.html)).
645 | Na przykład reguła `@import` jest niedozwolona.
646 | Błąd weryfikacji wyraźnie wskazuje nieprawidłową regułę, co ułatwia usuwanie występujących w niej błędów.
647 |
648 | ### Tag AMP nie obsługuje domniemanego układu
649 |
650 | <table>
651 | <tr>
652 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
661 | <td>Podaj prawidłowy atrybut układu dla tagu.</td>
662 | </tr>
663 | </table>
664 |
665 | Ten błąd występuje wówczas, gdy nie określisz układu dla tagu AMP, a domniemany układ (oparty na szerokości, wysokości i rozmiarach) nie jest obsługiwany.
666 | Sprawdź wartości atrybutu `supported_layout` dla tagu w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
667 |
668 | Atrybut `layout` określa faktyczne działanie układu.
669 | Więcej informacji na temat działania układu zawiera artykuł pt. [Kontrolowanie układu](/docs/guides/responsive/control_layout.html) oraz [specyfikacja systemowa układu AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
670 |
671 | **Uwaga:** jeśli nie określisz układu i nie uwzględnisz wartości atrybutu `width` i `height`, układ przyjmie domyślną wartość CONTAINER. Narzędzie do weryfikacji wygeneruje błąd, ponieważ wartość CONTAINER nie jest obsługiwana przez żaden tag AMP.
672 | Aby usunąć błąd, określ układ inny niż CONTAINER lub dodaj wartość `width` i/lub `height`.
673 |
674 | ### Atrybut niedozwolony przez domniemany układ
675 |
676 | <table>
677 | <tr>
678 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
687 | <td>Usuń niedozwolony atrybut z tagu albo określ układ, w którym taki atrybut jest dozwolony.</td>
688 | </tr>
689 | </table>
690 |
691 | Ten błąd występuje wówczas, gdy nie określisz układu dla tagu AMP, a domniemany układ zawiera niedozwolony atrybut.
692 | Niedozwolone atrybuty typów układów są opisane w [specyfikacji systemowej układu AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
693 |
694 | ### Określony układ nie jest obsługiwany przez tag AMP
695 |
696 | <table>
697 | <tr>
698 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
707 | <td>Określ układ, który jest obsługiwany przez tag.</td>
708 | </tr>
709 | </table>
710 |
711 | Ten błąd występuje wówczas, gdy określony układ dla tagu nie jest obsługiwany.
712 | Sprawdź wartości atrybutu `supported_layout` dla tagu w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
713 |
714 | Atrybut `layout` określa faktyczne działanie układu.
715 | Więcej informacji na temat działania układu zawiera artykuł [Kontrolowanie układu](/docs/guides/responsive/control_layout.html) oraz [specyfikacja systemowa układu AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
716 |
717 | ### Atrybut niedozwolony przez określony układ
718 |
719 | <table>
720 | <tr>
721 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
730 | <td>Usuń niedozwolony atrybut z tagu albo określ układ, w którym taki atrybut jest dozwolony.</td>
731 | </tr>
732 | </table>
733 |
734 | Ten błąd występuje wówczas, gdy określisz układ dla tagu AMP, który zawiera niedozwolony atrybut.
735 | Niedozwolone atrybuty typów układów są opisane w [specyfikacji systemowej układu AMP HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-layout.md).
736 |
737 | ### Nieprawidłowa wartość dla atrybutu wymaganego przez układ
738 |
739 | <table>
740 | <tr>
741 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
750 | <td>Ustaw określoną wartość atrybutu.</td>
751 | </tr>
752 | </table>
753 |
754 | Ten błąd występuje wówczas, gdy wartość atrybutu jest nieprawidłowa dla określonego układu.
755 | Aby lepiej zrozumieć, co generuje ten błąd, dowiedz się więcej na temat [różnych schematów działania układów](/docs/guides/responsive/control_layout.html#size-and-position-elements).
756 |
757 | Załóżmy, że układ ma być typu `fixed-height`, a parametry `height` i `width` mają określone wartości liczbowe.
758 | Układ typu `fixed-height` przyjmuje wartość `height`.
759 | Atrybut `width` nie może występować albo musi zostać ustawiony tak, by przyjmował wartość `auto`.
760 | Narzędzie do weryfikacji generuje błąd ATTR_VALUE_REQUIRED_BY_LAYOUT.
761 |
762 | ### Niespójne jednostki szerokości i wysokości
763 |
764 | <table>
765 | <tr>
766 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
775 | <td>Użyj spójnych jednostek szerokości i wysokości.</td>
776 | </tr>
777 | </table>
778 |
779 | Z wyjątkiem atrybutu `layout=fixed` wysokość i szerokość musi być wyrażona w tych samych jednostkach.
780 | Gdy tak nie jest, występuje ten błąd.
781 |
782 | Na przykład użycie tagu `<amp-img src="" layout="responsive" width="42px" height="42rem">` spowoduje wygenerowanie poniższego komunikatu o błędzie:
783 |
784 | Niespójne jednostki szerokości i wysokości w tagu „amp-img” – szerokość jest podana w „px”, a wysokość – w „rem”.
785 |
786 | ## Błędy związane z użyciem szablonów
787 |
788 | Strony AMP nie mogą zawierać składni określającej szablony, chyba że taka składnia jest umieszczona w tagu AMP, który z definicji ma zawierać szablony, na przykład [amp-mustache](/docs/reference/extended/amp-mustache.html).
789 |
790 | Pliki źródłowe mogą zawierać szablony pod warunkiem, że dane wyjściowe wygenerowane z tych plików nie będą zawierać szablonów (zobacz też [Korzystanie z narzędzi do wstępnej obróbki kodu CSS](/docs/guides/responsive/style_pages.html#use-css-preprocessors)).
791 |
792 | ### Atrybut zawiera składnię szablonu
793 |
794 | <table>
795 | <tr>
796 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
805 | <td>Usuń składnię szablonu otoczoną nawiasami klamrowymi z atrybutu.</td>
806 | </tr>
807 | </table>
808 |
809 | Ten błąd występuje za każdym razem, gdy narzędzie do weryfikacji napotka na [składnię szablonu otoczoną nawiasami klamrowymi](https://mustache.github.io/mustache.5.html) w wartości atrybutu.
810 |
811 | ### Atrybut zawiera składnię szablonu bez kodów zmiany znaczenia
812 |
813 | <table>
814 | <tr>
815 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
824 | <td>Użyj kodów zmiany znaczenia składni szablonu otoczonej nawiasami klamrowymi.</td>
825 | </tr>
826 | </table>
827 |
828 | Ten błąd występuje za każdym razem, gdy narzędzie do weryfikacji napotka na [składnię szablonu otoczoną nawiasami klamrowymi bez kodów zmiany znaczenia](https://mustache.github.io/mustache.5.html) w wartości atrybutu.
829 |
830 | ### Atrybut zawiera część szablonu
831 |
832 | <table>
833 | <tr>
834 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
843 | <td>Usuń część szablonu otoczonego nawiasami klamrowymi.</td>
844 | </tr>
845 | </table>
846 |
847 | Ten błąd występuje za każdym razem, gdy narzędzie do weryfikacji napotka na [część szablonu otoczonego nawiasami klamrowymi](https://mustache.github.io/mustache.5.html) w wartości atrybutu.
848 |
849 | ## Błędy związane z nieużywanymi elementami
850 |
851 | ### Nieużywany tag
852 |
853 | <table>
854 | <tr>
855 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
864 | <td>Usuń nieużywany tag.</td>
865 | </tr>
866 | </table>
867 |
868 | To ostrzeżenie występuje wówczas, gdy dokument AMP zawiera tag AMP, który wcześniej był poprawny.
869 | Ten komunikat jest tylko ostrzeżeniem, które nie wpływa na poprawność dokumentów AMP.
870 | Aktualnie nie istnieje lista nieużywanych tagów. To ostrzeżenie jest przeznaczone dla elementów, które w przyszłości przestaną być używane.
871 |
872 | ### Nieużywany atrybut
873 |
874 | <table>
875 | <tr>
876 | <td class="col-thirty"><strong>Kod</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>Rozwiązanie</strong></td>
885 | <td>Zgodnie z właściwą praktyką usuń nieużywany atrybut.</td>
886 | </tr>
887 | </table>
888 |
889 | To ostrzeżenie wyświetla się wówczas, gdy dokument AMP zawiera atrybut AMP, który wcześniej był poprawny.
890 | Ten komunikat jest tylko ostrzeżeniem, które nie wpływa na poprawność dokumentów AMP.
891 |
892 | Aby znaleźć nieużywane atrybuty każdego tagu AMP, wyszukaj ciąg `deprecation` w [specyfikacji narzędzia do weryfikacji stron AMP](https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii).
893 | </body>
894 | </html>
895 |
```