How to fix «Element 'link', attribute 'href': The attribute 'href' is not allowed» / «The attribute 'src' is required but missing» after upgrading Magento to 2.2?

xml
bug-fix
upgrade
xml-validation
magento22

(Dmitry Fedyuk) #1
1 exception(s):
Exception #0 (Magento\Framework\Config\Dom\ValidationException): Element 'link', attribute 'href': The attribute 'href' is not allowed.
Line: 36

Element 'link': The attribute 'src' is required but missing.
Line: 36


Exception #0 (Magento\Framework\Config\Dom\ValidationException): Element 'link', attribute 'href': The attribute 'href' is not allowed.
Line: 36

Element 'link': The attribute 'src' is required but missing.
Line: 36

#0 vendor\magento\framework\Config\Dom.php(115): Magento\Framework\Config\Dom->_initDom('<layout xmlns:x...')
#1 vendor\magento\framework\ObjectManager\Factory\AbstractFactory.php(111): Magento\Framework\Config\Dom->__construct('<layout xmlns:x...', Object(Magento\Framework\App\Arguments\ValidationState), Array, NULL, 'C:/work/clients...', '%message%\nLine:...')
#2 vendor\magento\framework\ObjectManager\Factory\Dynamic\Developer.php(66): Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject('Magento\\Framewo...', Array)
#3 vendor\magento\framework\ObjectManager\ObjectManager.php(56): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Magento\\Framewo...', Array)
#4 vendor\magento\framework\Config\DomFactory.php(42): Magento\Framework\ObjectManager\ObjectManager->create('Magento\\Framewo...', Array)
#5 vendor\magento\framework\View\Model\Layout\Update\Validator.php(141): Magento\Framework\Config\DomFactory->createDom(Array)
#6 vendor\magento\framework\View\Model\Layout\Merge.php(461): Magento\Framework\View\Model\Layout\Update\Validator->isValid('<layout xmlns:x...', 'layout_merged', false)
#7 vendor\magento\framework\View\Model\Layout\Merge.php(442): Magento\Framework\View\Model\Layout\Merge->_validateMergedLayout('LAYOUT_frontend...', '<referenceConta...')
#8 generated\code\Magento\Framework\View\Model\Layout\Merge\Interceptor.php(193): Magento\Framework\View\Model\Layout\Merge->load(Array)
#9 vendor\magento\framework\View\Layout\Builder.php(86): Magento\Framework\View\Model\Layout\Merge\Interceptor->load()
#10 vendor\magento\framework\View\Layout\Builder.php(63): Magento\Framework\View\Layout\Builder->loadLayoutUpdates()
#11 vendor\magento\framework\View\Layout.php(254): Magento\Framework\View\Layout\Builder->build()
#12 vendor\magento\framework\View\Layout.php(875): Magento\Framework\View\Layout->build()
#13 generated\code\Magento\Framework\View\Layout\Interceptor.php(414): Magento\Framework\View\Layout->getBlock('page_content_he...')
#14 vendor\magento\module-cms\Helper\Page.php(171): Magento\Framework\View\Layout\Interceptor->getBlock('page_content_he...')
#15 vendor\magento\module-cms\Controller\Index\Index.php(43): Magento\Cms\Helper\Page->prepareResultPage(Object(Magento\Cms\Controller\Index\Index\Interceptor), 'preorder')
#16 vendor\magento\framework\Interception\Interceptor.php(58): Magento\Cms\Controller\Index\Index->execute()

How did I upgrade earosacoustic.com from Magento 2.0.2 to 2.2.2?
(Dmitry Fedyuk) #2

In my case, the design theme contained the following declaration:

<link rel="stylesheet" type="text/css" href="https://cloud.typography.com/7742494/6841152/css/fonts.css" src_type="url"/>

I has changed it to:

<link src="https://cloud.typography.com/7742494/6841152/css/fonts.css" src_type="url"/>