array(
'a',
'amp-ad',
'amp-carousel',
'amp-embed',
'amp-img',
'amp-lightbox',
'amp-list',
'amp-video',
'b',
'br',
'button',
'col',
'colgroup',
'div',
'em',
'fieldset',
'form',
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'i',
'input',
'label',
'li',
'mark',
'nav',
'ol',
'option',
'p',
'path',
'section',
'select',
'span',
'strike',
'strong',
'sub',
'sup',
'svg',
'table',
'tbody',
'td',
'template',
'th',
'time',
'title',
'tr',
'u',
'ul',
'use',
),
'amp-nested-menu-allowed-descendants' => array(
'a',
'amp-accordion',
'amp-img',
'amp-list',
'b',
'br',
'button',
'circle',
'col',
'colgroup',
'div',
'ellipse',
'em',
'fieldset',
'form',
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'i',
'input',
'label',
'li',
'line',
'mark',
'nav',
'ol',
'option',
'p',
'path',
'polygon',
'polyline',
'rect',
'section',
'select',
'span',
'strike',
'strong',
'sub',
'sup',
'svg',
'table',
'tbody',
'td',
'template',
'th',
'time',
'title',
'tr',
'u',
'ul',
'use',
),
'amp-story-bookend-allowed-descendants' => array(
'script',
),
'amp-story-cta-layer-allowed-descendants' => array(
'a',
'abbr',
'address',
'amp-call-tracking',
'amp-date-countdown',
'amp-date-display',
'amp-fit-text',
'amp-font',
'amp-img',
'amp-timeago',
'b',
'bdi',
'bdo',
'blockquote',
'br',
'button',
'caption',
'cite',
'circle',
'clippath',
'code',
'data',
'defs',
'del',
'desc',
'dfn',
'div',
'ellipse',
'em',
'fecolormatrix',
'fecomposite',
'feblend',
'feflood',
'fegaussianblur',
'femerge',
'femergenode',
'feoffset',
'figcaption',
'figure',
'filter',
'footer',
'g',
'glyph',
'glyphref',
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'header',
'hgroup',
'hkern',
'hr',
'i',
'image',
'ins',
'kbd',
'li',
'line',
'lineargradient',
'main',
'marker',
'mark',
'mask',
'metadata',
'nav',
'noscript',
'ol',
'p',
'path',
'pattern',
'pre',
'polygon',
'polyline',
'radialgradient',
'q',
'rect',
'rp',
'rt',
'rtc',
'ruby',
's',
'samp',
'section',
'small',
'solidcolor',
'span',
'stop',
'strong',
'sub',
'sup',
'svg',
'switch',
'symbol',
'text',
'textpath',
'tref',
'tspan',
'title',
'time',
'tr',
'u',
'ul',
'use',
'var',
'view',
'vkern',
'wbr',
),
'amp-story-grid-layer-allowed-descendants' => array(
'a',
'abbr',
'address',
'amp-analytics',
'amp-audio',
'amp-date-countdown',
'amp-date-display',
'amp-experiment',
'amp-fit-text',
'amp-font',
'amp-gist',
'amp-img',
'amp-install-serviceworker',
'amp-list',
'amp-live-list',
'amp-pixel',
'amp-render',
'amp-state',
'amp-story-360',
'amp-story-auto-analytics',
'amp-story-captions',
'amp-story-interactive-binary-poll',
'amp-story-interactive-img-poll',
'amp-story-interactive-img-quiz',
'amp-story-interactive-poll',
'amp-story-interactive-quiz',
'amp-story-interactive-results',
'amp-story-panning-media',
'amp-timeago',
'amp-twitter',
'amp-video',
'article',
'aside',
'b',
'bdi',
'bdo',
'blockquote',
'br',
'caption',
'circle',
'cite',
'clippath',
'code',
'col',
'colgroup',
'data',
'dd',
'defs',
'del',
'desc',
'dfn',
'div',
'dl',
'dt',
'ellipse',
'em',
'fecolormatrix',
'fecomposite',
'feblend',
'feflood',
'fegaussianblur',
'femerge',
'femergenode',
'feoffset',
'figcaption',
'figure',
'filter',
'footer',
'g',
'glyph',
'glyphref',
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'header',
'hgroup',
'hkern',
'hr',
'i',
'image',
'ins',
'kbd',
'li',
'line',
'lineargradient',
'main',
'mark',
'marker',
'mask',
'metadata',
'nav',
'noscript',
'ol',
'p',
'path',
'pattern',
'polygon',
'polyline',
'pre',
'q',
'radialgradient',
'rect',
'rp',
'rt',
'rtc',
'ruby',
's',
'samp',
'script',
'section',
'small',
'solidcolor',
'source',
'span',
'stop',
'strong',
'sub',
'sup',
'svg',
'switch',
'symbol',
'table',
'tbody',
'td',
'template',
'text',
'textpath',
'tfoot',
'th',
'thead',
'time',
'title',
'tr',
'track',
'tref',
'tspan',
'u',
'ul',
'use',
'var',
'view',
'vkern',
'wbr',
),
'amp-story-page-attachment-allowed-descendants' => array(
'a',
'abbr',
'address',
'amp-3d-gltf',
'amp-3q-player',
'amp-accordion',
'amp-audio',
'amp-beopinion',
'amp-bodymovin-animation',
'amp-brid-player',
'amp-brightcove',
'amp-byside-content',
'amp-call-tracking',
'amp-carousel',
'amp-dailymotion',
'amp-date-countdown',
'amp-date-display',
'amp-embedly-card',
'amp-facebook',
'amp-facebook-comments',
'amp-facebook-like',
'amp-facebook-page',
'amp-fit-text',
'amp-fx-collection',
'amp-fx-flying-carpet',
'amp-gfycat',
'amp-gist',
'amp-google-document-embed',
'amp-hulu',
'amp-ima-video',
'amp-image-slider',
'amp-img',
'amp-imgur',
'amp-instagram',
'amp-izlesene',
'amp-jwplayer',
'amp-kaltura-player',
'amp-list',
'amp-live-list',
'amp-mathml',
'amp-megaphone',
'amp-mowplayer',
'amp-nexxtv-player',
'amp-o2-player',
'amp-ooyala-player',
'amp-pan-zoom',
'amp-pinterest',
'amp-playbuzz',
'amp-powr-player',
'amp-reach-player',
'amp-reddit',
'amp-render',
'amp-riddle-quiz',
'amp-soundcloud',
'amp-selector',
'amp-springboard-player',
'amp-timeago',
'amp-twitter',
'amp-video',
'amp-video-iframe',
'amp-vimeo',
'amp-vine',
'amp-viqeo-player',
'amp-vk',
'amp-wistia-player',
'amp-yotpo',
'amp-youtube',
'article',
'aside',
'b',
'bdi',
'bdo',
'blockquote',
'br',
'button',
'caption',
'circle',
'cite',
'clippath',
'code',
'col',
'colgroup',
'data',
'datalist',
'dd',
'defs',
'del',
'desc',
'dfn',
'div',
'dl',
'dt',
'ellipse',
'em',
'fecolormatrix',
'fecomposite',
'feblend',
'feflood',
'fegaussianblur',
'femerge',
'femergenode',
'feoffset',
'figcaption',
'fieldset',
'figure',
'filter',
'form',
'footer',
'g',
'glyph',
'glyphref',
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'header',
'hgroup',
'hkern',
'hr',
'i',
'image',
'input',
'ins',
'kbd',
'label',
'legend',
'li',
'line',
'lineargradient',
'main',
'mark',
'marker',
'mask',
'metadata',
'meter',
'nav',
'ol',
'optgroup',
'option',
'output',
'p',
'path',
'pattern',
'polygon',
'polyline',
'pre',
'progress',
'q',
'radialgradient',
'rect',
'rp',
'rt',
'rtc',
'ruby',
's',
'samp',
'section',
'select',
'small',
'solidcolor',
'source',
'span',
'stop',
'strong',
'sub',
'sup',
'svg',
'switch',
'symbol',
'table',
'tbody',
'td',
'template',
'text',
'textarea',
'textpath',
'tfoot',
'th',
'thead',
'time',
'title',
'tr',
'track',
'tref',
'tspan',
'u',
'ul',
'use',
'var',
'view',
'vkern',
'wbr',
),
'amp-story-player-allowed-descendants' => array(
'a',
'span',
'img',
),
'amp-story-social-share-allowed-descendants' => array(
'script',
),
);
private static $allowed_tags = array(
'a' => array(
array(
'attr_spec_list' => array(
'attributiondestination' => array(),
'attributionexpiry' => array(),
'attributionreportto' => array(),
'attributionsourceeventid' => array(),
'attributionsourceid' => array(),
'border' => array(),
'conversiondestination' => array(),
'data-amp-bind-href' => array(),
'download' => array(),
'href' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_empty' => true,
'protocol' => array(
'ftp',
'geo',
'http',
'https',
'mailto',
'maps',
'bip',
'bbmi',
'chrome',
'itms-services',
'facetime',
'fb-me',
'fb-messenger',
'feed',
'intent',
'line',
'skype',
'sms',
'snapchat',
'tel',
'tg',
'threema',
'twitter',
'viber',
'webcal',
'web+mastodon',
'wh',
'whatsapp',
),
),
),
'hreflang' => array(),
'impressiondata' => array(),
'impressionexpiry' => array(),
'media' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'referrerpolicy' => array(),
'rel' => array(
'disallowed_value_regex' => '(^|\\s)(components|dns-prefetch|import|manifest|preconnect|prefetch|preload|prerender|serviceworker|stylesheet|subresource)(\\s|$)',
),
'reportingorigin' => array(),
'role' => array(),
'show-tooltip' => array(
'value' => array(
'auto',
'true',
),
),
'tabindex' => array(),
'target' => array(
'value' => array(
'_blank',
'_self',
'_top',
),
),
'type' => array(
'value_casei' => array(
'text/html',
'application/rss+xml',
),
),
),
'tag_spec' => array(
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#links',
),
),
),
'abbr' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'acronym' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'address' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'amp-3d-gltf' => array(
array(
'attr_spec_list' => array(
'alpha' => array(
'value' => array(
'false',
'true',
),
),
'antialiasing' => array(
'value' => array(
'false',
'true',
),
),
'autorotate' => array(
'value' => array(
'false',
'true',
),
),
'clearcolor' => array(),
'enablezoom' => array(
'value' => array(
'false',
'true',
),
),
'maxpixelratio' => array(
'value_regex' => '[+-]?(\\d*\\.)?\\d+',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'src' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-3d-gltf',
),
),
),
),
'amp-3q-player' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(
'value' => array(
'',
),
),
'data-id' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
7,
4,
),
),
'requires_extension' => array(
'amp-3q-player',
),
),
),
),
'amp-accordion' => array(
array(
'attr_spec_list' => array(
'animate' => array(
'value' => array(
'',
),
),
'disable-session-states' => array(
'value' => array(
'',
),
),
'expand-single-section' => array(
'value' => array(
'',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'section',
),
),
'requires_extension' => array(
'amp-accordion',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-accordion/',
),
),
),
'amp-action-macro' => array(
array(
'attr_spec_list' => array(
'arguments' => array(),
'execute' => array(
'mandatory' => true,
),
'id' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
'mandatory' => true,
),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-action-macro',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-action-macro/',
),
),
),
'amp-ad' => array(
array(
'attr_spec_list' => array(
'alt' => array(),
'always-serve-npa' => array(),
'block-rtc' => array(),
'json' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'rtc-config' => array(),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'sticky' => array(
'value' => array(
'',
'bottom',
'bottom-right',
'left',
'right',
'top',
),
),
'template' => array(),
'type' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
8,
9,
1,
4,
),
),
'disallowed_ancestor' => array(
'amp-app-banner',
),
'requires_extension' => array(
'amp-ad',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-ad/',
),
),
array(
'attr_spec_list' => array(
'data-url' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'https',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'template' => array(),
'type' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'custom',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
8,
9,
1,
4,
),
),
'disallowed_ancestor' => array(
'amp-app-banner',
),
'requires_extension' => array(
'amp-ad',
),
'spec_name' => 'amp-ad with type=custom',
'spec_url' => 'https://github.com/ampproject/amphtml/blob/main/ads/vendors/custom.md',
),
),
array(
'attr_spec_list' => array(
'alt' => array(),
'always-serve-npa' => array(),
'block-rtc' => array(),
'data-multi-size' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'',
),
),
'json' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'rtc-config' => array(),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'type' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
8,
9,
1,
4,
),
),
'disallowed_ancestor' => array(
'amp-app-banner',
'amp-carousel',
'amp-fx-flying-carpet',
'amp-lightbox',
'amp-sticky-ad',
),
'requires_extension' => array(
'amp-ad',
),
'spec_name' => 'amp-ad with data-multi-size attribute',
'spec_url' => 'https://amp.dev/documentation/components/amp-ad/',
),
),
array(
'attr_spec_list' => array(
'alt' => array(),
'data-enable-refresh' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'',
),
),
'json' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'type' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
8,
9,
1,
4,
),
),
'disallowed_ancestor' => array(
'amp-app-banner',
'amp-fx-flying-carpet',
'amp-lightbox',
),
'requires_extension' => array(
'amp-ad',
),
'spec_name' => 'amp-ad with data-enable-refresh attribute',
'spec_url' => 'https://amp.dev/documentation/components/amp-ad/',
),
),
),
'amp-ad-custom' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
8,
9,
1,
4,
),
),
'disallowed_ancestor' => array(
'amp-app-banner',
),
'requires_extension' => array(
'amp-ad-custom',
),
),
),
),
'amp-addthis' => array(
array(
'attr_spec_list' => array(
'data-product-code' => array(),
'data-share-media' => array(
'value_url' => array(
'allow_empty' => true,
'protocol' => array(
'http',
'https',
),
),
),
'data-share-url' => array(
'value_url' => array(
'allow_empty' => true,
'protocol' => array(
'http',
'https',
),
),
),
'data-widget-id' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_oneof' => array(
'data-product-code',
'data-widget-id',
),
'requires_extension' => array(
'amp-addthis',
),
),
),
),
'amp-analytics' => array(
array(
'attr_spec_list' => array(
'config' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_empty' => true,
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'type' => array(),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-analytics',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-analytics/',
),
),
),
'amp-anim' => array(
array(
'attr_spec_list' => array(
'alt' => array(),
'attribution' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'object-fit' => array(),
'object-position' => array(),
'src' => array(
'alternative_names' => array(
'srcset',
),
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'data',
'http',
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-anim',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-anim/',
),
),
),
'amp-animation' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'trigger' => array(
'value' => array(
'visibility',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'script',
),
'mandatory_num_child_tags' => 1,
),
'requires_extension' => array(
'amp-animation',
),
),
),
),
'amp-apester-media' => array(
array(
'attr_spec_list' => array(
'data-apester-channel-token' => array(
'value_regex' => '[0-9a-zA-Z]+',
),
'data-apester-media-id' => array(
'value_regex' => '[0-9a-zA-Z]+',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_oneof' => array(
'data-apester-channel-token',
'data-apester-media-id',
),
'requires_extension' => array(
'amp-apester-media',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-apester-media/',
),
),
),
'amp-app-banner' => array(
array(
'attr_spec_list' => array(
'id' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'mandatory_parent' => 'body',
'requires_extension' => array(
'amp-app-banner',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-app-banner/',
'unique' => true,
),
),
),
'amp-audio' => array(
array(
'attr_spec_list' => array(
'album' => array(),
'artist' => array(),
'artwork' => array(),
'autoplay' => array(
'value' => array(
'',
),
),
'controls' => array(),
'controlslist' => array(),
'data-amp-bind-album' => array(),
'data-amp-bind-artist' => array(),
'data-amp-bind-artwork' => array(),
'data-amp-bind-controlslist' => array(),
'data-amp-bind-loop' => array(),
'data-amp-bind-src' => array(),
'data-amp-bind-title' => array(),
'loop' => array(
'value' => array(
'',
),
),
'media' => array(),
'muted' => array(
'value' => array(
'',
),
),
'noloading' => array(
'value' => array(
'',
),
),
'preload' => array(
'value_casei' => array(
'auto',
'metadata',
'none',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'defines_default_height' => true,
'defines_default_width' => true,
'supported_layouts' => array(
2,
3,
1,
),
),
'disallowed_ancestor' => array(
'amp-story',
),
'requires_extension' => array(
'amp-audio',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-audio/',
),
),
array(
'attr_spec_list' => array(
'album' => array(),
'artist' => array(),
'artwork' => array(),
'autoplay' => array(
'mandatory' => true,
'value' => array(
'',
),
),
'controls' => array(),
'controlslist' => array(),
'data-amp-bind-album' => array(),
'data-amp-bind-artist' => array(),
'data-amp-bind-artwork' => array(),
'data-amp-bind-controlslist' => array(),
'data-amp-bind-loop' => array(),
'data-amp-bind-src' => array(),
'data-amp-bind-title' => array(),
'loop' => array(
'value' => array(
'',
),
),
'media' => array(),
'muted' => array(
'value' => array(
'',
),
),
'noloading' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'mandatory_ancestor' => 'amp-story',
'requires_extension' => array(
'amp-audio',
),
'spec_name' => 'amp-story >> amp-audio',
'spec_url' => 'https://amp.dev/documentation/components/amp-audio/',
),
),
),
'amp-auto-ads' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'type' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'disallowed_ancestor' => array(
'amp-auto-ads',
),
'requires_extension' => array(
'amp-auto-ads',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-auto-ads/',
),
),
),
'amp-autocomplete' => array(
array(
'attr_spec_list' => array(
'data-amp-bind-src' => array(),
'filter' => array(
'mandatory' => true,
'value_casei' => array(
'custom',
'fuzzy',
'none',
'prefix',
'substring',
'token-prefix',
),
),
'filter-expr' => array(
'requires_extension' => array(
'amp-bind',
),
),
'filter-value' => array(),
'highlight-user-entry' => array(),
'inline' => array(),
'items' => array(),
'max-entries' => array(),
'max-items' => array(),
'media' => array(),
'min-characters' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'prefetch' => array(),
'query' => array(),
'src' => array(
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'submit-on-enter' => array(),
'suggest-first' => array(),
'template' => array(),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
),
),
'requires_extension' => array(
'amp-autocomplete',
),
'spec_name' => 'amp-autocomplete',
'spec_url' => 'https://amp.dev/documentation/components/amp-autocomplete/',
),
),
),
'amp-base-carousel' => array(
array(
'attr_spec_list' => array(
'advance-count' => array(
'value_regex' => '([^,]+\\s+(-?\\d+),\\s*)*(-?\\d+)',
),
'auto-advance' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
'auto-advance-count' => array(
'value_regex' => '([^,]+\\s+(-?\\d+),\\s*)*(-?\\d+)',
),
'auto-advance-interval' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'auto-advance-loops' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'controls' => array(
'value_regex' => '([^,]+\\s+(always|auto|never),\\s*)*(always|auto|never)',
),
'data-amp-bind-advance-count' => array(),
'data-amp-bind-auto-advance' => array(),
'data-amp-bind-auto-advance-count' => array(),
'data-amp-bind-auto-advance-interval' => array(),
'data-amp-bind-auto-advance-loops' => array(),
'data-amp-bind-horizontal' => array(),
'data-amp-bind-loop' => array(),
'data-amp-bind-mixed-length' => array(),
'data-amp-bind-orientation' => array(),
'data-amp-bind-slide' => array(),
'data-amp-bind-snap' => array(),
'data-amp-bind-snap-align' => array(),
'data-amp-bind-snap-by' => array(),
'data-amp-bind-visible-count' => array(),
'horizontal' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
'loop' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false|^$)',
),
'media' => array(),
'mixed-length' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
'noloading' => array(
'value' => array(
'',
),
),
'orientation' => array(
'value_regex' => '([^,]+\\s+(horizontal|vertical),\\s*)*(horizontal|vertical)',
),
'slide' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'snap' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
'snap-align' => array(
'value_regex' => '([^,]+\\s+(start|center),\\s*)*(start|center)',
),
'snap-by' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'visible-count' => array(
'value_regex' => '([^,]+\\s+(\\d+(\\.\\d+)?),\\s*)*(\\d+(\\.\\d+)?)',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-base-carousel',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-base-carousel/',
),
),
array(
'attr_spec_list' => array(
'advance-count' => array(
'value_regex' => '([^,]+\\s+(-?\\d+),\\s*)*(-?\\d+)',
),
'auto-advance' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
'auto-advance-count' => array(
'value_regex' => '([^,]+\\s+(-?\\d+),\\s*)*(-?\\d+)',
),
'auto-advance-interval' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'auto-advance-loops' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'controls' => array(
'value_regex' => '([^,]+\\s+(always|auto|never),\\s*)*(always|auto|never)',
),
'data-amp-bind-advance-count' => array(),
'data-amp-bind-auto-advance' => array(),
'data-amp-bind-auto-advance-count' => array(),
'data-amp-bind-auto-advance-interval' => array(),
'data-amp-bind-auto-advance-loops' => array(),
'data-amp-bind-horizontal' => array(),
'data-amp-bind-loop' => array(),
'data-amp-bind-mixed-length' => array(),
'data-amp-bind-orientation' => array(),
'data-amp-bind-slide' => array(),
'data-amp-bind-snap' => array(),
'data-amp-bind-snap-align' => array(),
'data-amp-bind-snap-by' => array(),
'data-amp-bind-visible-count' => array(),
'horizontal' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
'lightbox' => array(
'mandatory' => true,
),
'loop' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false|^$)',
),
'media' => array(),
'mixed-length' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
'noloading' => array(
'value' => array(
'',
),
),
'orientation' => array(
'value_regex' => '([^,]+\\s+(horizontal|vertical),\\s*)*(horizontal|vertical)',
),
'slide' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'snap' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
'snap-align' => array(
'value_regex' => '([^,]+\\s+(start|center),\\s*)*(start|center)',
),
'snap-by' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'visible-count' => array(
'value_regex' => '([^,]+\\s+(\\d+(\\.\\d+)?),\\s*)*(\\d+(\\.\\d+)?)',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'reference_points' => array(
'AMP-BASE-CAROUSEL lightbox [child]' => array(
'mandatory' => false,
'unique' => false,
),
'AMP-BASE-CAROUSEL lightbox [lightbox-exclude]' => array(
'mandatory' => false,
'unique' => false,
),
),
'requires_extension' => array(
'amp-base-carousel',
'amp-lightbox-gallery',
),
'spec_name' => 'AMP-BASE-CAROUSEL [lightbox]',
'spec_url' => 'https://amp.dev/documentation/components/amp-base-carousel/',
),
),
),
'amp-beopinion' => array(
array(
'attr_spec_list' => array(
'data-account' => array(
'mandatory' => true,
'value_regex_casei' => '[0-9a-f]{24}',
),
'data-content' => array(
'value_regex_casei' => '[0-9a-f]{24}',
),
'data-my-content' => array(
'value' => array(
'0',
'1',
),
),
'data-name' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-beopinion',
),
),
),
),
'amp-bind-macro' => array(
array(
'attr_spec_list' => array(
'arguments' => array(),
'expression' => array(
'mandatory' => true,
),
'id' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
'mandatory' => true,
),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-bind',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-bind/',
),
),
),
'amp-bodymovin-animation' => array(
array(
'attr_spec_list' => array(
'loop' => array(
'value_regex_casei' => '[1-9][0-9]*|false|true',
),
'noautoplay' => array(
'value' => array(
'',
),
),
'renderer' => array(
'value_casei' => array(
'canvas',
'html',
'svg',
),
),
'src' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-bodymovin-animation',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-bodymovin-animation/',
),
),
),
'amp-brid-player' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(),
'data-carousel' => array(
'value_regex' => '[0-9]+',
),
'data-dynamic' => array(
'value_regex' => '[a-z]+',
),
'data-outstream' => array(
'value_regex' => '[0-9]+',
),
'data-partner' => array(
'mandatory' => true,
'value_regex' => '[0-9]+',
),
'data-player' => array(
'mandatory' => true,
'value_regex' => '[0-9]+',
),
'data-playlist' => array(
'value_regex' => '.+',
),
'data-video' => array(
'value_regex' => '[0-9]+',
),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_oneof' => array(
'data-carousel',
'data-outstream',
'data-playlist',
'data-video',
),
'requires_extension' => array(
'amp-brid-player',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-brid-player/',
),
),
),
'amp-brightcove' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(
'value' => array(
'',
),
),
'data-account' => array(
'mandatory' => true,
),
'data-amp-bind-data-account' => array(),
'data-amp-bind-data-embed' => array(),
'data-amp-bind-data-player' => array(),
'data-amp-bind-data-player-id' => array(),
'data-amp-bind-data-playlist-id' => array(),
'data-amp-bind-data-referrer' => array(),
'data-amp-bind-data-video-id' => array(),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-brightcove',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-brightcove/',
),
),
),
'amp-byside-content' => array(
array(
'attr_spec_list' => array(
'data-label' => array(
'mandatory' => true,
),
'data-webcare-id' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-byside-content',
),
),
),
),
'amp-call-tracking' => array(
array(
'attr_spec_list' => array(
'config' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
6,
2,
3,
7,
4,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'a',
),
'mandatory_num_child_tags' => 1,
),
'requires_extension' => array(
'amp-call-tracking',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-call-tracking/',
),
),
),
'amp-carousel' => array(
array(
'attr_spec_list' => array(
'arrows' => array(
'value' => array(
'',
),
),
'autoplay' => array(
'value_regex' => '(|[0-9]+)',
),
'controls' => array(),
'data-amp-bind-slide' => array(),
'delay' => array(
'value_regex' => '[0-9]+',
),
'dots' => array(
'value' => array(
'',
),
),
'loop' => array(
'value' => array(
'',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'slide' => array(
'value_regex' => '[0-9]+',
),
'type' => array(
'value' => array(
'carousel',
'slides',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-carousel',
),
'spec_name' => 'AMP-CAROUSEL',
'spec_url' => 'https://amp.dev/documentation/components/amp-carousel/',
),
),
array(
'attr_spec_list' => array(
'arrows' => array(
'value' => array(
'',
),
),
'autoplay' => array(
'value_regex' => '(|[0-9]+)',
),
'controls' => array(),
'data-amp-bind-slide' => array(),
'delay' => array(
'value_regex' => '[0-9]+',
),
'dots' => array(
'value' => array(
'',
),
),
'lightbox' => array(
'mandatory' => true,
),
'loop' => array(
'value' => array(
'',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'slide' => array(
'value_regex' => '[0-9]+',
),
'type' => array(
'value' => array(
'carousel',
'slides',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'reference_points' => array(
'AMP-CAROUSEL lightbox [child]' => array(
'mandatory' => false,
'unique' => false,
),
'AMP-CAROUSEL lightbox [lightbox-exclude]' => array(
'mandatory' => false,
'unique' => false,
),
),
'requires_extension' => array(
'amp-carousel',
'amp-lightbox-gallery',
),
'spec_name' => 'AMP-CAROUSEL lightbox',
'spec_url' => 'https://amp.dev/documentation/components/amp-carousel/',
),
),
),
'amp-connatix-player' => array(
array(
'attr_spec_list' => array(
'data-player-id' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-connatix-player',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-connatix-player/',
),
),
),
'amp-consent' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-consent',
),
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'type' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-consent',
),
'spec_name' => 'amp-consent [type]',
'unique' => true,
),
),
),
'amp-dailymotion' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(),
'data-endscreen-enable' => array(
'value' => array(
'false',
'true',
),
),
'data-info' => array(
'value' => array(
'false',
'true',
),
),
'data-mute' => array(
'value' => array(
'false',
'true',
),
),
'data-sharing-enable' => array(
'value' => array(
'false',
'true',
),
),
'data-start' => array(
'value_regex' => '[0-9]+',
),
'data-ui-highlight' => array(
'value_regex_casei' => '([0-9a-f]{3}){1,2}',
),
'data-ui-logo' => array(
'value' => array(
'false',
'true',
),
),
'data-videoid' => array(
'mandatory' => true,
'value_regex_casei' => '[a-z0-9]+',
),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-dailymotion',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-dailymotion/',
),
),
),
'amp-date-countdown' => array(
array(
'attr_spec_list' => array(
'biggest-unit' => array(
'value_casei' => array(
'days',
'hours',
'minutes',
'seconds',
),
),
'count-up' => array(
'value' => array(
'',
),
),
'data-count-up' => array(
'value' => array(
'',
),
),
'end-date' => array(
'value_regex' => '\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d(:[0-5]\\d(\\.\\d+)?)?(Z|[+-][0-1][0-9]:[0-5][0-9])',
),
'locale' => array(
'value_casei' => array(
'de',
'en',
'es',
'fr',
'id',
'it',
'ja',
'ko',
'nl',
'pt',
'ru',
'th',
'tr',
'vi',
'zh-cn',
'zh-tw',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'offset-seconds' => array(
'value_regex' => '-?\\d+',
),
'template' => array(),
'timeleft-ms' => array(
'value_regex' => '\\d+',
),
'timestamp-ms' => array(
'value_regex' => '\\d{13}',
),
'timestamp-seconds' => array(
'value_regex' => '\\d{10}',
),
'when-ended' => array(
'value_casei' => array(
'continue',
'stop',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_oneof' => array(
'end-date',
'timeleft-ms',
'timestamp-ms',
'timestamp-seconds',
),
'requires_extension' => array(
'amp-date-countdown',
),
),
),
),
'amp-date-display' => array(
array(
'attr_spec_list' => array(
'datetime' => array(
'value_regex' => 'now|(\\d{4}-[01]\\d-[0-3]\\d(T[0-2]\\d:[0-5]\\d(:[0-6]\\d(\\.\\d\\d?\\d?)?)?(Z|[+-][0-1]\\d:[0-5]\\d)?)?)',
),
'display-in' => array(
'value_casei' => array(
'utc',
),
),
'locale' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'offset-seconds' => array(
'value_regex' => '-?\\d+',
),
'template' => array(),
'timestamp-ms' => array(
'value_regex' => '\\d+',
),
'timestamp-seconds' => array(
'value_regex' => '\\d+',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_oneof' => array(
'datetime',
'timestamp-ms',
'timestamp-seconds',
),
'requires_extension' => array(
'amp-date-display',
),
),
),
),
'amp-date-picker' => array(
array(
'attr_spec_list' => array(
'allow-blocked-end-date' => array(
'value' => array(
'',
),
),
'allow-blocked-ranges' => array(
'value' => array(
'',
),
),
'blocked' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-src' => array(),
'date' => array(),
'day-size' => array(
'value_regex' => '[0-9]+',
),
'first-day-of-week' => array(
'value_regex' => '[0-6]',
),
'format' => array(),
'fullscreen' => array(
'value' => array(
'',
),
),
'hide-keyboard-shortcuts-panel' => array(
'value' => array(
'',
),
),
'highlighted' => array(),
'input-selector' => array(),
'locale' => array(),
'max' => array(),
'media' => array(),
'min' => array(),
'mode' => array(
'value_casei' => array(
'static',
),
),
'month-format' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'number-of-months' => array(
'value_regex' => '[0-9]+',
),
'open-after-clear' => array(
'value' => array(
'',
),
),
'open-after-select' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'type' => array(
'value_casei' => array(
'single',
),
),
'week-day-format' => array(),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-date-picker',
),
'spec_name' => 'amp-date-picker[type=single][mode=static]',
),
),
array(
'attr_spec_list' => array(
'allow-blocked-end-date' => array(
'value' => array(
'',
),
),
'allow-blocked-ranges' => array(
'value' => array(
'',
),
),
'blocked' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-src' => array(),
'date' => array(),
'day-size' => array(
'value_regex' => '[0-9]+',
),
'first-day-of-week' => array(
'value_regex' => '[0-6]',
),
'format' => array(),
'hide-keyboard-shortcuts-panel' => array(
'value' => array(
'',
),
),
'highlighted' => array(),
'input-selector' => array(),
'locale' => array(),
'max' => array(),
'media' => array(),
'min' => array(),
'mode' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'overlay',
),
),
'month-format' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'number-of-months' => array(
'value_regex' => '[0-9]+',
),
'open-after-clear' => array(
'value' => array(
'',
),
),
'open-after-select' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'touch-keyboard-editable' => array(
'value' => array(
'',
),
),
'type' => array(
'value_casei' => array(
'single',
),
),
'week-day-format' => array(),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
1,
),
),
'requires_extension' => array(
'amp-date-picker',
),
'spec_name' => 'amp-date-picker[type=single][mode=overlay]',
),
),
array(
'attr_spec_list' => array(
'allow-blocked-end-date' => array(
'value' => array(
'',
),
),
'allow-blocked-ranges' => array(
'value' => array(
'',
),
),
'blocked' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-src' => array(),
'day-size' => array(
'value_regex' => '[0-9]+',
),
'end-date' => array(),
'end-input-selector' => array(),
'first-day-of-week' => array(
'value_regex' => '[0-6]',
),
'format' => array(),
'fullscreen' => array(
'value' => array(
'',
),
),
'hide-keyboard-shortcuts-panel' => array(
'value' => array(
'',
),
),
'highlighted' => array(),
'locale' => array(),
'max' => array(),
'maximum-nights' => array(
'value_regex' => '[0-9]+',
),
'media' => array(),
'min' => array(),
'minimum-nights' => array(
'value_regex' => '[0-9]+',
),
'mode' => array(
'value_casei' => array(
'static',
),
),
'month-format' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'number-of-months' => array(
'value_regex' => '[0-9]+',
),
'open-after-clear' => array(
'value' => array(
'',
),
),
'open-after-select' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'start-date' => array(),
'start-input-selector' => array(),
'type' => array(
'mandatory' => true,
'value_casei' => array(
'range',
),
),
'week-day-format' => array(),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-date-picker',
),
'spec_name' => 'amp-date-picker[type=range][mode=static]',
),
),
array(
'attr_spec_list' => array(
'allow-blocked-end-date' => array(
'value' => array(
'',
),
),
'allow-blocked-ranges' => array(
'value' => array(
'',
),
),
'blocked' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-src' => array(),
'day-size' => array(
'value_regex' => '[0-9]+',
),
'end-date' => array(),
'end-input-selector' => array(),
'first-day-of-week' => array(
'value_regex' => '[0-6]',
),
'format' => array(),
'hide-keyboard-shortcuts-panel' => array(
'value' => array(
'',
),
),
'highlighted' => array(),
'locale' => array(),
'max' => array(),
'maximum-nights' => array(
'value_regex' => '[0-9]+',
),
'media' => array(),
'min' => array(),
'minimum-nights' => array(
'value_regex' => '[0-9]+',
),
'mode' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'overlay',
),
),
'month-format' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'number-of-months' => array(
'value_regex' => '[0-9]+',
),
'open-after-clear' => array(
'value' => array(
'',
),
),
'open-after-select' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'start-date' => array(),
'start-input-selector' => array(),
'touch-keyboard-editable' => array(
'value' => array(
'',
),
),
'type' => array(
'mandatory' => true,
'value_casei' => array(
'range',
),
),
'week-day-format' => array(),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
1,
),
),
'requires_extension' => array(
'amp-date-picker',
),
'spec_name' => 'amp-date-picker[type=range][mode=overlay]',
),
),
),
'amp-delight-player' => array(
array(
'attr_spec_list' => array(
'data-content-id' => array(
'mandatory' => true,
),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-delight-player',
),
),
),
),
'amp-embed' => array(
array(
'attr_spec_list' => array(
'alt' => array(),
'always-serve-npa' => array(),
'block-rtc' => array(),
'json' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'rtc-config' => array(),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'type' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
8,
9,
1,
4,
),
),
'disallowed_ancestor' => array(
'amp-app-banner',
),
'requires_extension' => array(
'amp-ad',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-ad/',
),
),
array(
'attr_spec_list' => array(
'alt' => array(),
'always-serve-npa' => array(),
'block-rtc' => array(),
'data-multi-size' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'',
),
),
'json' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'rtc-config' => array(),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'type' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
8,
9,
1,
4,
),
),
'disallowed_ancestor' => array(
'amp-app-banner',
'amp-carousel',
'amp-fx-flying-carpet',
'amp-lightbox',
'amp-sticky-ad',
),
'requires_extension' => array(
'amp-ad',
),
'spec_name' => 'amp-embed with data-multi-size attribute',
'spec_url' => 'https://amp.dev/documentation/components/amp-ad/',
),
),
),
'amp-embedly-card' => array(
array(
'attr_spec_list' => array(
'data-url' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
4,
),
),
'requires_extension' => array(
'amp-embedly-card',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-embedly-card/',
),
),
),
'amp-embedly-key' => array(
array(
'attr_spec_list' => array(
'value' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-embedly-card',
),
'unique' => true,
),
),
),
'amp-experiment' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'requires_extension' => array(
'amp-experiment',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-experiment/',
'unique' => true,
),
),
),
'amp-facebook' => array(
array(
'attr_spec_list' => array(
'data-href' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-facebook',
),
),
),
),
'amp-facebook-comments' => array(
array(
'attr_spec_list' => array(
'data-href' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'bento' => false,
'requires_extension' => array(
'amp-facebook-comments',
),
),
),
array(
'attr_spec_list' => array(
'data-href' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'bento' => true,
'requires_extension' => array(
'amp-facebook',
),
'spec_name' => 'amp-facebook-comments 1.0',
),
),
),
'amp-facebook-like' => array(
array(
'attr_spec_list' => array(
'data-href' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'http',
'https',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'bento' => false,
'requires_extension' => array(
'amp-facebook-like',
),
),
),
array(
'attr_spec_list' => array(
'data-href' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'http',
'https',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'bento' => true,
'requires_extension' => array(
'amp-facebook',
),
'spec_name' => 'amp-facebook-like 1.0',
),
),
),
'amp-facebook-page' => array(
array(
'attr_spec_list' => array(
'data-href' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'http',
'https',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'bento' => false,
'requires_extension' => array(
'amp-facebook-page',
),
),
),
array(
'attr_spec_list' => array(
'data-href' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'http',
'https',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'bento' => true,
'requires_extension' => array(
'amp-facebook',
),
'spec_name' => 'amp-facebook-page 1.0',
),
),
),
'amp-fit-text' => array(
array(
'attr_spec_list' => array(
'max-font-size' => array(),
'media' => array(),
'min-font-size' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-fit-text',
),
),
),
),
'amp-font' => array(
array(
'attr_spec_list' => array(
'font-family' => array(
'mandatory' => true,
),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'on-error-add-class' => array(),
'on-error-remove-class' => array(),
'on-load-add-class' => array(),
'on-load-remove-class' => array(),
'timeout' => array(
'value_regex' => '[0-9]+',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-font',
),
),
),
),
'amp-fx-flying-carpet' => array(
array(
'attr_spec_list' => array(
'height' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-fx-flying-carpet',
),
),
),
),
'amp-geo' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'child_tags' => array(
'first_child_tag_name_oneof' => array(
'script',
),
),
'requires_extension' => array(
'amp-geo',
),
'unique' => true,
),
),
),
'amp-gfycat' => array(
array(
'attr_spec_list' => array(
'data-gfyid' => array(
'mandatory' => true,
),
'media' => array(),
'noautoplay' => array(
'value' => array(
'',
),
),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-gfycat',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-gfycat/',
),
),
),
'amp-gist' => array(
array(
'attr_spec_list' => array(
'data-gistid' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
3,
),
),
'requires_extension' => array(
'amp-gist',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-gist/',
),
),
),
'amp-google-document-embed' => array(
array(
'attr_spec_list' => array(
'data-amp-bind-src' => array(),
'data-amp-bind-title' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-google-document-embed',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-google-document-embed/',
),
),
),
'amp-hulu' => array(
array(
'attr_spec_list' => array(
'data-eid' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-hulu',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-hulu/',
),
),
),
'amp-iframe' => array(
array(
'attr_spec_list' => array(
'allow' => array(),
'allowfullscreen' => array(
'value' => array(
'',
),
),
'allowpaymentrequest' => array(
'value' => array(
'',
),
),
'allowtransparency' => array(
'value' => array(
'',
),
),
'data-amp-bind-src' => array(),
'frameborder' => array(
'value' => array(
'0',
'1',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'referrerpolicy' => array(),
'resizable' => array(
'value' => array(
'',
),
),
'sandbox' => array(),
'scrolling' => array(
'value' => array(
'auto',
'no',
'yes',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'data',
'https',
),
),
),
'srcdoc' => array(),
'tabindex' => array(
'value_regex' => '-?\\d+',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'mandatory_oneof' => array(
'src',
'srcdoc',
),
'requires_extension' => array(
'amp-iframe',
),
),
),
),
'amp-iframely' => array(
array(
'attr_spec_list' => array(
'data-border' => array(
'value_regex' => '(\\d+)',
),
'data-domain' => array(
'value_regex' => '^((?:[^\\.\\/]+\\.)?iframe\\.ly|if\\-cdn\\.com|iframely\\.net|oembed\\.vice\\.com|iframe\\.nbcnews\\.com)$',
),
'data-id' => array(),
'data-img' => array(
'value' => array(
'',
),
),
'data-key' => array(),
'data-url' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'resizable' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
9,
),
),
'mandatory_oneof' => array(
'data-id',
'data-url',
),
'requires_extension' => array(
'amp-iframely',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-iframely',
),
),
),
'amp-ima-video' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(
'value' => array(
'',
),
),
'data-src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'data-tag' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'rotate-to-fullscreen' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
1,
4,
),
),
'requires_extension' => array(
'amp-ima-video',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-ima-video/',
),
),
),
'amp-image-lightbox' => array(
array(
'attr_spec_list' => array(
'controls' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-image-lightbox',
),
),
),
),
'amp-image-slider' => array(
array(
'attr_spec_list' => array(
'disable-hint-reappear' => array(),
'initial-slider-position' => array(
'value_regex' => '0(\\.[0-9]+)?|1(\\.0+)?',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'step-size' => array(
'value_regex' => '0(\\.[0-9]+)?|1(\\.0+)?',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
2,
9,
1,
4,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'amp-img',
'div',
),
'mandatory_min_num_child_tags' => 2,
),
'requires_extension' => array(
'amp-image-slider',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-image-slider/',
),
),
),
'amp-img' => array(
array(
'attr_spec_list' => array(
'alt' => array(),
'attribution' => array(),
'crossorigin' => array(),
'data-amp-bind-alt' => array(),
'data-amp-bind-attribution' => array(),
'data-amp-bind-src' => array(),
'data-amp-bind-srcset' => array(),
'lightbox' => array(),
'lightbox-thumbnail-id' => array(
'value_regex_casei' => '^[a-z][a-z\\d_-]*',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'object-fit' => array(),
'object-position' => array(),
'placeholder' => array(),
'referrerpolicy' => array(),
'src' => array(
'alternative_names' => array(
'srcset',
),
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'data',
'http',
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'spec_url' => 'https://amp.dev/documentation/components/amp-img/',
),
),
),
'amp-imgur' => array(
array(
'attr_spec_list' => array(
'data-imgur-id' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-imgur',
),
),
),
),
'amp-inline-gallery' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
),
),
'requires_extension' => array(
'amp-inline-gallery',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-inline-gallery/',
),
),
),
'amp-inline-gallery-pagination' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'mandatory_ancestor' => 'amp-inline-gallery',
'requires_extension' => array(
'amp-inline-gallery',
),
'spec_name' => 'amp-inline-gallery-pagination',
'spec_url' => 'https://amp.dev/documentation/components/amp-inline-gallery/',
),
),
array(
'attr_spec_list' => array(
'inset' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'mandatory_ancestor' => 'amp-inline-gallery',
'requires_extension' => array(
'amp-inline-gallery',
),
'spec_name' => 'amp-inline-gallery-pagination [inset]',
'spec_url' => 'https://amp.dev/documentation/components/amp-inline-gallery/',
),
),
),
'amp-inline-gallery-thumbnails' => array(
array(
'attr_spec_list' => array(
'aspect-ratio' => array(
'disallowed_value_regex' => '^0+(\\.0+)?$',
'value_regex' => '\\d+(\\.\\d+)?',
),
'aspect-ratio-height' => array(
'disallowed_value_regex' => '^0+(\\.0+)?$',
'value_regex' => '\\d+(\\.\\d+)?',
),
'aspect-ratio-width' => array(
'disallowed_value_regex' => '^0+(\\.0+)?$',
'value_regex' => '\\d+(\\.\\d+)?',
),
'loop' => array(
'value' => array(
'true',
'false',
'',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'mandatory_ancestor' => 'amp-inline-gallery',
'requires_extension' => array(
'amp-inline-gallery',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-inline-gallery/',
),
),
),
'amp-instagram' => array(
array(
'attr_spec_list' => array(
'alt' => array(),
'data-shortcode' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-instagram',
),
),
),
),
'amp-install-serviceworker' => array(
array(
'attr_spec_list' => array(
'data-iframe-src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-install-serviceworker',
),
),
),
),
'amp-izlesene' => array(
array(
'attr_spec_list' => array(
'data-videoid' => array(
'mandatory' => true,
'value_regex' => '[0-9]+',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-izlesene',
),
),
),
),
'amp-jwplayer' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(
'value' => array(
'',
),
),
'data-media-id' => array(
'value_regex_casei' => '[0-9a-z]{8}|outstream',
),
'data-player-id' => array(
'mandatory' => true,
'value_regex_casei' => '[0-9a-z]{8}',
),
'data-playlist-id' => array(
'value_regex_casei' => '[0-9a-z]{8}',
),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_oneof' => array(
'data-media-id',
'data-playlist-id',
),
'requires_extension' => array(
'amp-jwplayer',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-jwplayer/',
),
),
),
'amp-kaltura-player' => array(
array(
'attr_spec_list' => array(
'data-partner' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-kaltura-player',
),
),
),
),
'amp-layout' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
5,
),
),
'spec_url' => 'https://amp.dev/documentation/components/amp-layout/',
),
),
),
'amp-lightbox' => array(
array(
'attr_spec_list' => array(
'animate-in' => array(
'value_casei' => array(
'fade-in',
'fly-in-bottom',
'fly-in-top',
),
),
'animation' => array(
'value_casei' => array(
'fade-in',
'fly-in-bottom',
'fly-in-top',
),
),
'controls' => array(),
'data-amp-bind-open' => array(),
'from' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'scrollable' => array(),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-lightbox',
),
),
),
),
'amp-link-rewriter' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'child_tags' => array(
'first_child_tag_name_oneof' => array(
'script',
),
'mandatory_num_child_tags' => 1,
),
'requires_extension' => array(
'amp-link-rewriter',
),
'unique' => true,
),
),
),
'amp-list' => array(
array(
'attr_spec_list' => array(
'auto-resize' => array(
'value' => array(
'',
),
),
'binding' => array(
'value' => array(
'always',
'no',
'refresh',
),
),
'credentials' => array(),
'data-amp-bind-is-layout-container' => array(),
'data-amp-bind-src' => array(),
'diffable' => array(
'value' => array(
'',
),
),
'items' => array(),
'load-more' => array(
'value' => array(
'auto',
'manual',
),
),
'load-more-bookmark' => array(),
'max-items' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'reset-on-refresh' => array(
'value' => array(
'',
'always',
'fetch',
),
),
'single-item' => array(),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
'amp-state',
'amp-script',
),
),
),
'template' => array(),
'xssi-prefix' => array(),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_anyof' => array(
'data-amp-bind-src',
'src',
),
'requires_extension' => array(
'amp-list',
),
),
),
),
'amp-list-load-more' => array(
array(
'attr_spec_list' => array(
'load-more-button' => array(
'value' => array(
'',
),
),
'load-more-end' => array(
'value' => array(
'',
),
),
'load-more-failed' => array(
'value' => array(
'',
),
),
'load-more-loading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'mandatory_oneof' => array(
'load-more-button',
'load-more-end',
'load-more-failed',
'load-more-loading',
),
'mandatory_parent' => 'amp-list',
'requires_extension' => array(
'amp-list',
),
),
),
),
'amp-live-list' => array(
array(
'attr_spec_list' => array(
'data-max-items-per-page' => array(
'mandatory' => true,
'value_regex' => '\\d+',
),
'data-poll-interval' => array(
'value_regex' => '\\d{5,}',
),
'disabled' => array(
'value' => array(
'',
),
),
'id' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
'mandatory' => true,
),
'sort' => array(
'value' => array(
'ascending',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
3,
),
),
'reference_points' => array(
'AMP-LIVE-LIST [items]' => array(
'mandatory' => true,
'unique' => true,
),
'AMP-LIVE-LIST [pagination]' => array(
'mandatory' => false,
'unique' => true,
),
'AMP-LIVE-LIST [update]' => array(
'mandatory' => true,
'unique' => true,
),
),
'requires_extension' => array(
'amp-live-list',
),
),
),
),
'amp-mathml' => array(
array(
'attr_spec_list' => array(
'data-formula' => array(
'mandatory' => true,
),
'inline' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
),
),
'requires_extension' => array(
'amp-mathml',
),
),
),
),
'amp-mega-menu' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
3,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'nav',
'amp-list',
),
'mandatory_num_child_tags' => 1,
),
'descendant_tag_list' => 'amp-mega-menu-allowed-descendants',
'reference_points' => array(
'AMP-MEGA-MENU > AMP-LIST' => array(
'mandatory' => false,
'unique' => false,
),
'AMP-MEGA-MENU > NAV' => array(
'mandatory' => false,
'unique' => false,
),
),
'requires_extension' => array(
'amp-mega-menu',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-mega-menu/',
),
),
),
'amp-megaphone' => array(
array(
'attr_spec_list' => array(
'data-episodes' => array(
'value_regex' => '[0-9]+',
),
'data-light' => array(
'value' => array(
'',
),
),
'data-playlist' => array(
'dispatch_key' => 1,
'mandatory' => true,
'value_regex' => '[A-Za-z0-9]+',
),
'data-sharing' => array(
'value' => array(
'',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
2,
3,
),
),
'requires_extension' => array(
'amp-megaphone',
),
'spec_name' => 'amp-megaphone [data-playlist]',
),
),
array(
'attr_spec_list' => array(
'data-episode' => array(
'dispatch_key' => 1,
'mandatory' => true,
'value_regex' => '[A-Za-z0-9]+',
),
'data-light' => array(
'value' => array(
'',
),
),
'data-sharing' => array(
'value' => array(
'',
),
),
'data-start' => array(
'value_regex' => '\\d+(\\.\\d+)?',
),
'data-tile' => array(
'value' => array(
'',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
2,
3,
),
),
'requires_extension' => array(
'amp-megaphone',
),
'spec_name' => 'amp-megaphone [data-episode]',
),
),
),
'amp-minute-media-player' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(),
'data-content-id' => array(),
'data-content-type' => array(
'mandatory' => true,
'value' => array(
'curated',
'semantic',
'specific',
),
),
'data-minimum-date-factor' => array(),
'data-scanned-element' => array(),
'data-scanned-element-type' => array(
'value' => array(
'className',
'id',
'tag',
),
),
'data-scoped-keywords' => array(),
'data-tags' => array(),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-minute-media-player',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-minute-media-player/',
),
),
),
'amp-mowplayer' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(),
'data-mediaid' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-mowplayer',
),
),
),
),
'amp-nested-menu' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'side' => array(
'value' => array(
'left',
'right',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
),
),
'descendant_tag_list' => 'amp-nested-menu-allowed-descendants',
'mandatory_ancestor' => 'amp-sidebar',
'requires_extension' => array(
'amp-sidebar',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-nested-menu/',
),
),
),
'amp-next-page' => array(
array(
'attr_spec_list' => array(
'deep-parsing' => array(),
'max-pages' => array(),
),
'tag_spec' => array(
'reference_points' => array(
'AMP-NEXT-PAGE > SCRIPT[type=application/json]' => array(
'mandatory' => true,
'unique' => true,
),
'AMP-NEXT-PAGE > [footer]' => array(
'mandatory' => false,
'unique' => true,
),
'AMP-NEXT-PAGE > [recommendation-box]' => array(
'mandatory' => false,
'unique' => true,
),
'AMP-NEXT-PAGE > [separator]' => array(
'mandatory' => false,
'unique' => true,
),
),
'requires_extension' => array(
'amp-next-page',
),
'spec_name' => 'amp-next-page with inline config',
'spec_url' => 'https://amp.dev/documentation/components/amp-next-page/',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'deep-parsing' => array(),
'max-pages' => array(),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'xssi-prefix' => array(),
),
'tag_spec' => array(
'reference_points' => array(
'AMP-NEXT-PAGE > SCRIPT[type=application/json]' => array(
'mandatory' => false,
'unique' => true,
),
'AMP-NEXT-PAGE > [footer]' => array(
'mandatory' => false,
'unique' => true,
),
'AMP-NEXT-PAGE > [recommendation-box]' => array(
'mandatory' => false,
'unique' => true,
),
'AMP-NEXT-PAGE > [separator]' => array(
'mandatory' => false,
'unique' => true,
),
),
'requires_extension' => array(
'amp-next-page',
),
'spec_name' => 'amp-next-page with src attribute',
'spec_url' => 'https://amp.dev/documentation/components/amp-next-page/',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'data-client' => array(
'mandatory' => true,
),
'data-slot' => array(
'mandatory' => true,
),
'deep-parsing' => array(),
'max-pages' => array(),
'type' => array(
'mandatory' => true,
'value' => array(
'adsense',
),
),
),
'tag_spec' => array(
'reference_points' => array(
'AMP-NEXT-PAGE > SCRIPT[type=application/json]' => array(
'mandatory' => false,
'unique' => true,
),
'AMP-NEXT-PAGE > [footer]' => array(
'mandatory' => false,
'unique' => true,
),
'AMP-NEXT-PAGE > [recommendation-box]' => array(
'mandatory' => false,
'unique' => true,
),
'AMP-NEXT-PAGE > [separator]' => array(
'mandatory' => false,
'unique' => true,
),
),
'requires_extension' => array(
'amp-next-page',
),
'spec_name' => 'amp-next-page [type=adsense]',
'spec_url' => 'https://amp.dev/documentation/components/amp-next-page/',
'unique' => true,
),
),
),
'amp-nexxtv-player' => array(
array(
'attr_spec_list' => array(
'data-client' => array(
'mandatory' => true,
),
'data-exit-mode' => array(
'value' => array(
'load',
'loop',
'replay',
),
),
'data-mediaid' => array(
'mandatory' => true,
'value_regex' => '[^=\\/?:]+',
),
'data-mode' => array(
'value' => array(
'api',
'static',
),
),
'data-streamtype' => array(
'value' => array(
'album',
'audio',
'audioalbum',
'collection',
'live',
'playlist',
'playlist-marked',
'radio',
'set',
'video',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-nexxtv-player',
),
),
),
),
'amp-o2-player' => array(
array(
'attr_spec_list' => array(
'data-bcid' => array(
'mandatory' => true,
),
'data-pid' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-o2-player',
),
),
),
),
'amp-onetap-google' => array(
array(
'attr_spec_list' => array(
'data-src' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'https',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-onetap-google',
),
'unique' => true,
),
),
),
'amp-ooyala-player' => array(
array(
'attr_spec_list' => array(
'data-embedcode' => array(
'mandatory' => true,
),
'data-pcode' => array(
'mandatory' => true,
),
'data-playerid' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
7,
4,
),
),
'requires_extension' => array(
'amp-ooyala-player',
),
),
),
),
'amp-orientation-observer' => array(
array(
'attr_spec_list' => array(
'alpha-range' => array(
'value_regex' => '(\\d+)\\s{1}(\\d+)',
),
'beta-range' => array(
'value_regex' => '(\\d+)\\s{1}(\\d+)',
),
'gamma-range' => array(
'value_regex' => '(\\d+)\\s{1}(\\d+)',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'smoothing' => array(
'value_regex' => '[0-9]+|',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-orientation-observer',
),
),
),
),
'amp-pan-zoom' => array(
array(
'attr_spec_list' => array(
'disable-double-tap' => array(
'value' => array(
'',
),
),
'initial-scale' => array(
'value_regex' => '[0-9]+(\\.[0-9]+)?',
),
'initial-x' => array(
'value_regex' => '[0-9]+',
),
'initial-y' => array(
'value_regex' => '[0-9]+',
),
'max-scale' => array(
'value_regex' => '[0-9]+(\\.[0-9]+)?',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'reset-on-resize' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
4,
),
),
'requires_extension' => array(
'amp-pan-zoom',
),
),
),
),
'amp-pinterest' => array(
array(
'attr_spec_list' => array(
'alt' => array(),
'data-do' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-pinterest',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-pinterest/',
),
),
),
'amp-pixel' => array(
array(
'attr_spec_list' => array(
'allow-ssr-img' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'referrerpolicy' => array(
'value' => array(
'no-referrer',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'allow_empty' => true,
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'defines_default_height' => true,
'defines_default_width' => true,
'supported_layouts' => array(
2,
1,
),
),
'spec_url' => 'https://amp.dev/documentation/components/amp-pixel/',
),
),
),
'amp-playbuzz' => array(
array(
'attr_spec_list' => array(
'data-comments' => array(
'value_casei' => array(
'false',
'true',
),
),
'data-item' => array(),
'data-item-info' => array(
'value_casei' => array(
'false',
'true',
),
),
'data-share-buttons' => array(
'value_casei' => array(
'false',
'true',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'src' => array(),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
4,
3,
),
),
'mandatory_oneof' => array(
'data-item',
'src',
),
'requires_extension' => array(
'amp-playbuzz',
),
),
),
),
'amp-position-observer' => array(
array(
'attr_spec_list' => array(
'intersection-ratios' => array(
'value_regex' => '^([0]*?\\.\\d*$|1$|0$)|([0]*?\\.\\d*|1|0)\\s{1}([0]*?\\.\\d*$|1$|0$)',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'once' => array(
'value' => array(
'',
),
),
'target' => array(),
'viewport-margins' => array(
'value_regex' => '^(\\d+$|\\d+px$|\\d+vh$)|((\\d+|\\d+px|\\d+vh)\\s{1}(\\d+$|\\d+px$|\\d+vh$))',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-position-observer',
),
),
),
),
'amp-powr-player' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(),
'data-account' => array(
'mandatory' => true,
'value_regex' => '[0-9a-zA-Z-]+',
),
'data-amp-bind-data-referrer' => array(),
'data-player' => array(
'mandatory' => true,
'value_regex' => '[0-9a-zA-Z-]+',
),
'data-terms' => array(),
'data-video' => array(
'value_regex' => '[0-9a-zA-Z-]+',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_oneof' => array(
'data-terms',
'data-video',
),
'requires_extension' => array(
'amp-powr-player',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-powr-player/',
),
),
),
'amp-reach-player' => array(
array(
'attr_spec_list' => array(
'data-embed-id' => array(
'mandatory' => true,
'value_regex' => '[0-9a-z-]+',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-reach-player',
),
),
),
),
'amp-recaptcha-input' => array(
array(
'attr_spec_list' => array(
'data-action' => array(
'mandatory' => true,
),
'data-sitekey' => array(
'mandatory' => true,
),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'mandatory_ancestor' => 'form',
'requires_extension' => array(
'amp-form',
'amp-recaptcha-input',
),
),
),
),
'amp-redbull-player' => array(
array(
'attr_spec_list' => array(
'data-param-videoid' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
2,
3,
4,
6,
7,
8,
9,
),
),
'requires_extension' => array(
'amp-redbull-player',
),
),
),
),
'amp-reddit' => array(
array(
'attr_spec_list' => array(
'data-embedlive' => array(
'value_casei' => array(
'false',
'true',
),
),
'data-embedparent' => array(
'value_casei' => array(
'false',
'true',
),
),
'data-embedtype' => array(
'mandatory' => true,
'value_casei' => array(
'comment',
'post',
),
),
'data-src' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-reddit',
),
),
),
),
'amp-render' => array(
array(
'attr_spec_list' => array(
'binding' => array(
'value' => array(
'always',
'never',
'no',
'refresh',
),
),
'credentials' => array(),
'data-amp-bind-src' => array(),
'key' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'protocol' => array(
'amp-script',
'amp-state',
'https',
),
),
),
'template' => array(),
'xssi-prefix' => array(),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
6,
2,
3,
7,
1,
4,
),
),
'mandatory_anyof' => array(
'data-amp-bind-src',
'src',
),
'requires_extension' => array(
'amp-render',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-render/',
),
),
),
'amp-riddle-quiz' => array(
array(
'attr_spec_list' => array(
'data-riddle-id' => array(
'mandatory' => true,
'value_regex' => '[0-9]+',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
4,
),
),
'requires_extension' => array(
'amp-riddle-quiz',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-riddle-quiz/',
),
),
),
'amp-script' => array(
array(
'attr_spec_list' => array(
'max-age' => array(
'value_regex' => '[0-9]+',
),
'media' => array(),
'nodom' => array(
'value' => array(
'',
),
),
'noloading' => array(
'value' => array(
'',
),
),
'sandbox' => array(),
'sandboxed' => array(
'value' => array(
'',
),
),
'script' => array(),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
6,
2,
3,
7,
9,
1,
4,
),
),
'disallowed_ancestor' => array(
'amp-script',
),
'mandatory_oneof' => array(
'script',
'src',
),
'requires_extension' => array(
'amp-script',
),
),
),
),
'amp-selector' => array(
array(
'attr_spec_list' => array(
'data-amp-bind-disabled' => array(),
'data-amp-bind-selected' => array(),
'disabled' => array(
'value' => array(
'',
),
),
'form' => array(),
'keyboard-select-mode' => array(
'value_casei' => array(
'focus',
'none',
'select',
),
),
'media' => array(),
'multiple' => array(
'value' => array(
'',
),
),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
1,
4,
5,
),
),
'disallowed_ancestor' => array(
'amp-selector',
),
'reference_points' => array(
'AMP-SELECTOR child' => array(
'mandatory' => false,
'unique' => false,
),
'AMP-SELECTOR option' => array(
'mandatory' => false,
'unique' => false,
),
),
'requires_extension' => array(
'amp-selector',
),
),
),
),
'amp-sidebar' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'side' => array(
'value' => array(
'left',
'right',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'disallowed_ancestor' => array(
'amp-story',
),
'requires_extension' => array(
'amp-sidebar',
),
'spec_name' => 'amp-sidebar',
'spec_url' => 'https://amp.dev/documentation/components/amp-sidebar/',
),
),
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'mandatory_parent' => 'amp-story',
'requires_extension' => array(
'amp-sidebar',
),
'spec_name' => 'amp-story >> amp-sidebar',
'spec_url' => 'https://amp.dev/documentation/components/amp-sidebar/',
),
),
),
'amp-skimlinks' => array(
array(
'attr_spec_list' => array(
'custom-redirect-domain' => array(),
'custom-tracking-id' => array(
'value_regex_casei' => '^.{0,50}$',
),
'excluded-domains' => array(),
'link-selector' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'publisher-code' => array(
'mandatory' => true,
'value_regex_casei' => '^[0-9]+X[0-9]+$',
),
'tracking' => array(
'value' => array(
'false',
'true',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-skimlinks',
),
),
),
),
'amp-smartlinks' => array(
array(
'attr_spec_list' => array(
'exclusive-links' => array(
'value' => array(
'',
),
),
'link-attribute' => array(),
'link-selector' => array(),
'linkmate' => array(
'value' => array(
'',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'nrtv-account-name' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-smartlinks',
),
),
),
),
'amp-social-share' => array(
array(
'attr_spec_list' => array(
'data-share-endpoint' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'ftp',
'http',
'https',
'mailto',
'bbmi',
'fb-me',
'fb-messenger',
'intent',
'line',
'skype',
'sms',
'snapchat',
'tel',
'tg',
'threema',
'viber',
'wh',
'whatsapp',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'type' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-social-share',
),
),
),
),
'amp-soundcloud' => array(
array(
'attr_spec_list' => array(
'data-color' => array(
'value_regex_casei' => '([0-9a-f]{3}){1,2}',
),
'data-playlistid' => array(
'value_regex' => '[0-9]+',
),
'data-secret-token' => array(
'value_regex' => '[A-Za-z0-9_-]+',
),
'data-trackid' => array(
'value_regex' => '[0-9]+',
),
'data-visual' => array(
'value_casei' => array(
'false',
'true',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'mandatory_oneof' => array(
'data-playlistid',
'data-trackid',
),
'requires_extension' => array(
'amp-soundcloud',
),
),
),
),
'amp-springboard-player' => array(
array(
'attr_spec_list' => array(
'data-content-id' => array(
'mandatory' => true,
),
'data-domain' => array(
'mandatory' => true,
),
'data-items' => array(
'mandatory' => true,
),
'data-mode' => array(
'mandatory' => true,
'value_casei' => array(
'playlist',
'video',
),
),
'data-player-id' => array(
'mandatory' => true,
'value_regex_casei' => '[a-z0-9]+',
),
'data-site-id' => array(
'mandatory' => true,
'value_regex' => '[0-9]+',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
7,
4,
),
),
'requires_extension' => array(
'amp-springboard-player',
),
),
),
),
'amp-state' => array(
array(
'attr_spec_list' => array(
'credentials' => array(),
'data-amp-bind-src' => array(),
'id' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
'mandatory' => true,
),
'overridable' => array(),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'child_tags' => array(
'first_child_tag_name_oneof' => array(
'script',
),
),
'requires_extension' => array(
'amp-bind',
),
'spec_name' => 'amp-state',
'spec_url' => 'https://amp.dev/documentation/components/amp-bind/',
),
),
),
'amp-sticky-ad' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'child_tags' => array(
'first_child_tag_name_oneof' => array(
'amp-ad',
),
'mandatory_num_child_tags' => 1,
),
'disallowed_ancestor' => array(
'amp-app-banner',
),
'requires_extension' => array(
'amp-sticky-ad',
),
'unique' => true,
),
),
),
'amp-story' => array(
array(
'attr_spec_list' => array(
'background-audio' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'entity' => array(),
'entity-logo-src' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'entity-url' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'live-story' => array(
'value' => array(
'',
),
),
'live-story-disabled' => array(
'value' => array(
'',
),
),
'poster-landscape-src' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'poster-portrait-src' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'poster-square-src' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'publisher' => array(
'mandatory' => true,
),
'publisher-logo-src' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'standalone' => array(
'mandatory' => true,
'value' => array(
'',
),
),
'supports-landscape' => array(
'value' => array(
'',
),
),
'title' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'child_tags' => array(
'child_tag_name_oneof' => array(
'amp-analytics',
'amp-consent',
'amp-geo',
'amp-pixel',
'amp-sidebar',
'amp-story-auto-ads',
'amp-story-auto-analytics',
'amp-story-bookend',
'amp-story-page',
'amp-story-social-share',
),
'mandatory_min_num_child_tags' => 1,
),
'mandatory_parent' => 'body',
'requires_extension' => array(
'amp-story',
),
),
),
),
'amp-story-360' => array(
array(
'attr_spec_list' => array(
'controls' => array(
'value' => array(
'gyroscope',
),
),
'duration' => array(
'value_regex' => '([0-9\\.]+)\\s*(s|ms)',
),
'heading-end' => array(
'value_regex' => '-?\\d+\\.?\\d*',
),
'heading-start' => array(
'value_regex' => '-?\\d+\\.?\\d*',
),
'pitch-end' => array(
'value_regex' => '-?\\d+\\.?\\d*',
),
'pitch-start' => array(
'value_regex' => '-?\\d+\\.?\\d*',
),
'scene-heading' => array(
'value_regex' => '-?\\d+\\.?\\d*',
),
'scene-pitch' => array(
'value_regex' => '-?\\d+\\.?\\d*',
),
'scene-roll' => array(
'value_regex' => '-?\\d+\\.?\\d*',
),
'zoom-end' => array(
'value_regex' => '\\d+\\.?\\d*',
),
'zoom-start' => array(
'value_regex' => '\\d+\\.?\\d*',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'amp-img',
'amp-video',
),
'mandatory_num_child_tags' => 1,
),
'mandatory_ancestor' => 'amp-story',
'requires_extension' => array(
'amp-story-360',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-story-360',
),
),
),
'amp-story-animation' => array(
array(
'attr_spec_list' => array(
'animate-in-after' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'trigger' => array(
'mandatory' => true,
'value' => array(
'visibility',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'script',
),
'mandatory_num_child_tags' => 1,
),
'mandatory_parent' => 'amp-story-page',
'requires_extension' => array(
'amp-story',
),
),
),
),
'amp-story-auto-ads' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'mandatory_parent' => 'amp-story',
'requires_extension' => array(
'amp-story-auto-ads',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-story-auto-ads/',
'unique' => true,
),
),
),
'amp-story-auto-analytics' => array(
array(
'attr_spec_list' => array(
'gtag-id' => array(
'mandatory' => true,
'value_regex' => '[A-Z]{1,2}-[A-Z0-9-]+',
),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-story-auto-analytics',
),
),
),
),
'amp-story-bookend' => array(
array(
'attr_spec_list' => array(
'layout' => array(
'mandatory' => true,
'value' => array(
'nodisplay',
),
),
'src' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
),
'tag_spec' => array(
'descendant_tag_list' => 'amp-story-bookend-allowed-descendants',
'mandatory_ancestor' => 'amp-story',
),
),
),
'amp-story-captions' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
8,
9,
4,
),
),
'child_tags' => array(
'mandatory_num_child_tags' => 0,
),
'mandatory_ancestor' => 'amp-story',
'requires_extension' => array(
'amp-story-captions',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-story-captions',
),
),
),
'amp-story-consent' => array(
array(
'attr_spec_list' => array(
'id' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
'mandatory' => true,
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'script',
),
'mandatory_num_child_tags' => 1,
),
'mandatory_parent' => 'amp-consent',
'requires_extension' => array(
'amp-consent',
'amp-story',
),
),
),
),
'amp-story-cta-layer' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'descendant_tag_list' => 'amp-story-cta-layer-allowed-descendants',
'mandatory_ancestor' => 'amp-story-page',
'reference_points' => array(
'AMP-STORY-CTA-LAYER animate-in' => array(
'mandatory' => false,
'unique' => false,
),
),
),
),
),
'amp-story-grid-layer' => array(
array(
'attr_spec_list' => array(
'anchor' => array(
'value_regex' => 'top|bottom|left|right|(top|bottom)[ -](left|right)|(left|right)[ -](top|bottom)',
),
'aspect-ratio' => array(
'value_regex' => '\\d+:\\d+',
),
'position' => array(
'value' => array(
'landscape-half-left',
'landscape-half-right',
),
),
'preset' => array(
'value' => array(
'2021-background',
'2021-foreground',
),
),
'template' => array(
'mandatory' => true,
'value' => array(
'fill',
'horizontal',
'thirds',
'vertical',
),
),
),
'tag_spec' => array(
'descendant_tag_list' => 'amp-story-grid-layer-allowed-descendants',
'mandatory_ancestor' => 'amp-story-page',
'reference_points' => array(
'AMP-STORY-GRID-LAYER animate-in' => array(
'mandatory' => false,
'unique' => false,
),
'AMP-STORY-GRID-LAYER default' => array(
'mandatory' => false,
'unique' => false,
),
),
),
),
),
'amp-story-interactive-binary-poll' => array(
array(
'attr_spec_list' => array(
'chip-style' => array(
'value' => array(
'shadow',
'flat',
'transparent',
),
),
'endpoint' => array(
'mandatory' => true,
'value_url' => array(
'allow_empty' => false,
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'id' => array(
'mandatory' => true,
),
'option-1-confetti' => array(),
'option-1-text' => array(
'mandatory' => true,
),
'option-2-confetti' => array(),
'option-2-text' => array(
'mandatory' => true,
),
'prompt-size' => array(
'value' => array(
'small',
'medium',
'large',
),
),
'prompt-text' => array(),
'theme' => array(
'value' => array(
'light',
'dark',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-story-grid-layer',
'requires_extension' => array(
'amp-story-interactive',
),
),
),
),
'amp-story-interactive-img-poll' => array(
array(
'attr_spec_list' => array(
'chip-style' => array(
'value' => array(
'shadow',
'flat',
'transparent',
),
),
'endpoint' => array(
'mandatory' => true,
'value_url' => array(
'allow_empty' => false,
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'id' => array(
'mandatory' => true,
),
'option-1-confetti' => array(),
'option-1-image' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'option-1-image-alt' => array(
'mandatory' => true,
),
'option-1-results-category' => array(),
'option-2-confetti' => array(),
'option-2-image' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'option-2-image-alt' => array(
'mandatory' => true,
),
'option-2-results-category' => array(),
'option-3-confetti' => array(),
'option-3-image' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'option-3-image-alt' => array(),
'option-3-results-category' => array(),
'option-4-confetti' => array(),
'option-4-image' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'option-4-image-alt' => array(),
'option-4-results-category' => array(),
'prompt-size' => array(
'value' => array(
'small',
'medium',
'large',
),
),
'prompt-text' => array(),
'theme' => array(
'value' => array(
'light',
'dark',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-story-grid-layer',
'requires_extension' => array(
'amp-story-interactive',
),
),
),
),
'amp-story-interactive-img-quiz' => array(
array(
'attr_spec_list' => array(
'chip-style' => array(
'value' => array(
'shadow',
'flat',
'transparent',
),
),
'endpoint' => array(
'mandatory' => true,
'value_url' => array(
'allow_empty' => false,
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'id' => array(
'mandatory' => true,
),
'option-1-confetti' => array(),
'option-1-correct' => array(),
'option-1-image' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'option-1-image-alt' => array(
'mandatory' => true,
),
'option-2-confetti' => array(),
'option-2-correct' => array(),
'option-2-image' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'option-2-image-alt' => array(
'mandatory' => true,
),
'option-3-confetti' => array(),
'option-3-correct' => array(),
'option-3-image' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'option-3-image-alt' => array(),
'option-4-confetti' => array(),
'option-4-correct' => array(),
'option-4-image' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'option-4-image-alt' => array(),
'prompt-size' => array(
'value' => array(
'small',
'medium',
'large',
),
),
'prompt-text' => array(),
'theme' => array(
'value' => array(
'light',
'dark',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-story-grid-layer',
'mandatory_oneof' => array(
'option-1-correct',
'option-2-correct',
'option-3-correct',
'option-4-correct',
),
'requires_extension' => array(
'amp-story-interactive',
),
),
),
),
'amp-story-interactive-poll' => array(
array(
'attr_spec_list' => array(
'chip-style' => array(
'value' => array(
'shadow',
'flat',
'transparent',
),
),
'endpoint' => array(
'mandatory' => true,
'value_url' => array(
'allow_empty' => false,
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'id' => array(
'mandatory' => true,
),
'option-1-confetti' => array(),
'option-1-results-category' => array(),
'option-1-text' => array(
'mandatory' => true,
),
'option-2-confetti' => array(),
'option-2-results-category' => array(),
'option-2-text' => array(
'mandatory' => true,
),
'option-3-confetti' => array(),
'option-3-results-category' => array(),
'option-3-text' => array(),
'option-4-confetti' => array(),
'option-4-results-category' => array(),
'option-4-text' => array(),
'prompt-size' => array(
'value' => array(
'small',
'medium',
'large',
),
),
'prompt-text' => array(),
'theme' => array(
'value' => array(
'light',
'dark',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-story-grid-layer',
'requires_extension' => array(
'amp-story-interactive',
),
),
),
),
'amp-story-interactive-quiz' => array(
array(
'attr_spec_list' => array(
'chip-style' => array(
'value' => array(
'shadow',
'flat',
'transparent',
),
),
'endpoint' => array(
'mandatory' => true,
'value_url' => array(
'allow_empty' => false,
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'id' => array(
'mandatory' => true,
),
'option-1-confetti' => array(),
'option-1-correct' => array(),
'option-1-text' => array(
'mandatory' => true,
),
'option-2-confetti' => array(),
'option-2-correct' => array(),
'option-2-text' => array(
'mandatory' => true,
),
'option-3-confetti' => array(),
'option-3-correct' => array(),
'option-3-text' => array(),
'option-4-confetti' => array(),
'option-4-correct' => array(),
'option-4-text' => array(),
'prompt-size' => array(
'value' => array(
'small',
'medium',
'large',
),
),
'prompt-text' => array(),
'theme' => array(
'value' => array(
'light',
'dark',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-story-grid-layer',
'mandatory_oneof' => array(
'option-1-correct',
'option-2-correct',
'option-3-correct',
'option-4-correct',
),
'requires_extension' => array(
'amp-story-interactive',
),
),
),
),
'amp-story-interactive-results' => array(
array(
'attr_spec_list' => array(
'chip-style' => array(
'value' => array(
'flat',
'transparent',
),
),
'option-1-image' => array(),
'option-1-results-category' => array(
'mandatory' => true,
),
'option-1-results-threshold' => array(
'value_regex' => '\\d+(\\.\\d+)?',
),
'option-1-text' => array(),
'option-2-image' => array(),
'option-2-results-category' => array(
'mandatory' => true,
),
'option-2-results-threshold' => array(
'value_regex' => '\\d+(\\.\\d+)?',
),
'option-2-text' => array(),
'option-3-image' => array(),
'option-3-results-category' => array(),
'option-3-results-threshold' => array(
'value_regex' => '\\d+(\\.\\d+)?',
),
'option-3-text' => array(),
'option-4-image' => array(),
'option-4-results-category' => array(),
'option-4-results-threshold' => array(
'value_regex' => '\\d+(\\.\\d+)?',
),
'option-4-text' => array(),
'prompt-text' => array(),
'theme' => array(
'value' => array(
'light',
'dark',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-story-grid-layer',
'requires_extension' => array(
'amp-story-interactive',
),
),
),
),
'amp-story-page' => array(
array(
'attr_spec_list' => array(
'auto-advance-after' => array(),
'background-audio' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'id' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
'mandatory' => true,
),
'next-page-no-ad' => array(),
),
'tag_spec' => array(
'child_tags' => array(
'child_tag_name_oneof' => array(
'amp-analytics',
'amp-pixel',
'amp-story-animation',
'amp-story-auto-analytics',
'amp-story-cta-layer',
'amp-story-grid-layer',
'amp-story-page-attachment',
'amp-story-page-outlink',
),
'mandatory_min_num_child_tags' => 1,
),
'mandatory_parent' => 'amp-story',
'requires_extension' => array(
'amp-story',
),
),
),
),
'amp-story-page-attachment' => array(
array(
'attr_spec_list' => array(
'cta-text' => array(),
'href' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'layout' => array(
'mandatory' => true,
'value' => array(
'nodisplay',
),
),
'theme' => array(
'value' => array(
'dark',
'light',
),
),
'title' => array(),
),
'tag_spec' => array(
'child_tags' => array(
'mandatory_num_child_tags' => 0,
),
'mandatory_ancestor' => 'amp-story-page',
'spec_name' => 'amp-story-page-attachment[href]',
),
),
array(
'attr_spec_list' => array(
'cta-image' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'cta-image-2' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'cta-text' => array(),
'layout' => array(
'mandatory' => true,
'value' => array(
'nodisplay',
),
),
'theme' => array(
'value' => array(
'dark',
'light',
),
),
'title' => array(),
),
'tag_spec' => array(
'descendant_tag_list' => 'amp-story-page-attachment-allowed-descendants',
'mandatory_ancestor' => 'amp-story-page',
'spec_name' => 'amp-story-page-attachment',
),
),
),
'amp-story-page-outlink' => array(
array(
'attr_spec_list' => array(
'cta-accent-color' => array(),
'cta-accent-element' => array(
'value' => array(
'background',
'text',
),
),
'cta-image' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'layout' => array(
'mandatory' => true,
'value' => array(
'nodisplay',
),
),
'theme' => array(
'value' => array(
'custom',
'dark',
'light',
),
),
),
'tag_spec' => array(
'child_tags' => array(
'child_tag_name_oneof' => array(
'a',
),
'mandatory_num_child_tags' => 1,
),
'mandatory_ancestor' => 'amp-story-page',
'spec_name' => 'amp-story-page-outlink',
),
),
),
'amp-story-panning-media' => array(
array(
'attr_spec_list' => array(
'data-x' => array(
'value_regex' => '-?(0|[0-9]?\\d\\.?\\d*%|100%)',
),
'data-y' => array(
'value_regex' => '-?(0|[0-9]?\\d\\.?\\d*%|100%)',
),
'data-zoom' => array(
'value_regex' => '\\d+\\.?\\d*',
),
'lock-bounds' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'amp-img',
),
'mandatory_num_child_tags' => 1,
),
'mandatory_ancestor' => 'amp-story-grid-layer',
'requires_extension' => array(
'amp-story-panning-media',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-story-panning-media',
),
),
),
'amp-story-player' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
9,
),
),
'descendant_tag_list' => 'amp-story-player-allowed-descendants',
'requires_extension' => array(
'amp-story-player',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-story-player/',
),
),
),
'amp-story-shopping-attachment' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-story-shopping',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-story-shopping/',
),
),
),
'amp-story-shopping-config' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-story-shopping',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-story-shopping/',
),
),
),
'amp-story-shopping-tag' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
),
),
'mandatory_ancestor' => 'amp-story-grid-layer',
'requires_extension' => array(
'amp-story-shopping',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-story-shopping/',
),
),
),
'amp-story-social-share' => array(
array(
'attr_spec_list' => array(
'layout' => array(
'mandatory' => true,
'value' => array(
'nodisplay',
),
),
'src' => array(
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
),
'tag_spec' => array(
'descendant_tag_list' => 'amp-story-social-share-allowed-descendants',
'mandatory_ancestor' => 'amp-story',
),
),
),
'amp-stream-gallery' => array(
array(
'attr_spec_list' => array(
'controls' => array(
'value_regex' => '([^,]+\\s+(always|auto|never),\\s*)*(always|auto|never)',
),
'data-amp-bind-controls' => array(),
'data-amp-bind-extra-space' => array(),
'data-amp-bind-loop' => array(),
'data-amp-bind-max-item-width' => array(),
'data-amp-bind-max-visible-count' => array(),
'data-amp-bind-min-item-width' => array(),
'data-amp-bind-min-visible-count' => array(),
'data-amp-bind-outset-arrows' => array(),
'data-amp-bind-peek' => array(),
'data-amp-bind-slide-align' => array(),
'data-amp-bind-snap' => array(),
'extra-space' => array(
'value' => array(
'between',
),
),
'loop' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false|^$)',
),
'max-item-width' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'max-visible-count' => array(
'value_regex' => '([^,]+\\s+(\\d+(\\.\\d+)?),\\s*)*(\\d+(\\.\\d+)?)',
),
'media' => array(),
'min-item-width' => array(
'value_regex' => '([^,]+\\s+(\\d+),\\s*)*(\\d+)',
),
'min-visible-count' => array(
'value_regex' => '([^,]+\\s+(\\d+(\\.\\d+)?),\\s*)*(\\d+(\\.\\d+)?)',
),
'noloading' => array(
'value' => array(
'',
),
),
'outset-arrows' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
'peek' => array(
'value_regex' => '([^,]+\\s+(\\d+(\\.\\d+)?),\\s*)*(\\d+(\\.\\d+)?)',
),
'slide-align' => array(
'value_regex' => '([^,]+\\s+(start|center),\\s*)*(start|center)',
),
'snap' => array(
'value_regex' => '([^,]+\\s+(true|false),\\s*)*(true|false)',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-stream-gallery',
),
'spec_url' => 'https://github.com/ampproject/amphtml/blob/master/extensions/amp-stream-gallery/amp-stream-gallery.md',
),
),
),
'amp-tiktok' => array(
array(
'attr_spec_list' => array(
'data-src' => array(
'mandatory' => true,
'value_regex' => '(https:\\/\\/www\\.tiktok\\.com\\/.*)?\\d+.*',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-tiktok',
),
'spec_name' => 'AMP-TIKTOK',
'spec_url' => 'https://amp.dev/documentation/components/amp-tiktok',
),
),
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'child_tags' => array(
'child_tag_name_oneof' => array(
'blockquote',
),
'mandatory_min_num_child_tags' => 1,
),
'requires_extension' => array(
'amp-tiktok',
),
'spec_name' => 'AMP-TIKTOK blockquote',
'spec_url' => 'https://amp.dev/documentation/components/amp-tiktok',
),
),
),
'amp-timeago' => array(
array(
'attr_spec_list' => array(
'cutoff' => array(
'value_regex' => '\\d+',
),
'data-amp-bind-datetime' => array(),
'data-amp-bind-title' => array(),
'datetime' => array(
'mandatory' => true,
'value_regex' => '\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d(:[0-5]\\d(\\.\\d+)?)?(Z|[+-][0-1][0-9]:[0-5][0-9])',
),
'locale' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
2,
3,
4,
),
),
'requires_extension' => array(
'amp-timeago',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-timeago/',
),
),
),
'amp-truncate-text' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'overflow-style' => array(
'value' => array(
'right',
'default',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
5,
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-truncate-text',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-truncate-text/',
),
),
),
'amp-twitter' => array(
array(
'attr_spec_list' => array(
'data-amp-bind-data-tweetid' => array(),
'data-cards' => array(),
'data-conversation' => array(),
'data-limit' => array(),
'data-momentid' => array(
'value_regex' => '\\d+',
),
'data-timeline-id' => array(
'value_regex' => '\\d+',
),
'data-timeline-owner-screen-name' => array(),
'data-timeline-screen-name' => array(),
'data-timeline-slug' => array(),
'data-timeline-source-type' => array(),
'data-timeline-url' => array(
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'http',
'https',
),
),
),
'data-timeline-user-id' => array(
'value_regex' => '\\d+',
),
'data-tweetid' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'mandatory_oneof' => array(
'data-momentid',
'data-timeline-source-type',
'data-tweetid',
),
'requires_extension' => array(
'amp-twitter',
),
),
),
),
'amp-user-notification' => array(
array(
'attr_spec_list' => array(
'data-dismiss-href' => array(
'value_url' => array(
'allow_empty' => false,
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'data-show-if-href' => array(
'value_url' => array(
'allow_empty' => false,
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'enctype' => array(
'value' => array(
'application/x-www-form-urlencoded',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-user-notification',
),
),
),
),
'amp-video' => array(
array(
'attr_spec_list' => array(
'album' => array(),
'alt' => array(),
'artist' => array(),
'artwork' => array(),
'attribution' => array(),
'autoplay' => array(
'value' => array(
'',
),
),
'controls' => array(
'value' => array(
'',
),
),
'controlslist' => array(),
'crossorigin' => array(),
'data-amp-bind-album' => array(),
'data-amp-bind-alt' => array(),
'data-amp-bind-artist' => array(),
'data-amp-bind-artwork' => array(),
'data-amp-bind-attribution' => array(),
'data-amp-bind-controls' => array(),
'data-amp-bind-controlslist' => array(),
'data-amp-bind-loop' => array(),
'data-amp-bind-poster' => array(),
'data-amp-bind-preload' => array(),
'data-amp-bind-src' => array(),
'data-amp-bind-title' => array(),
'disableremoteplayback' => array(
'value' => array(
'',
),
),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'lightbox' => array(),
'lightbox-thumbnail-id' => array(
'value_regex_casei' => '^[a-z][a-z\\d_-]*',
),
'loop' => array(
'value' => array(
'',
),
),
'media' => array(),
'muted' => array(
'value' => array(
'',
),
),
'noaudio' => array(
'value' => array(
'',
),
),
'noloading' => array(
'value' => array(
'',
),
),
'object-fit' => array(),
'object-position' => array(),
'placeholder' => array(),
'poster' => array(),
'preload' => array(
'value' => array(
'auto',
'metadata',
'none',
'',
),
),
'rotate-to-fullscreen' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'disallowed_ancestor' => array(
'amp-story',
),
'requires_extension' => array(
'amp-video',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-video/',
),
),
array(
'attr_spec_list' => array(
'album' => array(),
'alt' => array(),
'artist' => array(),
'artwork' => array(),
'attribution' => array(),
'autoplay' => array(
'value' => array(
'',
),
),
'controls' => array(
'value' => array(
'',
),
),
'controlslist' => array(),
'crossorigin' => array(),
'data-amp-bind-album' => array(),
'data-amp-bind-alt' => array(),
'data-amp-bind-artist' => array(),
'data-amp-bind-artwork' => array(),
'data-amp-bind-attribution' => array(),
'data-amp-bind-controls' => array(),
'data-amp-bind-controlslist' => array(),
'data-amp-bind-loop' => array(),
'data-amp-bind-poster' => array(),
'data-amp-bind-preload' => array(),
'data-amp-bind-src' => array(),
'data-amp-bind-title' => array(),
'disableremoteplayback' => array(
'value' => array(
'',
),
),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'lightbox' => array(),
'lightbox-thumbnail-id' => array(
'value_regex_casei' => '^[a-z][a-z\\d_-]*',
),
'loop' => array(
'value' => array(
'',
),
),
'media' => array(),
'muted' => array(
'value' => array(
'',
),
),
'noaudio' => array(
'value' => array(
'',
),
),
'noloading' => array(
'value' => array(
'',
),
),
'object-fit' => array(),
'object-position' => array(),
'placeholder' => array(),
'poster' => array(),
'preload' => array(
'value' => array(
'auto',
'metadata',
'none',
'',
),
),
'rotate-to-fullscreen' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'mandatory_ancestor' => 'amp-story-page-attachment',
'requires_extension' => array(
'amp-video',
),
'spec_name' => 'amp-story >> amp-story-page-attachment >> amp-video',
'spec_url' => 'https://amp.dev/documentation/components/amp-video/',
),
),
array(
'attr_spec_list' => array(
'album' => array(),
'alt' => array(),
'artist' => array(),
'artwork' => array(),
'attribution' => array(),
'autoplay' => array(
'mandatory' => true,
'value' => array(
'',
),
),
'cache' => array(
'value' => array(
'google',
),
),
'captions-id' => array(
'requires_extension' => array(
'amp-story-captions',
),
),
'controls' => array(
'value' => array(
'',
),
),
'controlslist' => array(),
'crossorigin' => array(),
'data-amp-bind-album' => array(),
'data-amp-bind-alt' => array(),
'data-amp-bind-artist' => array(),
'data-amp-bind-artwork' => array(),
'data-amp-bind-attribution' => array(),
'data-amp-bind-controls' => array(),
'data-amp-bind-controlslist' => array(),
'data-amp-bind-loop' => array(),
'data-amp-bind-poster' => array(),
'data-amp-bind-preload' => array(),
'data-amp-bind-src' => array(),
'data-amp-bind-title' => array(),
'disableremoteplayback' => array(
'value' => array(
'',
),
),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'loop' => array(
'value' => array(
'',
),
),
'media' => array(),
'muted' => array(
'value' => array(
'',
),
),
'noaudio' => array(
'value' => array(
'',
),
),
'noloading' => array(
'value' => array(
'',
),
),
'object-fit' => array(),
'object-position' => array(),
'placeholder' => array(),
'poster' => array(
'mandatory' => true,
),
'preload' => array(
'value' => array(
'auto',
'metadata',
'none',
'',
),
),
'rotate-to-fullscreen' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => true,
'protocol' => array(
'https',
),
),
),
'volume' => array(
'value_regex' => '^((0?\\.[1-9]+)?|1(\\.0*)?)$',
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_ancestor' => 'amp-story',
'requires_extension' => array(
'amp-video',
),
'spec_name' => 'amp-story >> amp-video',
'spec_url' => 'https://amp.dev/documentation/components/amp-video/',
),
),
),
'amp-video-iframe' => array(
array(
'attr_spec_list' => array(
'album' => array(),
'alt' => array(),
'artist' => array(),
'artwork' => array(),
'attribution' => array(),
'autoplay' => array(
'value' => array(
'',
),
),
'data-amp-bind-src' => array(),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'implements-media-session' => array(
'value' => array(
'',
),
),
'implements-rotate-to-fullscreen' => array(
'value' => array(
'',
),
),
'lightbox' => array(),
'lightbox-thumbnail-id' => array(
'value_regex_casei' => '^[a-z][a-z\\d_-]*',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'poster' => array(),
'referrerpolicy' => array(),
'rotate-to-fullscreen' => array(
'value' => array(
'',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-video-iframe',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-video-iframe/',
),
),
),
'amp-vimeo' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(
'value' => array(
'',
),
),
'data-videoid' => array(
'mandatory' => true,
'value_regex' => '[0-9]+',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-vimeo',
),
),
),
),
'amp-vine' => array(
array(
'attr_spec_list' => array(
'data-vineid' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-vine',
),
),
),
),
'amp-viqeo-player' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(),
'data-profileid' => array(
'mandatory' => true,
'value_regex' => '[0-9a-f]*',
),
'data-videoid' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-viqeo-player',
),
),
),
),
'amp-vk' => array(
array(
'attr_spec_list' => array(
'data-embedtype' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
2,
7,
4,
),
),
'requires_extension' => array(
'amp-vk',
),
),
),
),
'amp-web-push' => array(
array(
'attr_spec_list' => array(
'helper-iframe-url' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'id' => array(
'mandatory' => true,
'value' => array(
'amp-web-push',
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'permission-dialog-url' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'service-worker-scope' => array(
'value_url' => array(
'protocol' => array(
'https',
),
),
),
'service-worker-url' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
1,
),
),
'requires_extension' => array(
'amp-web-push',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-web-push/',
),
),
),
'amp-web-push-widget' => array(
array(
'attr_spec_list' => array(
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'visibility' => array(
'mandatory' => true,
'value' => array(
'blocked',
'subscribed',
'unsubscribed',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
2,
),
),
'requires_extension' => array(
'amp-web-push',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-web-push/',
),
),
),
'amp-wistia-player' => array(
array(
'attr_spec_list' => array(
'data-media-hashed-id' => array(
'mandatory' => true,
'value_regex' => '[0-9a-zA-Z]+',
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
'rotate-to-fullscreen' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
4,
),
),
'requires_extension' => array(
'amp-wistia-player',
),
),
),
),
'amp-wordpress-embed' => array(
array(
'attr_spec_list' => array(
'data-url' => array(
'mandatory' => true,
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'https',
),
),
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
9,
1,
4,
),
),
'requires_extension' => array(
'amp-wordpress-embed',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-wordpress-embed/',
),
),
),
'amp-yotpo' => array(
array(
'attr_spec_list' => array(
'data-app-key' => array(
'mandatory' => true,
),
'data-widget-type' => array(
'mandatory' => true,
),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'requires_extension' => array(
'amp-yotpo',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-yotpo/',
),
),
),
'amp-youtube' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(),
'credentials' => array(
'value_casei' => array(
'include',
'omit',
),
),
'data-amp-bind-data-videoid' => array(),
'data-live-channelid' => array(
'value_regex' => '[^=\\/?:]+',
),
'data-videoid' => array(
'value_regex' => '[^=\\/?:]+',
),
'dock' => array(
'requires_extension' => array(
'amp-video-docking',
),
),
'lightbox' => array(),
'lightbox-thumbnail-id' => array(
'value_regex_casei' => '^[a-z][a-z\\d_-]*',
),
'loop' => array(),
'media' => array(),
'noloading' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(
'amp_layout' => array(
'supported_layouts' => array(
6,
2,
3,
7,
1,
4,
),
),
'mandatory_oneof' => array(
'data-live-channelid',
'data-videoid',
),
'requires_extension' => array(
'amp-youtube',
),
),
),
),
'article' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'aside' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'audio' => array(
array(
'attr_spec_list' => array(
'autoplay' => array(),
'controls' => array(),
'loop' => array(),
'muted' => array(),
'preload' => array(),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'data',
'https',
),
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'noscript',
'mandatory_ancestor_suggested_alternative' => 'amp-audio',
'spec_url' => 'https://amp.dev/documentation/components/amp-audio/',
),
),
),
'b' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'base' => array(
array(
'attr_spec_list' => array(
'href' => array(
'value' => array(
'/',
),
),
'target' => array(
'value_casei' => array(
'_blank',
'_self',
'_top',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'unique' => true,
),
),
),
'bdi' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'bdo' => array(
array(
'attr_spec_list' => array(
'dir' => array(),
),
'tag_spec' => array(),
),
),
'big' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'blockquote' => array(
array(
'attr_spec_list' => array(
'align' => array(),
'cite' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_empty' => true,
'protocol' => array(
'http',
'https',
),
),
),
),
'tag_spec' => array(),
),
array(
'attr_spec_list' => array(
'align' => array(),
'cite' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_empty' => true,
'protocol' => array(
'http',
'https',
),
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-tiktok blockquote',
'spec_name' => 'BLOCKQUOTE with TikTok',
),
),
),
'body' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'mandatory' => true,
'mandatory_parent' => 'html',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup',
'unique' => true,
),
),
),
'br' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'button' => array(
array(
'attr_spec_list' => array(
'data-amp-bind-disabled' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'disabled' => array(
'value' => array(
'',
),
),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'role' => array(),
'tabindex' => array(),
'type' => array(),
'value' => array(),
),
'tag_spec' => array(),
),
array(
'attr_spec_list' => array(
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'open-button' => array(
'value' => array(
'',
),
),
'role' => array(),
'tabindex' => array(),
'type' => array(),
'value' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-app-banner',
'spec_name' => 'amp-app-banner button[open-button]',
),
),
array(
'attr_spec_list' => array(
'disabled' => array(
'value' => array(
'',
),
),
'load-more-clickable' => array(
'dispatch_key' => 1,
'mandatory' => true,
'value' => array(
'',
),
),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'role' => array(),
'tabindex' => array(),
'type' => array(),
'value' => array(),
),
'tag_spec' => array(
'mandatory_parent' => 'amp-list-load-more',
'requires_extension' => array(
'amp-list',
),
'spec_name' => 'amp-list-load-more button[load-more-clickable]',
),
),
array(
'attr_spec_list' => array(
'amp-nested-submenu-close' => array(),
'amp-nested-submenu-open' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-nested-menu',
'spec_name' => 'button amp-nested-menu',
),
),
),
'canvas' => array(
array(
'attr_spec_list' => array(
'height' => array(),
'width' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-script',
'requires_extension' => array(
'amp-script',
),
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
),
'caption' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'center' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'circle' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'cx' => array(),
'cy' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'r' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'sketch:type' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'cite' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'clippath' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'clippathunits' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'code' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'col' => array(
array(
'attr_spec_list' => array(
'span' => array(),
),
'tag_spec' => array(),
),
),
'colgroup' => array(
array(
'attr_spec_list' => array(
'span' => array(),
),
'tag_spec' => array(),
),
),
'data' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'datalist' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'spec_url' => 'https://amp.dev/documentation/components/amp-form/',
),
),
),
'dd' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'defs' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'del' => array(
array(
'attr_spec_list' => array(
'cite' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_empty' => true,
'protocol' => array(
'http',
'https',
),
),
),
'datetime' => array(),
),
'tag_spec' => array(),
),
),
'desc' => array(
array(
'attr_spec_list' => array(
'style' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'details' => array(
array(
'attr_spec_list' => array(
'data-amp-bind-open' => array(),
'open' => array(
'value' => array(
'',
),
),
),
'tag_spec' => array(),
),
),
'dfn' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'dir' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'div' => array(
array(
'attr_spec_list' => array(
'align' => array(),
),
'tag_spec' => array(),
),
array(
'attr_spec_list' => array(
'align' => array(),
'verify-error' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form',
'spec_name' => 'FORM DIV [verify-error]',
),
),
array(
'attr_spec_list' => array(
'align' => array(),
'template' => array(
'mandatory' => true,
),
'verify-error' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form',
'spec_name' => 'FORM DIV [verify-error][template]',
),
),
array(
'attr_spec_list' => array(
'align' => array(),
'submitting' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form',
'spec_name' => 'FORM DIV [submitting]',
),
),
array(
'attr_spec_list' => array(
'align' => array(),
'submitting' => array(
'mandatory' => true,
),
'template' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form',
'spec_name' => 'FORM DIV [submitting][template]',
),
),
array(
'attr_spec_list' => array(
'align' => array(),
'submit-success' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form',
'spec_name' => 'FORM DIV [submit-success]',
),
),
array(
'attr_spec_list' => array(
'align' => array(),
'submit-success' => array(
'mandatory' => true,
),
'template' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form',
'spec_name' => 'FORM DIV [submit-success][template]',
),
),
array(
'attr_spec_list' => array(
'align' => array(),
'submit-error' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form',
'spec_name' => 'FORM DIV [submit-error]',
),
),
array(
'attr_spec_list' => array(
'align' => array(),
'submit-error' => array(
'mandatory' => true,
),
'template' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form',
'spec_name' => 'FORM DIV [submit-error][template]',
),
),
array(
'attr_spec_list' => array(
'first' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_parent' => 'amp-image-slider',
'spec_name' => 'AMP-IMAGE-SLIDER > DIV [first]',
'spec_url' => 'https://amp.dev/documentation/components/amp-image-slider/',
),
),
array(
'attr_spec_list' => array(
'second' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_parent' => 'amp-image-slider',
'spec_name' => 'AMP-IMAGE-SLIDER > DIV [second]',
'spec_url' => 'https://amp.dev/documentation/components/amp-image-slider/',
),
),
array(
'attr_spec_list' => array(
'align' => array(),
'fetch-error' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-list',
'spec_name' => 'AMP-LIST DIV [fetch-error]',
),
),
array(
'attr_spec_list' => array(
'amp-nested-submenu' => array(
'dispatch_key' => 2,
),
'amp-nested-submenu-close' => array(
'dispatch_key' => 2,
),
'amp-nested-submenu-open' => array(
'dispatch_key' => 2,
),
),
'tag_spec' => array(
'disallowed_ancestor' => array(
'amp-accordion',
),
'mandatory_ancestor' => 'amp-nested-menu',
'mandatory_oneof' => array(
'amp-nested-submenu',
'amp-nested-submenu-close',
'amp-nested-submenu-open',
),
'spec_name' => 'div amp-nested-menu',
),
),
),
'dl' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'dt' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'ellipse' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'cx' => array(),
'cy' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'rx' => array(),
'ry' => array(),
'shape-rendering' => array(),
'sketch:type' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'em' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'feblend' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'in2' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'mode' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fecolormatrix' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'type' => array(),
'unicode-bidi' => array(),
'values' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fecomponenttransfer' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fecomposite' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'in2' => array(),
'k1' => array(),
'k2' => array(),
'k3' => array(),
'k4' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'operator' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'feconvolvematrix' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'bias' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'divisor' => array(),
'dominant-baseline' => array(),
'edgemode' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'kernelmatrix' => array(),
'kernelunitlength' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'order' => array(),
'overflow' => array(),
'pointer-events' => array(),
'preservealpha' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'targetx' => array(),
'targety' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fediffuselighting' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'diffuseconstant' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'kernelunitlength' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'surfacescale' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fedisplacementmap' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'in2' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'scale' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xchannelselector' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
'ychannelselector' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fedistantlight' => array(
array(
'attr_spec_list' => array(
'azimuth' => array(),
'elevation' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fedropshadow' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'dx' => array(),
'dy' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stddeviation' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'mandatory_parent' => 'filter',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'feflood' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fefunca' => array(
array(
'attr_spec_list' => array(
'amplitude' => array(),
'exponent' => array(),
'intercept' => array(),
'offset' => array(),
'slope' => array(),
'table' => array(),
'tablevalues' => array(),
'type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'mandatory_parent' => 'fecomponenttransfer',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fefuncb' => array(
array(
'attr_spec_list' => array(
'amplitude' => array(),
'exponent' => array(),
'intercept' => array(),
'offset' => array(),
'slope' => array(),
'table' => array(),
'tablevalues' => array(),
'type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'mandatory_parent' => 'fecomponenttransfer',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fefuncg' => array(
array(
'attr_spec_list' => array(
'amplitude' => array(),
'exponent' => array(),
'intercept' => array(),
'offset' => array(),
'slope' => array(),
'table' => array(),
'tablevalues' => array(),
'type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'mandatory_parent' => 'fecomponenttransfer',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fefuncr' => array(
array(
'attr_spec_list' => array(
'amplitude' => array(),
'exponent' => array(),
'intercept' => array(),
'offset' => array(),
'slope' => array(),
'table' => array(),
'tablevalues' => array(),
'type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'mandatory_parent' => 'fecomponenttransfer',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fegaussianblur' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'edgemode' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stddeviation' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'femerge' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'femergenode' => array(
array(
'attr_spec_list' => array(
'in' => array(),
'style' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'femorphology' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'operator' => array(),
'overflow' => array(),
'pointer-events' => array(),
'radius' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'feoffset' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'dx' => array(),
'dy' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fepointlight' => array(
array(
'attr_spec_list' => array(
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
'z' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fespecularlighting' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'kernelunitlength' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'specularconstant' => array(),
'specularexponent' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'surfacescale' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fespotlight' => array(
array(
'attr_spec_list' => array(
'limitingconeangle' => array(),
'pointsatx' => array(),
'pointsaty' => array(),
'pointsatz' => array(),
'specularexponent' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
'z' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fetile' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'in' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'feturbulence' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'basefrequency' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'numoctaves' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'result' => array(),
'seed' => array(),
'shape-rendering' => array(),
'stitchtiles' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'type' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'fieldset' => array(
array(
'attr_spec_list' => array(
'data-amp-bind-disabled' => array(),
'disabled' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
),
'tag_spec' => array(),
),
),
'figcaption' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'figure' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'filter' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'filterres' => array(),
'filterunits' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'primitiveunits' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xlink:actuate' => array(),
'xlink:arcrole' => array(),
'xlink:href' => array(
'alternative_names' => array(
'href',
),
'value_url' => array(
'allow_empty' => false,
'protocol' => array(
'http',
'https',
),
),
),
'xlink:role' => array(),
'xlink:show' => array(),
'xlink:title' => array(),
'xlink:type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'footer' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'form' => array(
array(
'attr_spec_list' => array(
'accept' => array(),
'accept-charset' => array(),
'action' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'https',
),
),
),
'action-xhr' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'protocol' => array(
'https',
),
),
),
'autocomplete' => array(),
'custom-validation-reporting' => array(
'value' => array(
'as-you-go',
'interact-and-submit',
'show-all-on-submit',
'show-first-on-submit',
),
),
'enctype' => array(),
'method' => array(
'value_casei' => array(
'get',
),
),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_POSITION_CONTAINED_BY|DOCUMENT_POSITION_CONTAINS|DOCUMENT_POSITION_DISCONNECTED|DOCUMENT_POSITION_FOLLOWING|DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|DOCUMENT_POSITION_PRECEDING|DOCUMENT_TYPE_NODE|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|URL|URLUnencoded|__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|activeElement|addEventListener|adoptNode|alinkColor|all|anchors|append|appendChild|applets|baseURI|bgColor|body|captureEvents|caretPositionFromPoint|caretRangeFromPoint|characterSet|charset|childElementCount|childNodes|children|clear|cloneNode|close|compareDocumentPosition|compatMode|constructor|contains|contentType|cookie|createAttribute|createAttributeNS|createCDATASection|createComment|createDocumentFragment|createElement|createElementNS|createEvent|createExpression|createNSResolver|createNodeIterator|createProcessingInstruction|createRange|createTextNode|createTreeWalker|currentScript|defaultView|designMode|dir|dispatchEvent|doctype|documentElement|documentURI|domain|elementFromPoint|elementsFromPoint|embeds|enableStyleSheetsForSet|evaluate|execCommand|execCommandShowHelp|exitFullscreen|exitPictureInPicture|exitPointerLock|fgColor|firstChild|firstElementChild|focus|fonts|forms|fullscreen|fullscreenElement|fullscreenEnabled|getCSSCanvasContext|getElementById|getElementsByClassName|getElementsByName|getElementsByTagName|getElementsByTagNameNS|getOverrideStyle|getRootNode|getSelection|hasChildNodes|hasFocus|hasOwnProperty|hasStorageAccess|head|hidden|images|implementation|importNode|inputEncoding|insertBefore|isConnected|isDefaultNamespace|isEqualNode|isPrototypeOf|isSameNode|l10n|lastChild|lastElementChild|lastModified|lastStyleSheetSet|linkColor|links|location|lookupNamespaceURI|lookupPrefix|mozCancelFullScreen|mozFullScreen|mozFullScreenElement|mozFullScreenEnabled|mozSetImageElement|msCSSOMElementFloatMetrics|msCapsLockWarningOff|msElementsFromPoint|msElementsFromRect|nextSibling|nodeName|nodeType|nodeValue|normalize|onabort|onactivate|onafterscriptexecute|onanimationcancel|onanimationend|onanimationiteration|onanimationstart|onauxclick|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeinput|onbeforepaste|onbeforescriptexecute|onblur|oncancel|oncanplay|oncanplaythrough|onchange|onclick|onclose|oncontextmenu|oncopy|oncuechange|oncut|ondblclick|ondeactivate|ondrag|ondragend|ondragenter|ondragexit|ondragleave|ondragover|ondragstart|ondrop|ondurationchange|onemptied|onended|onerror|onfocus|onfreeze|onfullscreenchange|onfullscreenerror|ongotpointercapture|oninput|oninvalid|onkeydown|onkeypress|onkeyup|onload|onloadeddata|onloadedmetadata|onloadend|onloadstart|onlostpointercapture|onmousedown|onmouseenter|onmouseleave|onmousemove|onmouseout|onmouseover|onmouseup|onmousewheel|onmozfullscreenchange|onmozfullscreenerror|onmscontentzoom|onmsgesturechange|onmsgesturedoubletap|onmsgestureend|onmsgesturehold|onmsgesturestart|onmsgesturetap|onmsinertiastart|onmsmanipulationstatechanged|onmssitemodejumplistitemremoved|onmsthumbnailclick|onpaste|onpause|onplay|onplaying|onpointercancel|onpointerdown|onpointerenter|onpointerleave|onpointerlockchange|onpointerlockerror|onpointermove|onpointerout|onpointerover|onpointerup|onprogress|onratechange|onreadystatechange|onrejectionhandled|onreset|onresize|onresume|onscroll|onsearch|onseeked|onseeking|onselect|onselectionchange|onselectstart|onshow|onstalled|onstop|onsubmit|onsuspend|ontimeupdate|ontoggle|ontransitioncancel|ontransitionend|ontransitionrun|ontransitionstart|onunhandledrejection|onvisibilitychange|onvolumechange|onwaiting|onwebkitanimationend|onwebkitanimationiteration|onwebkitanimationstart|onwebkitfullscreenchange|onwebkitfullscreenerror|onwebkitmouseforcechanged|onwebkitmouseforcedown|onwebkitmouseforceup|onwebkitmouseforcewillbegin|onwebkittransitionend|onwheel|open|origin|ownerDocument|parentElement|parentNode|pictureInPictureElement|pictureInPictureEnabled|plugins|pointerLockElement|preferredStyleSheetSet|prepend|previousSibling|propertyIsEnumerable|queryCommandEnabled|queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandText|queryCommandValue|querySelector|querySelectorAll|readyState|referrer|registerElement|releaseCapture|releaseEvents|removeChild|removeEventListener|replaceChild|requestStorageAccess|rootElement|scripts|scrollingElement|selectedStyleSheetSet|styleSheetSets|styleSheets|textContent|title|toLocaleString|toSource|toString|updateSettings|valueOf|visibilityState|vlinkColor|wasDiscarded|webkitCancelFullScreen|webkitCurrentFullScreenElement|webkitExitFullscreen|webkitFullScreenKeyboardInputAllowed|webkitFullscreenElement|webkitFullscreenEnabled|webkitHidden|webkitIsFullScreen|webkitVisibilityState|write|writeln|xmlEncoding|xmlStandalone|xmlVersion)(\\s|$)',
),
'novalidate' => array(),
'target' => array(
'mandatory' => true,
'value_casei' => array(
'_blank',
'_top',
),
),
'verify-xhr' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'protocol' => array(
'https',
),
),
),
'xssi-prefix' => array(),
),
'tag_spec' => array(
'disallowed_ancestor' => array(
'amp-app-banner',
),
'requires_extension' => array(
'amp-form',
),
'spec_name' => 'FORM [method=GET]',
),
),
array(
'attr_spec_list' => array(
'accept' => array(),
'accept-charset' => array(),
'action-xhr' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'https',
),
),
),
'autocomplete' => array(),
'custom-validation-reporting' => array(
'value' => array(
'as-you-go',
'interact-and-submit',
'show-all-on-submit',
'show-first-on-submit',
),
),
'enctype' => array(),
'method' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'post',
),
),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_POSITION_CONTAINED_BY|DOCUMENT_POSITION_CONTAINS|DOCUMENT_POSITION_DISCONNECTED|DOCUMENT_POSITION_FOLLOWING|DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|DOCUMENT_POSITION_PRECEDING|DOCUMENT_TYPE_NODE|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|URL|URLUnencoded|__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|activeElement|addEventListener|adoptNode|alinkColor|all|anchors|append|appendChild|applets|baseURI|bgColor|body|captureEvents|caretPositionFromPoint|caretRangeFromPoint|characterSet|charset|childElementCount|childNodes|children|clear|cloneNode|close|compareDocumentPosition|compatMode|constructor|contains|contentType|cookie|createAttribute|createAttributeNS|createCDATASection|createComment|createDocumentFragment|createElement|createElementNS|createEvent|createExpression|createNSResolver|createNodeIterator|createProcessingInstruction|createRange|createTextNode|createTreeWalker|currentScript|defaultView|designMode|dir|dispatchEvent|doctype|documentElement|documentURI|domain|elementFromPoint|elementsFromPoint|embeds|enableStyleSheetsForSet|evaluate|execCommand|execCommandShowHelp|exitFullscreen|exitPictureInPicture|exitPointerLock|fgColor|firstChild|firstElementChild|focus|fonts|forms|fullscreen|fullscreenElement|fullscreenEnabled|getCSSCanvasContext|getElementById|getElementsByClassName|getElementsByName|getElementsByTagName|getElementsByTagNameNS|getOverrideStyle|getRootNode|getSelection|hasChildNodes|hasFocus|hasOwnProperty|hasStorageAccess|head|hidden|images|implementation|importNode|inputEncoding|insertBefore|isConnected|isDefaultNamespace|isEqualNode|isPrototypeOf|isSameNode|l10n|lastChild|lastElementChild|lastModified|lastStyleSheetSet|linkColor|links|location|lookupNamespaceURI|lookupPrefix|mozCancelFullScreen|mozFullScreen|mozFullScreenElement|mozFullScreenEnabled|mozSetImageElement|msCSSOMElementFloatMetrics|msCapsLockWarningOff|msElementsFromPoint|msElementsFromRect|nextSibling|nodeName|nodeType|nodeValue|normalize|onabort|onactivate|onafterscriptexecute|onanimationcancel|onanimationend|onanimationiteration|onanimationstart|onauxclick|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeinput|onbeforepaste|onbeforescriptexecute|onblur|oncancel|oncanplay|oncanplaythrough|onchange|onclick|onclose|oncontextmenu|oncopy|oncuechange|oncut|ondblclick|ondeactivate|ondrag|ondragend|ondragenter|ondragexit|ondragleave|ondragover|ondragstart|ondrop|ondurationchange|onemptied|onended|onerror|onfocus|onfreeze|onfullscreenchange|onfullscreenerror|ongotpointercapture|oninput|oninvalid|onkeydown|onkeypress|onkeyup|onload|onloadeddata|onloadedmetadata|onloadend|onloadstart|onlostpointercapture|onmousedown|onmouseenter|onmouseleave|onmousemove|onmouseout|onmouseover|onmouseup|onmousewheel|onmozfullscreenchange|onmozfullscreenerror|onmscontentzoom|onmsgesturechange|onmsgesturedoubletap|onmsgestureend|onmsgesturehold|onmsgesturestart|onmsgesturetap|onmsinertiastart|onmsmanipulationstatechanged|onmssitemodejumplistitemremoved|onmsthumbnailclick|onpaste|onpause|onplay|onplaying|onpointercancel|onpointerdown|onpointerenter|onpointerleave|onpointerlockchange|onpointerlockerror|onpointermove|onpointerout|onpointerover|onpointerup|onprogress|onratechange|onreadystatechange|onrejectionhandled|onreset|onresize|onresume|onscroll|onsearch|onseeked|onseeking|onselect|onselectionchange|onselectstart|onshow|onstalled|onstop|onsubmit|onsuspend|ontimeupdate|ontoggle|ontransitioncancel|ontransitionend|ontransitionrun|ontransitionstart|onunhandledrejection|onvisibilitychange|onvolumechange|onwaiting|onwebkitanimationend|onwebkitanimationiteration|onwebkitanimationstart|onwebkitfullscreenchange|onwebkitfullscreenerror|onwebkitmouseforcechanged|onwebkitmouseforcedown|onwebkitmouseforceup|onwebkitmouseforcewillbegin|onwebkittransitionend|onwheel|open|origin|ownerDocument|parentElement|parentNode|pictureInPictureElement|pictureInPictureEnabled|plugins|pointerLockElement|preferredStyleSheetSet|prepend|previousSibling|propertyIsEnumerable|queryCommandEnabled|queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandText|queryCommandValue|querySelector|querySelectorAll|readyState|referrer|registerElement|releaseCapture|releaseEvents|removeChild|removeEventListener|replaceChild|requestStorageAccess|rootElement|scripts|scrollingElement|selectedStyleSheetSet|styleSheetSets|styleSheets|textContent|title|toLocaleString|toSource|toString|updateSettings|valueOf|visibilityState|vlinkColor|wasDiscarded|webkitCancelFullScreen|webkitCurrentFullScreenElement|webkitExitFullscreen|webkitFullScreenKeyboardInputAllowed|webkitFullscreenElement|webkitFullscreenEnabled|webkitHidden|webkitIsFullScreen|webkitVisibilityState|write|writeln|xmlEncoding|xmlStandalone|xmlVersion)(\\s|$)',
),
'novalidate' => array(),
'target' => array(
'value_casei' => array(
'_blank',
'_top',
),
),
'verify-xhr' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'protocol' => array(
'https',
),
),
),
),
'tag_spec' => array(
'disallowed_ancestor' => array(
'amp-app-banner',
),
'requires_extension' => array(
'amp-form',
),
'spec_name' => 'FORM [method=POST]',
),
),
),
'g' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'glyph' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'arabic-form' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'd' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-name' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'horiz-adv-x' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'orientation' => array(),
'overflow' => array(),
'pointer-events' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'vert-adv-y' => array(),
'vert-origin-x' => array(),
'vert-origin-y' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'glyphref' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'dx' => array(),
'dy' => array(),
'enable-background' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'format' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'glyphref' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xlink:actuate' => array(),
'xlink:arcrole' => array(),
'xlink:href' => array(
'alternative_names' => array(
'href',
),
'value_url' => array(
'allow_empty' => false,
'protocol' => array(
'http',
'https',
),
),
),
'xlink:role' => array(),
'xlink:show' => array(),
'xlink:title' => array(),
'xlink:type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'h1' => array(
array(
'attr_spec_list' => array(
'align' => array(),
),
'tag_spec' => array(),
),
),
'h2' => array(
array(
'attr_spec_list' => array(
'align' => array(),
),
'tag_spec' => array(),
),
array(
'attr_spec_list' => array(
'amp-nested-submenu-close' => array(),
'amp-nested-submenu-open' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-nested-menu',
'spec_name' => 'h2 amp-nested-menu',
),
),
),
'h3' => array(
array(
'attr_spec_list' => array(
'align' => array(),
),
'tag_spec' => array(),
),
array(
'attr_spec_list' => array(
'amp-nested-submenu-close' => array(),
'amp-nested-submenu-open' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-nested-menu',
'spec_name' => 'h3 amp-nested-menu',
),
),
),
'h4' => array(
array(
'attr_spec_list' => array(
'align' => array(),
),
'tag_spec' => array(),
),
array(
'attr_spec_list' => array(
'amp-nested-submenu-close' => array(),
'amp-nested-submenu-open' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-nested-menu',
'spec_name' => 'h4 amp-nested-menu',
),
),
),
'h5' => array(
array(
'attr_spec_list' => array(
'align' => array(),
),
'tag_spec' => array(),
),
array(
'attr_spec_list' => array(
'amp-nested-submenu-close' => array(),
'amp-nested-submenu-open' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-nested-menu',
'spec_name' => 'h5 amp-nested-menu',
),
),
),
'h6' => array(
array(
'attr_spec_list' => array(
'align' => array(),
),
'tag_spec' => array(),
),
array(
'attr_spec_list' => array(
'amp-nested-submenu-close' => array(),
'amp-nested-submenu-open' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-nested-menu',
'spec_name' => 'h6 amp-nested-menu',
),
),
),
'head' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'mandatory' => true,
'mandatory_parent' => 'html',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup',
'unique' => true,
),
),
),
'header' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'hgroup' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'hkern' => array(
array(
'attr_spec_list' => array(
'g1' => array(),
'g2' => array(),
'k' => array(),
'style' => array(),
'u1' => array(),
'u2' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'hr' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'html' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'mandatory' => true,
'mandatory_parent' => '!doctype',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup',
'unique' => true,
),
),
),
'i' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'iframe' => array(
array(
'attr_spec_list' => array(
'frameborder' => array(
'value' => array(
'0',
'1',
),
),
'height' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'referrerpolicy' => array(),
'resizable' => array(
'value' => array(
'',
),
),
'sandbox' => array(),
'scrolling' => array(
'value' => array(
'auto',
'yes',
'no',
),
),
'src' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_relative' => false,
'protocol' => array(
'data',
'https',
),
),
),
'srcdoc' => array(),
'width' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'noscript',
'mandatory_ancestor_suggested_alternative' => 'amp-iframe',
'mandatory_oneof' => array(
'src',
'srcdoc',
),
'spec_url' => 'https://amp.dev/documentation/components/amp-iframe/',
),
),
),
'image' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'preserveaspectratio' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xlink:actuate' => array(),
'xlink:arcrole' => array(),
'xlink:href' => array(
'alternative_names' => array(
'href',
),
'disallowed_value_regex' => '(^|\\s)data:image\\/svg\\+xml',
'value_url' => array(
'allow_empty' => false,
'protocol' => array(
'data',
'http',
'https',
),
),
),
'xlink:role' => array(),
'xlink:show' => array(),
'xlink:title' => array(),
'xlink:type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'img' => array(
array(
'attr_spec_list' => array(
'alt' => array(),
'attribution' => array(),
'border' => array(),
'decoding' => array(
'value' => array(
'async',
'auto',
'sync',
),
),
'height' => array(),
'importance' => array(),
'intrinsicsize' => array(),
'ismap' => array(),
'loading' => array(),
'longdesc' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'sizes' => array(),
'src' => array(
'alternative_names' => array(
'srcset',
),
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'data',
'http',
'https',
),
),
),
'width' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'noscript',
'mandatory_ancestor_suggested_alternative' => 'amp-img',
'spec_name' => 'noscript > img',
'spec_url' => 'https://amp.dev/documentation/components/amp-img/',
),
),
array(
'attr_spec_list' => array(
'alt' => array(),
'attribution' => array(),
'data-amp-story-player-poster-img' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'',
),
),
'decoding' => array(
'value' => array(
'async',
),
),
'height' => array(
'value_regex' => '[0-9]+',
),
'loading' => array(
'mandatory' => true,
'value' => array(
'lazy',
),
),
'sizes' => array(),
'src' => array(
'alternative_names' => array(
'srcset',
),
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'data',
'http',
'https',
),
),
),
'width' => array(
'value_regex' => '[0-9]+',
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'amp-story-player',
'mandatory_parent' => 'a',
'spec_name' => 'amp-story-player > img',
'spec_url' => 'https://amp.dev/documentation/components/amp-story-player/',
),
),
),
'input' => array(
array(
'attr_spec_list' => array(
'accept' => array(),
'accesskey' => array(),
'autocomplete' => array(),
'autofocus' => array(),
'checked' => array(),
'data-amp-bind-accept' => array(),
'data-amp-bind-accesskey' => array(),
'data-amp-bind-autocomplete' => array(),
'data-amp-bind-checked' => array(),
'data-amp-bind-disabled' => array(),
'data-amp-bind-height' => array(),
'data-amp-bind-inputmode' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-maxlength' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-minlength' => array(),
'data-amp-bind-multiple' => array(),
'data-amp-bind-pattern' => array(),
'data-amp-bind-placeholder' => array(),
'data-amp-bind-readonly' => array(),
'data-amp-bind-required' => array(),
'data-amp-bind-selectiondirection' => array(),
'data-amp-bind-size' => array(),
'data-amp-bind-spellcheck' => array(),
'data-amp-bind-step' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'data-amp-bind-width' => array(),
'disabled' => array(),
'enterkeyhint' => array(),
'height' => array(),
'inputmode' => array(),
'list' => array(),
'max' => array(),
'maxlength' => array(),
'min' => array(),
'minlength' => array(),
'multiple' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'no-verify' => array(
'value' => array(
'',
),
),
'pattern' => array(),
'placeholder' => array(),
'readonly' => array(),
'required' => array(),
'selectiondirection' => array(),
'size' => array(),
'spellcheck' => array(),
'step' => array(),
'tabindex' => array(),
'type' => array(
'disallowed_value_regex' => '(^|\\s)(file|image|password|)(\\s|$)',
),
'value' => array(),
'width' => array(),
),
'tag_spec' => array(
'spec_url' => 'https://amp.dev/documentation/components/amp-form/',
),
),
array(
'attr_spec_list' => array(
'accept' => array(),
'accesskey' => array(),
'autocomplete' => array(),
'autofocus' => array(),
'capture' => array(
'value' => array(
'',
),
),
'checked' => array(),
'data-amp-bind-accept' => array(),
'data-amp-bind-accesskey' => array(),
'data-amp-bind-autocomplete' => array(),
'data-amp-bind-checked' => array(),
'data-amp-bind-disabled' => array(),
'data-amp-bind-height' => array(),
'data-amp-bind-inputmode' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-maxlength' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-minlength' => array(),
'data-amp-bind-multiple' => array(),
'data-amp-bind-pattern' => array(),
'data-amp-bind-placeholder' => array(),
'data-amp-bind-readonly' => array(),
'data-amp-bind-required' => array(),
'data-amp-bind-selectiondirection' => array(),
'data-amp-bind-size' => array(),
'data-amp-bind-spellcheck' => array(),
'data-amp-bind-step' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'data-amp-bind-width' => array(),
'disabled' => array(),
'enterkeyhint' => array(),
'height' => array(),
'inputmode' => array(),
'list' => array(),
'max' => array(),
'maxlength' => array(),
'min' => array(),
'minlength' => array(),
'multiple' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'no-verify' => array(
'value' => array(
'',
),
),
'pattern' => array(),
'placeholder' => array(),
'readonly' => array(),
'required' => array(),
'selectiondirection' => array(),
'size' => array(),
'spellcheck' => array(),
'step' => array(),
'tabindex' => array(),
'type' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'file',
),
),
'value' => array(),
'width' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form [method=post]',
'spec_name' => 'INPUT [type=file]',
'spec_url' => 'https://amp.dev/documentation/components/amp-form/',
),
),
array(
'attr_spec_list' => array(
'accept' => array(),
'accesskey' => array(),
'autocomplete' => array(),
'autofocus' => array(),
'checked' => array(),
'data-amp-bind-accept' => array(),
'data-amp-bind-accesskey' => array(),
'data-amp-bind-autocomplete' => array(),
'data-amp-bind-checked' => array(),
'data-amp-bind-disabled' => array(),
'data-amp-bind-height' => array(),
'data-amp-bind-inputmode' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-maxlength' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-minlength' => array(),
'data-amp-bind-multiple' => array(),
'data-amp-bind-pattern' => array(),
'data-amp-bind-placeholder' => array(),
'data-amp-bind-readonly' => array(),
'data-amp-bind-required' => array(),
'data-amp-bind-selectiondirection' => array(),
'data-amp-bind-size' => array(),
'data-amp-bind-spellcheck' => array(),
'data-amp-bind-step' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'data-amp-bind-width' => array(),
'disabled' => array(),
'enterkeyhint' => array(),
'height' => array(),
'inputmode' => array(),
'list' => array(),
'max' => array(),
'maxlength' => array(),
'min' => array(),
'minlength' => array(),
'multiple' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'pattern' => array(),
'placeholder' => array(),
'readonly' => array(),
'required' => array(),
'selectiondirection' => array(),
'size' => array(),
'spellcheck' => array(),
'step' => array(),
'tabindex' => array(),
'type' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'password',
),
),
'value' => array(),
'width' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'form [method=post]',
'spec_name' => 'INPUT [type=password]',
'spec_url' => 'https://amp.dev/documentation/components/amp-form/',
),
),
array(
'attr_spec_list' => array(
'type' => array(
'mandatory' => true,
'value_casei' => array(
'search',
'text',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'amp-autocomplete',
'requires_extension' => array(
'amp-autocomplete',
'amp-form',
),
'spec_name' => 'amp-autocomplete > input',
),
),
array(
'attr_spec_list' => array(
'accept' => array(),
'accesskey' => array(),
'autocomplete' => array(),
'autofocus' => array(),
'checked' => array(),
'data-amp-bind-accept' => array(),
'data-amp-bind-accesskey' => array(),
'data-amp-bind-autocomplete' => array(),
'data-amp-bind-checked' => array(),
'data-amp-bind-disabled' => array(),
'data-amp-bind-height' => array(),
'data-amp-bind-inputmode' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-maxlength' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-minlength' => array(),
'data-amp-bind-multiple' => array(),
'data-amp-bind-pattern' => array(),
'data-amp-bind-placeholder' => array(),
'data-amp-bind-readonly' => array(),
'data-amp-bind-required' => array(),
'data-amp-bind-selectiondirection' => array(),
'data-amp-bind-size' => array(),
'data-amp-bind-spellcheck' => array(),
'data-amp-bind-step' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'data-amp-bind-width' => array(),
'disabled' => array(),
'enterkeyhint' => array(),
'height' => array(),
'inputmode' => array(),
'list' => array(),
'mask' => array(
'disallowed_value_regex' => '(payment-card|date-dd-mm-yyyy|date-mm-dd-yyyy|date-mm-yy|date-yyyy-mm-dd)',
'dispatch_key' => 1,
'mandatory' => true,
),
'mask-output' => array(),
'mask-trim-zeros' => array(
'value_regex' => '\\d+',
),
'max' => array(),
'maxlength' => array(),
'min' => array(),
'minlength' => array(),
'multiple' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'pattern' => array(),
'placeholder' => array(),
'readonly' => array(),
'required' => array(),
'selectiondirection' => array(),
'size' => array(),
'spellcheck' => array(),
'step' => array(),
'tabindex' => array(),
'type' => array(
'value' => array(
'text',
'tel',
'search',
),
),
'value' => array(),
'width' => array(),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-inputmask',
),
'spec_name' => 'input [mask] (custom mask)',
'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/',
),
),
array(
'attr_spec_list' => array(
'accept' => array(),
'accesskey' => array(),
'autocomplete' => array(),
'autofocus' => array(),
'checked' => array(),
'data-amp-bind-accept' => array(),
'data-amp-bind-accesskey' => array(),
'data-amp-bind-autocomplete' => array(),
'data-amp-bind-checked' => array(),
'data-amp-bind-disabled' => array(),
'data-amp-bind-height' => array(),
'data-amp-bind-inputmode' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-maxlength' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-minlength' => array(),
'data-amp-bind-multiple' => array(),
'data-amp-bind-pattern' => array(),
'data-amp-bind-placeholder' => array(),
'data-amp-bind-readonly' => array(),
'data-amp-bind-required' => array(),
'data-amp-bind-selectiondirection' => array(),
'data-amp-bind-size' => array(),
'data-amp-bind-spellcheck' => array(),
'data-amp-bind-step' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'data-amp-bind-width' => array(),
'disabled' => array(),
'enterkeyhint' => array(),
'height' => array(),
'inputmode' => array(),
'list' => array(),
'mask' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'payment-card',
),
),
'mask-output' => array(),
'max' => array(),
'maxlength' => array(),
'min' => array(),
'minlength' => array(),
'multiple' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'pattern' => array(),
'placeholder' => array(),
'readonly' => array(),
'required' => array(),
'selectiondirection' => array(),
'size' => array(),
'spellcheck' => array(),
'step' => array(),
'tabindex' => array(),
'type' => array(
'value' => array(
'text',
'tel',
'search',
),
),
'value' => array(),
'width' => array(),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-inputmask',
),
'spec_name' => 'input [mask=payment-card]',
'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/',
),
),
array(
'attr_spec_list' => array(
'accept' => array(),
'accesskey' => array(),
'autocomplete' => array(),
'autofocus' => array(),
'checked' => array(),
'data-amp-bind-accept' => array(),
'data-amp-bind-accesskey' => array(),
'data-amp-bind-autocomplete' => array(),
'data-amp-bind-checked' => array(),
'data-amp-bind-disabled' => array(),
'data-amp-bind-height' => array(),
'data-amp-bind-inputmode' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-maxlength' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-minlength' => array(),
'data-amp-bind-multiple' => array(),
'data-amp-bind-pattern' => array(),
'data-amp-bind-placeholder' => array(),
'data-amp-bind-readonly' => array(),
'data-amp-bind-required' => array(),
'data-amp-bind-selectiondirection' => array(),
'data-amp-bind-size' => array(),
'data-amp-bind-spellcheck' => array(),
'data-amp-bind-step' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'data-amp-bind-width' => array(),
'disabled' => array(),
'enterkeyhint' => array(),
'height' => array(),
'inputmode' => array(),
'list' => array(),
'mask' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'date-dd-mm-yyyy',
),
),
'mask-output' => array(),
'max' => array(),
'maxlength' => array(),
'min' => array(),
'minlength' => array(),
'multiple' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'pattern' => array(),
'placeholder' => array(),
'readonly' => array(),
'required' => array(),
'selectiondirection' => array(),
'size' => array(),
'spellcheck' => array(),
'step' => array(),
'tabindex' => array(),
'type' => array(
'value' => array(
'text',
'tel',
'search',
),
),
'value' => array(),
'width' => array(),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-inputmask',
),
'spec_name' => 'input [mask=date-dd-mm-yyyy]',
'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/',
),
),
array(
'attr_spec_list' => array(
'accept' => array(),
'accesskey' => array(),
'autocomplete' => array(),
'autofocus' => array(),
'checked' => array(),
'data-amp-bind-accept' => array(),
'data-amp-bind-accesskey' => array(),
'data-amp-bind-autocomplete' => array(),
'data-amp-bind-checked' => array(),
'data-amp-bind-disabled' => array(),
'data-amp-bind-height' => array(),
'data-amp-bind-inputmode' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-maxlength' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-minlength' => array(),
'data-amp-bind-multiple' => array(),
'data-amp-bind-pattern' => array(),
'data-amp-bind-placeholder' => array(),
'data-amp-bind-readonly' => array(),
'data-amp-bind-required' => array(),
'data-amp-bind-selectiondirection' => array(),
'data-amp-bind-size' => array(),
'data-amp-bind-spellcheck' => array(),
'data-amp-bind-step' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'data-amp-bind-width' => array(),
'disabled' => array(),
'enterkeyhint' => array(),
'height' => array(),
'inputmode' => array(),
'list' => array(),
'mask' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'date-mm-dd-yyyy',
),
),
'mask-output' => array(),
'max' => array(),
'maxlength' => array(),
'min' => array(),
'minlength' => array(),
'multiple' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'pattern' => array(),
'placeholder' => array(),
'readonly' => array(),
'required' => array(),
'selectiondirection' => array(),
'size' => array(),
'spellcheck' => array(),
'step' => array(),
'tabindex' => array(),
'type' => array(
'value' => array(
'text',
'tel',
'search',
),
),
'value' => array(),
'width' => array(),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-inputmask',
),
'spec_name' => 'input [mask=date-mm-dd-yyyy]',
'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/',
),
),
array(
'attr_spec_list' => array(
'accept' => array(),
'accesskey' => array(),
'autocomplete' => array(),
'autofocus' => array(),
'checked' => array(),
'data-amp-bind-accept' => array(),
'data-amp-bind-accesskey' => array(),
'data-amp-bind-autocomplete' => array(),
'data-amp-bind-checked' => array(),
'data-amp-bind-disabled' => array(),
'data-amp-bind-height' => array(),
'data-amp-bind-inputmode' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-maxlength' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-minlength' => array(),
'data-amp-bind-multiple' => array(),
'data-amp-bind-pattern' => array(),
'data-amp-bind-placeholder' => array(),
'data-amp-bind-readonly' => array(),
'data-amp-bind-required' => array(),
'data-amp-bind-selectiondirection' => array(),
'data-amp-bind-size' => array(),
'data-amp-bind-spellcheck' => array(),
'data-amp-bind-step' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'data-amp-bind-width' => array(),
'disabled' => array(),
'enterkeyhint' => array(),
'height' => array(),
'inputmode' => array(),
'list' => array(),
'mask' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'date-mm-yy',
),
),
'mask-output' => array(),
'max' => array(),
'maxlength' => array(),
'min' => array(),
'minlength' => array(),
'multiple' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'pattern' => array(),
'placeholder' => array(),
'readonly' => array(),
'required' => array(),
'selectiondirection' => array(),
'size' => array(),
'spellcheck' => array(),
'step' => array(),
'tabindex' => array(),
'type' => array(
'value' => array(
'text',
'tel',
'search',
),
),
'value' => array(),
'width' => array(),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-inputmask',
),
'spec_name' => 'input [mask=date-mm-yy]',
'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/',
),
),
array(
'attr_spec_list' => array(
'accept' => array(),
'accesskey' => array(),
'autocomplete' => array(),
'autofocus' => array(),
'checked' => array(),
'data-amp-bind-accept' => array(),
'data-amp-bind-accesskey' => array(),
'data-amp-bind-autocomplete' => array(),
'data-amp-bind-checked' => array(),
'data-amp-bind-disabled' => array(),
'data-amp-bind-height' => array(),
'data-amp-bind-inputmode' => array(),
'data-amp-bind-max' => array(),
'data-amp-bind-maxlength' => array(),
'data-amp-bind-min' => array(),
'data-amp-bind-minlength' => array(),
'data-amp-bind-multiple' => array(),
'data-amp-bind-pattern' => array(),
'data-amp-bind-placeholder' => array(),
'data-amp-bind-readonly' => array(),
'data-amp-bind-required' => array(),
'data-amp-bind-selectiondirection' => array(),
'data-amp-bind-size' => array(),
'data-amp-bind-spellcheck' => array(),
'data-amp-bind-step' => array(),
'data-amp-bind-type' => array(),
'data-amp-bind-value' => array(),
'data-amp-bind-width' => array(),
'disabled' => array(),
'enterkeyhint' => array(),
'height' => array(),
'inputmode' => array(),
'list' => array(),
'mask' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'date-yyyy-mm-dd',
),
),
'mask-output' => array(),
'max' => array(),
'maxlength' => array(),
'min' => array(),
'minlength' => array(),
'multiple' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
'pattern' => array(),
'placeholder' => array(),
'readonly' => array(),
'required' => array(),
'selectiondirection' => array(),
'size' => array(),
'spellcheck' => array(),
'step' => array(),
'tabindex' => array(),
'type' => array(
'value' => array(
'text',
'tel',
'search',
),
),
'value' => array(),
'width' => array(),
),
'tag_spec' => array(
'requires_extension' => array(
'amp-inputmask',
),
'spec_name' => 'input [mask=date-yyyy-mm-dd]',
'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/',
),
),
),
'ins' => array(
array(
'attr_spec_list' => array(
'cite' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_empty' => true,
'protocol' => array(
'http',
'https',
),
),
),
'datetime' => array(),
),
'tag_spec' => array(),
),
),
'kbd' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'label' => array(
array(
'attr_spec_list' => array(
'for' => array(),
),
'tag_spec' => array(
'spec_url' => 'https://amp.dev/documentation/components/amp-form/',
),
),
),
'legend' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'li' => array(
array(
'attr_spec_list' => array(
'value' => array(
'value_regex' => '[0-9]*',
),
),
'tag_spec' => array(),
),
),
'line' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'sketch:type' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x1' => array(),
'x2' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y1' => array(),
'y2' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'lineargradient' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'gradienttransform' => array(),
'gradientunits' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'shape-rendering' => array(),
'spreadmethod' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x1' => array(),
'x2' => array(),
'xlink:actuate' => array(),
'xlink:arcrole' => array(),
'xlink:href' => array(
'alternative_names' => array(
'href',
),
'value_url' => array(
'allow_empty' => false,
'protocol' => array(
'http',
'https',
),
),
),
'xlink:role' => array(),
'xlink:show' => array(),
'xlink:title' => array(),
'xlink:type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y1' => array(),
'y2' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'link' => array(
array(
'attr_spec_list' => array(
'charset' => array(
'value_casei' => array(
'utf-8',
),
),
'color' => array(),
'crossorigin' => array(),
'href' => array(),
'hreflang' => array(),
'media' => array(),
'rel' => array(
'disallowed_value_regex' => '(^|\\s)(canonical|components|import|manifest|modulepreload|preload|serviceworker|stylesheet|subresource)(\\s|$)',
'mandatory' => true,
),
'sizes' => array(),
'target' => array(),
'type' => array(),
),
'tag_spec' => array(
'disallowed_ancestor' => array(
'template',
),
'spec_name' => 'link rel=',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'charset' => array(
'value_casei' => array(
'utf-8',
),
),
'color' => array(),
'crossorigin' => array(),
'href' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'hreflang' => array(),
'media' => array(),
'rel' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'canonical',
),
),
'sizes' => array(),
'target' => array(),
'type' => array(),
),
'tag_spec' => array(
'mandatory' => true,
'mandatory_parent' => 'head',
'spec_name' => 'link rel=canonical',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'charset' => array(
'value_casei' => array(
'utf-8',
),
),
'color' => array(),
'crossorigin' => array(),
'href' => array(
'disallowed_value_regex' => '__amp_source_origin',
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'https',
),
),
),
'hreflang' => array(),
'media' => array(),
'rel' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'manifest',
),
),
'sizes' => array(),
'target' => array(),
'type' => array(),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'link rel=manifest',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'as' => array(
'mandatory' => true,
'value' => array(
'script',
),
),
'crossorigin' => array(
'mandatory' => true,
'value' => array(
'anonymous',
),
),
'href' => array(
'mandatory' => true,
'value_regex' => '.*\\.mjs$',
),
'rel' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'modulepreload',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'link rel=modulepreload',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'as' => array(),
'charset' => array(
'value_casei' => array(
'utf-8',
),
),
'color' => array(),
'crossorigin' => array(),
'href' => array(),
'hreflang' => array(),
'imagesizes' => array(),
'imagesrcset' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'protocol' => array(
'http',
'https',
),
),
),
'media' => array(),
'rel' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'preload',
),
),
'sizes' => array(),
'target' => array(),
'type' => array(),
),
'tag_spec' => array(
'disallowed_ancestor' => array(
'template',
),
'spec_name' => 'link rel=preload',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'async' => array(),
'crossorigin' => array(),
'href' => array(
'mandatory' => true,
'value_regex' => 'https:\\/\\/cdn\\.materialdesignicons\\.com\\/([0-9]+\\.?)+\\/css\\/materialdesignicons\\.min\\.css|https:\\/\\/cloud\\.typography\\.com\\/[0-9]*\\/[0-9]*\\/css\\/fonts\\.css|https:\\/\\/fast\\.fonts\\.net\\/.*|https:\\/\\/fonts\\.googleapis\\.com\\/css2?\\?.*|https:\\/\\/fonts\\.googleapis\\.com\\/icon\\?.*|https:\\/\\/fonts\\.googleapis\\.com\\/earlyaccess\\/.*\\.css|https:\\/\\/maxcdn\\.bootstrapcdn\\.com\\/font-awesome\\/([0-9]+\\.?)+\\/css\\/font-awesome\\.min\\.css(\\?.*)?|https:\\/\\/(use|pro|kit)\\.fontawesome\\.com\\/releases\\/v([0-9]+\\.?)+\\/css\\/[0-9a-zA-Z-]+\\.css|https:\\/\\/(use|pro|kit)\\.fontawesome\\.com\\/[0-9a-zA-Z-]+\\.css|https:\\/\\/use\\.typekit\\.net\\/[\\w\\p{L}\\p{N}_]+\\.css',
),
'integrity' => array(),
'media' => array(),
'nonce' => array(),
'rel' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'stylesheet',
),
),
'type' => array(
'value_casei' => array(
'text/css',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'link rel=stylesheet for fonts',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#custom-fonts',
),
),
array(
'attr_spec_list' => array(
'charset' => array(
'value_casei' => array(
'utf-8',
),
),
'color' => array(),
'crossorigin' => array(),
'href' => array(
'mandatory' => true,
),
'hreflang' => array(),
'itemprop' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'sameas',
),
),
'media' => array(),
'sizes' => array(),
'target' => array(),
'type' => array(),
),
'tag_spec' => array(
'spec_name' => 'link itemprop=sameAs',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'charset' => array(
'value_casei' => array(
'utf-8',
),
),
'color' => array(),
'crossorigin' => array(),
'href' => array(
'mandatory' => true,
),
'hreflang' => array(),
'itemprop' => array(
'mandatory' => true,
),
'media' => array(),
'sizes' => array(),
'target' => array(),
'type' => array(),
),
'tag_spec' => array(
'spec_name' => 'link itemprop=',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'charset' => array(
'value_casei' => array(
'utf-8',
),
),
'color' => array(),
'crossorigin' => array(),
'href' => array(
'mandatory' => true,
),
'hreflang' => array(),
'media' => array(),
'property' => array(
'mandatory' => true,
),
'sizes' => array(),
'target' => array(),
'type' => array(),
),
'tag_spec' => array(
'spec_name' => 'link property=',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
),
'listing' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'main' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'mark' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'marker' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'markerheight' => array(),
'markerunits' => array(),
'markerwidth' => array(),
'mask' => array(),
'opacity' => array(),
'orient' => array(),
'overflow' => array(),
'pointer-events' => array(),
'preserveaspectratio' => array(),
'refx' => array(),
'refy' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'viewbox' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'mask' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'maskcontentunits' => array(),
'maskunits' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'meta' => array(
array(
'attr_spec_list' => array(
'charset' => array(
'dispatch_key' => 1,
'mandatory' => true,
'value_casei' => array(
'utf-8',
),
),
),
'tag_spec' => array(
'mandatory' => true,
'mandatory_parent' => 'head',
'spec_name' => 'meta charset=utf-8',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
'value_properties' => array(
'height' => array(),
'initial-scale' => array(),
'maximum-scale' => array(),
'minimum-scale' => array(),
'shrink-to-fit' => array(),
'user-scalable' => array(),
'viewport-fit' => array(),
'width' => array(
'mandatory' => true,
'value' => 'device-width',
),
),
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'viewport',
),
),
),
'tag_spec' => array(
'mandatory' => true,
'mandatory_parent' => 'head',
'spec_name' => 'meta name=viewport',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
'value_properties' => array(
'chrome' => array(
'value' => '1',
),
'ie' => array(
'value' => 'edge',
),
),
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'x-ua-compatible',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=X-UA-Compatible',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
'value_regex' => '.*app-id=.*',
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'apple-itunes-app',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=apple-itunes-app',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-experiments-opt-in',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-experiments-opt-in',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
'value_url' => array(
'protocol' => array(
'https',
),
),
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-3p-iframe-src',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-3p-iframe-src',
'spec_url' => 'https://amp.dev/documentation/components/amp-ad/',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-consent-blocking',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-consent-blocking',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-experiment-token',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-experiment-token',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-link-variable-allowed-origin',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-link-variable-allowed-origin',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-google-client-id-api',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-google-clientid-id-api',
),
),
array(
'attr_spec_list' => array(
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-ad-doubleclick-sra',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-ad-doubleclick-sra',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-list-load-more',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-list-load-more',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-recaptcha-input',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-recaptcha-input',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-script-src',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-script-src',
),
),
array(
'attr_spec_list' => array(
'content' => array(),
'itemprop' => array(),
'media' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(amp-.*|amp4ads-.*|apple-itunes-app|content-disposition|revisit-after|viewport)(\\s|$)',
),
'property' => array(),
'scheme' => array(),
),
'tag_spec' => array(
'spec_name' => 'meta name= and content=',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
'value_casei' => array(
'text/html; charset=utf-8',
),
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'content-type',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=Content-Type',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'content-language',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=content-language',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'pics-label',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=pics-label',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'imagetoolbar',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=imagetoolbar',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
'value_casei' => array(
'text/css',
),
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'content-style-type',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=Content-Style-Type',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
'value_casei' => array(
'text/javascript',
),
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'content-script-type',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=Content-Script-Type',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'origin-trial',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=origin-trial',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'resource-type',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=resource-type',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
'value_casei' => array(
'off',
'on',
),
),
'http-equiv' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'x-dns-prefetch-control',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta http-equiv=x-dns-prefetch-control',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-ad-enable-refresh',
),
),
),
'tag_spec' => array(
'mandatory_ancestor' => 'head',
'spec_name' => 'meta name=amp-ad-enable-refresh',
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'amp-to-amp-navigation',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-to-amp-navigation',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'mandatory' => true,
'value_casei' => array(
'amp-story-generator-name',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-story-generator-name',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'content' => array(
'mandatory' => true,
),
'name' => array(
'mandatory' => true,
'value_casei' => array(
'amp-story-generator-version',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'meta name=amp-story-generator-version',
'unique' => true,
),
),
),
'metadata' => array(
array(
'attr_spec_list' => array(
'style' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'meter' => array(
array(
'attr_spec_list' => array(
'high' => array(),
'low' => array(),
'max' => array(),
'min' => array(),
'optimum' => array(),
'value' => array(),
),
'tag_spec' => array(),
),
),
'multicol' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'nav' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
array(
'attr_spec_list' => array(
'toolbar' => array(
'dispatch_key' => 1,
'mandatory' => true,
),
'toolbar-target' => array(
'mandatory' => true,
),
),
'tag_spec' => array(
'child_tags' => array(
'child_tag_name_oneof' => array(
'ol',
'ul',
),
'mandatory_num_child_tags' => 1,
),
'mandatory_parent' => 'amp-sidebar',
'spec_name' => 'amp-sidebar > nav',
),
),
),
'nextid' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'nobr' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'noscript' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'child_tags' => array(
'child_tag_name_oneof' => array(
'style',
),
'mandatory_min_num_child_tags' => 1,
),
'mandatory_parent' => 'head',
'spec_name' => 'noscript enclosure for amp style tags',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amp-boilerplate/?format=websites',
),
),
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'disallowed_ancestor' => array(
'noscript',
),
'mandatory_ancestor' => 'body',
),
),
),
'o:p' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'ol' => array(
array(
'attr_spec_list' => array(
'reversed' => array(
'value' => array(
'',
),
),
'start' => array(
'value_regex' => '[0-9]*',
),
'type' => array(
'value_regex' => '[1AaIi]',
),
),
'tag_spec' => array(),
),
),
'optgroup' => array(
array(
'attr_spec_list' => array(
'data-amp-bind-disabled' => array(),
'data-amp-bind-label' => array(),
'disabled' => array(),
'label' => array(),
),
'tag_spec' => array(
'mandatory_parent' => 'select',
'spec_url' => 'https://amp.dev/documentation/components/amp-form/',
),
),
),
'option' => array(
array(
'attr_spec_list' => array(
'data-amp-bind-disabled' => array(),
'data-amp-bind-label' => array(),
'data-amp-bind-selected' => array(),
'data-amp-bind-value' => array(),
'disabled' => array(),
'label' => array(),
'selected' => array(),
'value' => array(),
),
'tag_spec' => array(
'spec_url' => 'https://amp.dev/documentation/components/amp-form/',
),
),
),
'output' => array(
array(
'attr_spec_list' => array(
'for' => array(),
'form' => array(),
'name' => array(
'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)',
),
),
'tag_spec' => array(),
),
),
'p' => array(
array(
'attr_spec_list' => array(
'align' => array(),
),
'tag_spec' => array(),
),
),
'path' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'd' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pathlength' => array(),
'pointer-events' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'sketch:type' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'pattern' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'patterncontentunits' => array(),
'patterntransform' => array(),
'patternunits' => array(),
'pointer-events' => array(),
'preserveaspectratio' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'viewbox' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xlink:actuate' => array(),
'xlink:arcrole' => array(),
'xlink:href' => array(
'alternative_names' => array(
'href',
),
'value_url' => array(
'allow_empty' => false,
'protocol' => array(
'http',
'https',
),
),
),
'xlink:role' => array(),
'xlink:show' => array(),
'xlink:title' => array(),
'xlink:type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'picture' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(
'mandatory_parent' => 'noscript',
'spec_url' => 'https://amp.dev/documentation/components/amp-img/',
),
),
),
'polygon' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'points' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'sketch:type' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'polyline' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'points' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'shape-rendering' => array(),
'sketch:type' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'pre' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'progress' => array(
array(
'attr_spec_list' => array(
'max' => array(),
'value' => array(),
),
'tag_spec' => array(),
),
),
'q' => array(
array(
'attr_spec_list' => array(
'cite' => array(
'disallowed_value_regex' => '__amp_source_origin',
'value_url' => array(
'allow_empty' => true,
'protocol' => array(
'http',
'https',
),
),
),
),
'tag_spec' => array(),
),
),
'radialgradient' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'cx' => array(),
'cy' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'fr' => array(),
'fx' => array(),
'fy' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'gradienttransform' => array(),
'gradientunits' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'r' => array(),
'shape-rendering' => array(),
'spreadmethod' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'xlink:actuate' => array(),
'xlink:arcrole' => array(),
'xlink:href' => array(
'alternative_names' => array(
'href',
),
'value_url' => array(
'allow_empty' => false,
'protocol' => array(
'http',
'https',
),
),
),
'xlink:role' => array(),
'xlink:show' => array(),
'xlink:title' => array(),
'xlink:type' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'rb' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'rect' => array(
array(
'attr_spec_list' => array(
'alignment-baseline' => array(),
'baseline-shift' => array(),
'clip' => array(),
'clip-path' => array(),
'clip-rule' => array(),
'color' => array(),
'color-interpolation' => array(),
'color-interpolation-filters' => array(),
'color-profile' => array(),
'color-rendering' => array(),
'cursor' => array(),
'direction' => array(),
'display' => array(),
'dominant-baseline' => array(),
'enable-background' => array(),
'externalresourcesrequired' => array(),
'fill' => array(),
'fill-opacity' => array(),
'fill-rule' => array(),
'filter' => array(),
'flood-color' => array(),
'flood-opacity' => array(),
'focusable' => array(),
'font-family' => array(),
'font-size' => array(),
'font-size-adjust' => array(),
'font-stretch' => array(),
'font-style' => array(),
'font-variant' => array(),
'font-weight' => array(),
'glyph-orientation-horizontal' => array(),
'glyph-orientation-vertical' => array(),
'height' => array(),
'image-rendering' => array(),
'kerning' => array(),
'letter-spacing' => array(),
'lighting-color' => array(),
'marker-end' => array(),
'marker-mid' => array(),
'marker-start' => array(),
'mask' => array(),
'opacity' => array(),
'overflow' => array(),
'pointer-events' => array(),
'requiredextensions' => array(),
'requiredfeatures' => array(),
'rx' => array(),
'ry' => array(),
'shape-rendering' => array(),
'sketch:type' => array(),
'stop-color' => array(),
'stop-opacity' => array(),
'stroke' => array(),
'stroke-dasharray' => array(),
'stroke-dashoffset' => array(),
'stroke-linecap' => array(),
'stroke-linejoin' => array(),
'stroke-miterlimit' => array(),
'stroke-opacity' => array(),
'stroke-width' => array(),
'style' => array(),
'systemlanguage' => array(),
'text-anchor' => array(),
'text-decoration' => array(),
'text-rendering' => array(),
'transform' => array(),
'unicode-bidi' => array(),
'vector-effect' => array(),
'visibility' => array(),
'width' => array(),
'word-spacing' => array(),
'writing-mode' => array(),
'x' => array(),
'xml:lang' => array(),
'xml:space' => array(),
'xmlns' => array(),
'xmlns:xlink' => array(),
'y' => array(),
),
'tag_spec' => array(
'mandatory_ancestor' => 'svg',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg',
),
),
),
'rp' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'rt' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'rtc' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'ruby' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
's' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'samp' => array(
array(
'attr_spec_list' => array(),
'tag_spec' => array(),
),
),
'script' => array(
array(
'attr_spec_list' => array(
'async' => array(
'mandatory' => true,
'value' => array(
'',
),
),
'crossorigin' => array(
'value' => array(
'anonymous',
),
),
'nonce' => array(),
'src' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'https://cdn.ampproject.org/v0.js',
),
),
'type' => array(
'value_casei' => array(
'text/javascript',
),
),
),
'cdata' => array(
'disallowed_cdata_regex' => array(
array(
'error_message' => 'contents',
'regex' => '.',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'amphtml engine script',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'async' => array(
'mandatory' => true,
'value' => array(
'',
),
),
'crossorigin' => array(
'value' => array(
'anonymous',
),
),
'nonce' => array(),
'src' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value' => array(
'https://cdn.ampproject.org/lts/v0.js',
),
),
'type' => array(
'value_casei' => array(
'text/javascript',
),
),
),
'cdata' => array(
'disallowed_cdata_regex' => array(
array(
'error_message' => 'contents',
'regex' => '.',
),
),
),
'tag_spec' => array(
'mandatory_parent' => 'head',
'spec_name' => 'amphtml engine script (LTS)',
'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup',
'unique' => true,
),
),
array(
'attr_spec_list' => array(
'nonce' => array(),
'type' => array(
'dispatch_key' => 2,
'mandatory' => true,
'value_casei' => array(
'application/ld+json',
),
),
),
'cdata' => array(
'disallowed_cdata_regex' => array(
array(
'error_message' => 'html comments',
'regex' => '