diff --git a/core/includes/batch.inc b/core/includes/batch.inc
index 153a7de..f31d9ae 100644
--- a/core/includes/batch.inc
+++ b/core/includes/batch.inc
@@ -121,7 +121,7 @@ function _batch_progress_page() {
     // function), it will output whatever is in the output buffer, followed by
     // the error message.
     ob_start();
-    $fallback = $current_set['error_message'] . '<br />' . $batch['error_message'];
+    $fallback = $current_set['error_message'] . '<br>' . $batch['error_message'];
 
     // We strip the end of the page using a marker in the template, so any
     // additional HTML output by PHP shows up inside the page rather than below
@@ -176,7 +176,7 @@ function _batch_progress_page() {
           'type' => 'setting',
           'data' => array(
             'batch' => array(
-              'errorMessage' => $current_set['error_message'] . '<br />' . $batch['error_message'],
+              'errorMessage' => $current_set['error_message'] . '<br>' . $batch['error_message'],
               'initMessage' => $current_set['init_message'],
               'uri' => $url,
             ),
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 055301c..f561dc4 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -1087,7 +1087,7 @@ function _drupal_exception_handler($exception) {
     if (error_displayable()) {
       print '<h1>Additional uncaught exception thrown while handling exception.</h1>';
       print '<h2>Original</h2><p>' . Error::renderExceptionSafe($exception) . '</p>';
-      print '<h2>Additional</h2><p>' . Error::renderExceptionSafe($exception2) . '</p><hr />';
+      print '<h2>Additional</h2><p>' . Error::renderExceptionSafe($exception2) . '</p><hr>';
     }
   }
 }
@@ -1740,7 +1740,7 @@ function _drupal_shutdown_function() {
       require_once __DIR__ . '/errors.inc';
       if (error_displayable()) {
         print '<h1>Uncaught exception thrown in shutdown function.</h1>';
-        print '<p>' . Error::renderExceptionSafe($exception) . '</p><hr />';
+        print '<p>' . Error::renderExceptionSafe($exception) . '</p><hr>';
       }
     }
     error_log($exception);
diff --git a/core/includes/file.inc b/core/includes/file.inc
index 1166d4e..7666fe6 100644
--- a/core/includes/file.inc
+++ b/core/includes/file.inc
@@ -615,7 +615,7 @@ function file_save_htaccess($directory, $private = TRUE, $force_overwrite = FALS
     return drupal_chmod($htaccess_path, 0444);
   }
   else {
-    $variables = array('%directory' => $directory, '!htaccess' => '<br />' . nl2br(String::checkPlain($htaccess_lines)));
+    $variables = array('%directory' => $directory, '!htaccess' => '<br>' . nl2br(String::checkPlain($htaccess_lines)));
     \Drupal::logger('security')->error("Security warning: Couldn't write .htaccess file. Please create a .htaccess file in your %directory directory which contains the following lines: <code>!htaccess</code>", $variables);
     return FALSE;
   }
diff --git a/core/lib/Drupal/Component/Utility/Html.php b/core/lib/Drupal/Component/Utility/Html.php
index 2b5455f..2d070a2 100644
--- a/core/lib/Drupal/Component/Utility/Html.php
+++ b/core/lib/Drupal/Component/Utility/Html.php
@@ -51,7 +51,7 @@ public static function load($html) {
     $document = <<<EOD
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
 <body>!html</body>
 </html>
 EOD;
diff --git a/core/lib/Drupal/Core/Session/SessionHandler.php b/core/lib/Drupal/Core/Session/SessionHandler.php
index 40d3c45..c8f395a 100644
--- a/core/lib/Drupal/Core/Session/SessionHandler.php
+++ b/core/lib/Drupal/Core/Session/SessionHandler.php
@@ -198,7 +198,7 @@ public function write($sid, $value) {
       // further uncaught exception being thrown.
       if (error_displayable()) {
         print '<h1>Uncaught exception thrown in session handler.</h1>';
-        print '<p>' . Error::renderExceptionSafe($exception) . '</p><hr />';
+        print '<p>' . Error::renderExceptionSafe($exception) . '</p><hr>';
       }
       return FALSE;
     }
diff --git a/core/misc/tableselect.js b/core/misc/tableselect.js
index a55b97c..6dc53ec 100644
--- a/core/misc/tableselect.js
+++ b/core/misc/tableselect.js
@@ -28,7 +28,7 @@
     };
 
     // Find all <th> with class select-all, and insert the check all checkbox.
-    $table.find('th.select-all').prepend($('<input type="checkbox" class="form-checkbox" />').attr('title', strings.selectAll)).on('click', function (event) {
+    $table.find('th.select-all').prepend($('<input type="checkbox" class="form-checkbox">').attr('title', strings.selectAll)).on('click', function (event) {
       if ($(event.target).is('input[type="checkbox"]')) {
         // Loop through all checkboxes and set their state to the select all checkbox' state.
         checkboxes.each(function () {
diff --git a/core/modules/basic_auth/src/Tests/Authentication/BasicAuthTest.php b/core/modules/basic_auth/src/Tests/Authentication/BasicAuthTest.php
index 134ddb2..744b7be 100644
--- a/core/modules/basic_auth/src/Tests/Authentication/BasicAuthTest.php
+++ b/core/modules/basic_auth/src/Tests/Authentication/BasicAuthTest.php
@@ -148,7 +148,7 @@ protected function basicAuthGet($path, $username, $password) {
     );
 
     $this->verbose('GET request to: ' . $path .
-      '<hr />' . $out);
+      '<hr>' . $out);
 
     return $out;
   }
diff --git a/core/modules/book/templates/book-export-html.html.twig b/core/modules/book/templates/book-export-html.html.twig
index cbeb3b3..ecffb14 100644
--- a/core/modules/book/templates/book-export-html.html.twig
+++ b/core/modules/book/templates/book-export-html.html.twig
@@ -23,8 +23,8 @@
   <head>
     <title>{{ title }}</title>
     {{ page.head }}
-    <base href="{{ base_url }}" />
-    <link type="text/css" rel="stylesheet" href="misc/print.css" />
+    <base href="{{ base_url }}">
+    <link type="text/css" rel="stylesheet" href="misc/print.css">
   </head>
   <body>
     {#
diff --git a/core/modules/ckeditor/js/ckeditor.drupalimage.admin.js b/core/modules/ckeditor/js/ckeditor.drupalimage.admin.js
index 1315b24..2292e74 100644
--- a/core/modules/ckeditor/js/ckeditor.drupalimage.admin.js
+++ b/core/modules/ckeditor/js/ckeditor.drupalimage.admin.js
@@ -25,7 +25,7 @@
         var output = '';
         output += Drupal.t('Uploads enabled, max size: @size @dimensions', { '@size': maxFileSize, '@dimensions': maxDimensions });
         if ($scheme.length) {
-          output += '<br />' + $scheme.attr('data-label');
+          output += '<br>' + $scheme.attr('data-label');
         }
         return output;
       });
diff --git a/core/modules/ckeditor/src/Plugin/CKEditorPlugin/StylesCombo.php b/core/modules/ckeditor/src/Plugin/CKEditorPlugin/StylesCombo.php
index 2184cf2..8247857 100644
--- a/core/modules/ckeditor/src/Plugin/CKEditorPlugin/StylesCombo.php
+++ b/core/modules/ckeditor/src/Plugin/CKEditorPlugin/StylesCombo.php
@@ -79,7 +79,7 @@ public function settingsForm(array $form, array &$form_state, Editor $editor) {
       '#title_display' => 'invisible',
       '#type' => 'textarea',
       '#default_value' => $config['styles'],
-      '#description' => t('A list of classes that will be provided in the "Styles" dropdown. Enter one class on each line in the format: element.class|Label. Example: h1.title|Title.<br />These styles should be available in your theme\'s CSS file.'),
+      '#description' => t('A list of classes that will be provided in the "Styles" dropdown. Enter one class on each line in the format: element.class|Label. Example: h1.title|Title.<br>These styles should be available in your theme\'s CSS file.'),
       '#attached' => array(
         'library' => array('ckeditor/drupal.ckeditor.stylescombo.admin'),
       ),
diff --git a/core/modules/content_translation/content_translation.module b/core/modules/content_translation/content_translation.module
index 0d22898..3f55116 100644
--- a/core/modules/content_translation/content_translation.module
+++ b/core/modules/content_translation/content_translation.module
@@ -42,7 +42,7 @@ function content_translation_help($route_name, RouteMatchInterface $route_match)
     case 'language.content_settings_page':
       $output = '';
       if (!\Drupal::languageManager()->isMultilingual()) {
-        $output .= '<br/>' . t('Before you can translate content, there must be at least two languages added on the <a href="!url">languages administration</a> page.', array('!url' => \Drupal::url('language.admin_overview')));
+        $output .= '<br>' . t('Before you can translate content, there must be at least two languages added on the <a href="!url">languages administration</a> page.', array('!url' => \Drupal::url('language.admin_overview')));
       }
       return $output;
   }
diff --git a/core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php b/core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php
index 3474613..5c35c31 100644
--- a/core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php
+++ b/core/modules/editor/src/Tests/EditorFileReferenceFilterTest.php
@@ -75,18 +75,18 @@ function testEditorFileReferenceFilter() {
     $uuid_2 = $image_2->uuid();
 
     $this->pass('No data-editor-file-uuid attribute.');
-    $input = '<img src="llama.jpg" />';
+    $input = '<img src="llama.jpg">';
     $output = $test($input);
     $this->assertIdentical($input, $output->getProcessedText());
 
     $this->pass('One data-editor-file-uuid attribute.');
-    $input = '<img src="llama.jpg" data-editor-file-uuid="' . $uuid . '" />';
+    $input = '<img src="llama.jpg" data-editor-file-uuid="' . $uuid . '">';
     $output = $test($input);
     $this->assertIdentical($input, $output->getProcessedText());
     $this->assertEqual(array('file' => array($id)), $output->getCacheTags());
 
     $this->pass('One data-editor-file-uuid attribute with odd capitalization.');
-    $input = '<img src="llama.jpg" DATA-editor-file-UUID =   "' . $uuid . '" />';
+    $input = '<img src="llama.jpg" DATA-editor-file-UUID =   "' . $uuid . '">';
     $output = $test($input);
     $this->assertIdentical($input, $output->getProcessedText());
     $this->assertEqual(array('file' => array($id)), $output->getCacheTags());
@@ -98,21 +98,21 @@ function testEditorFileReferenceFilter() {
     $this->assertEqual(array('file' => array($id)), $output->getCacheTags());
 
     $this->pass('One data-editor-file-uuid attribute with an invalid value.');
-    $input = '<img src="llama.jpg" data-editor-file-uuid="invalid-' . $uuid . '" />';
+    $input = '<img src="llama.jpg" data-editor-file-uuid="invalid-' . $uuid . '">';
     $output = $test($input);
     $this->assertIdentical($input, $output->getProcessedText());
     $this->assertEqual(array(), $output->getCacheTags());
 
     $this->pass('Two different data-editor-file-uuid attributes.');
-    $input = '<img src="llama.jpg" data-editor-file-uuid="' . $uuid . '" />';
-    $input .= '<img src="alpaca.jpg" data-editor-file-uuid="' . $uuid_2 . '" />';
+    $input = '<img src="llama.jpg" data-editor-file-uuid="' . $uuid . '">';
+    $input .= '<img src="alpaca.jpg" data-editor-file-uuid="' . $uuid_2 . '">';
     $output = $test($input);
     $this->assertIdentical($input, $output->getProcessedText());
     $this->assertEqual(array('file' => array($id, $id_2)), $output->getCacheTags());
 
     $this->pass('Two identical  data-editor-file-uuid attributes.');
-    $input = '<img src="llama.jpg" data-editor-file-uuid="' . $uuid . '" />';
-    $input .= '<img src="llama.jpg" data-editor-file-uuid="' . $uuid . '" />';
+    $input = '<img src="llama.jpg" data-editor-file-uuid="' . $uuid . '">';
+    $input .= '<img src="llama.jpg" data-editor-file-uuid="' . $uuid . '">';
     $output = $test($input);
     $this->assertIdentical($input, $output->getProcessedText());
     $this->assertEqual(array('file' => array($id)), $output->getCacheTags());
diff --git a/core/modules/editor/src/Tests/EditorFileUsageTest.php b/core/modules/editor/src/Tests/EditorFileUsageTest.php
index 184d849..27f1a85 100644
--- a/core/modules/editor/src/Tests/EditorFileUsageTest.php
+++ b/core/modules/editor/src/Tests/EditorFileUsageTest.php
@@ -74,7 +74,7 @@ public function testEditorEntityHooks() {
       'type' => 'page',
       'title' => 'test',
       'body' => array(
-        'value' => '<p>Hello, world!</p><img src="awesome-llama.jpg" data-editor-file-uuid="' . $image->uuid() . '" />',
+        'value' => '<p>Hello, world!</p><img src="awesome-llama.jpg" data-editor-file-uuid="' . $image->uuid() . '">',
         'format' => 'filtered_html',
       ),
       'uid' => 1,
diff --git a/core/modules/editor/src/Tests/EditorSecurityTest.php b/core/modules/editor/src/Tests/EditorSecurityTest.php
index ccac981..da39ba5 100644
--- a/core/modules/editor/src/Tests/EditorSecurityTest.php
+++ b/core/modules/editor/src/Tests/EditorSecurityTest.php
@@ -21,7 +21,7 @@ class EditorSecurityTest extends WebTestBase {
    *
    * @var string
    */
-  protected static $sampleContent = '<p style="color: red">Hello, Dumbo Octopus!</p><script>alert(0)</script><embed type="image/svg+xml" src="image.svg" />';
+  protected static $sampleContent = '<p style="color: red">Hello, Dumbo Octopus!</p><script>alert(0)</script><embed type="image/svg+xml" src="image.svg">';
 
   /**
    * The secured sample content to use in most tests.
@@ -35,7 +35,7 @@ class EditorSecurityTest extends WebTestBase {
    *
    * @var string
    */
-  protected static $sampleContentSecuredEmbedAllowed = '<p>Hello, Dumbo Octopus!</p>alert(0)<embed type="image/svg+xml" src="image.svg" />';
+  protected static $sampleContentSecuredEmbedAllowed = '<p>Hello, Dumbo Octopus!</p>alert(0)<embed type="image/svg+xml" src="image.svg">';
 
   /**
    * Modules to enable.
diff --git a/core/modules/editor/src/Tests/QuickEditIntegrationLoadingTest.php b/core/modules/editor/src/Tests/QuickEditIntegrationLoadingTest.php
index 74ef6fe..3a43feb 100644
--- a/core/modules/editor/src/Tests/QuickEditIntegrationLoadingTest.php
+++ b/core/modules/editor/src/Tests/QuickEditIntegrationLoadingTest.php
@@ -64,7 +64,7 @@ public function setUp() {
       'type' => 'article',
       'body' => array(
         0 => array(
-          'value' => '<p>Do you also love Drupal?</p><img src="druplicon.png" data-caption="Druplicon" />',
+          'value' => '<p>Do you also love Drupal?</p><img src="druplicon.png" data-caption="Druplicon">',
           'format' => 'filtered_html',
         )
       )
@@ -91,7 +91,7 @@ public function testUsersWithoutPermission() {
       $this->drupalGet('node/1');
 
       // Ensure the text is transformed.
-      $this->assertRaw('<p>Do you also love Drupal?</p><figure class="caption caption-img"><img src="druplicon.png" /><figcaption>Druplicon</figcaption></figure>');
+      $this->assertRaw('<p>Do you also love Drupal?</p><figure class="caption caption-img"><img src="druplicon.png"><figcaption>Druplicon</figcaption></figure>');
 
       // Retrieving the untransformed text should result in an empty 403 response.
       $response = $this->drupalPost('editor/' . 'node/1/body/und/full', 'application/vnd.drupal-ajax', array());
@@ -110,14 +110,14 @@ public function testUserWithPermission() {
     $this->drupalGet('node/1');
 
     // Ensure the text is transformed.
-    $this->assertRaw('<p>Do you also love Drupal?</p><figure class="caption caption-img"><img src="druplicon.png" /><figcaption>Druplicon</figcaption></figure>');
+    $this->assertRaw('<p>Do you also love Drupal?</p><figure class="caption caption-img"><img src="druplicon.png"><figcaption>Druplicon</figcaption></figure>');
 
     $response = $this->drupalPost('editor/' . 'node/1/body/und/full', 'application/vnd.drupal-ajax', array());
     $this->assertResponse(200);
     $ajax_commands = Json::decode($response);
     $this->assertIdentical(1, count($ajax_commands), 'The untransformed text POST request results in one AJAX command.');
     $this->assertIdentical('editorGetUntransformedText', $ajax_commands[0]['command'], 'The first AJAX command is an editorGetUntransformedText command.');
-    $this->assertIdentical('<p>Do you also love Drupal?</p><img src="druplicon.png" data-caption="Druplicon" />', $ajax_commands[0]['data'], 'The editorGetUntransformedText command contains the expected data.');
+    $this->assertIdentical('<p>Do you also love Drupal?</p><img src="druplicon.png" data-caption="Druplicon">', $ajax_commands[0]['data'], 'The editorGetUntransformedText command contains the expected data.');
   }
 
 }
diff --git a/core/modules/entity_reference/src/Plugin/views/row/EntityReference.php b/core/modules/entity_reference/src/Plugin/views/row/EntityReference.php
index b975b0a..156d77b 100644
--- a/core/modules/entity_reference/src/Plugin/views/row/EntityReference.php
+++ b/core/modules/entity_reference/src/Plugin/views/row/EntityReference.php
@@ -42,7 +42,7 @@ public function buildOptionsForm(&$form, &$form_state) {
     parent::buildOptionsForm($form, $form_state);
 
     // Expand the description of the 'Inline field' checkboxes.
-    $form['inline']['#description'] .= '<br />' . t("<strong>Note:</strong> In 'Entity Reference' displays, all fields will be displayed inline unless an explicit selection of inline fields is made here." );
+    $form['inline']['#description'] .= '<br>' . t("<strong>Note:</strong> In 'Entity Reference' displays, all fields will be displayed inline unless an explicit selection of inline fields is made here." );
   }
 
   /**
diff --git a/core/modules/field_ui/src/DisplayOverviewBase.php b/core/modules/field_ui/src/DisplayOverviewBase.php
index 8a98e93..81d93b9 100644
--- a/core/modules/field_ui/src/DisplayOverviewBase.php
+++ b/core/modules/field_ui/src/DisplayOverviewBase.php
@@ -404,7 +404,7 @@ protected function buildFieldRow(FieldDefinitionInterface $field_definition, Ent
 
         if (!empty($summary)) {
           $field_row['settings_summary'] = array(
-            '#markup' => '<div class="field-plugin-summary">' . implode('<br />', $summary) . '</div>',
+            '#markup' => '<div class="field-plugin-summary">' . implode('<br>', $summary) . '</div>',
             '#cell_attributes' => array('class' => array('field-plugin-summary-cell')),
           );
         }
diff --git a/core/modules/field_ui/src/Form/FieldInstanceEditForm.php b/core/modules/field_ui/src/Form/FieldInstanceEditForm.php
index 7ac1aff..d41cd4e 100644
--- a/core/modules/field_ui/src/Form/FieldInstanceEditForm.php
+++ b/core/modules/field_ui/src/Form/FieldInstanceEditForm.php
@@ -122,7 +122,7 @@ public function buildForm(array $form, array &$form_state, FieldInstanceConfigIn
       '#title' => $this->t('Help text'),
       '#default_value' => $this->instance->getDescription(),
       '#rows' => 5,
-      '#description' => $this->t('Instructions to present to the user below this field on the editing form.<br />Allowed HTML tags: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())) . '<br />' . $this->t('This field supports tokens.'),
+      '#description' => $this->t('Instructions to present to the user below this field on the editing form.<br>Allowed HTML tags: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())) . '<br>' . $this->t('This field supports tokens.'),
       '#weight' => -10,
     );
 
diff --git a/core/modules/field_ui/src/Tests/ManageDisplayTest.php b/core/modules/field_ui/src/Tests/ManageDisplayTest.php
index ef3ceb3..71ee900 100644
--- a/core/modules/field_ui/src/Tests/ManageDisplayTest.php
+++ b/core/modules/field_ui/src/Tests/ManageDisplayTest.php
@@ -417,7 +417,7 @@ function assertNodeViewTextHelper(EntityInterface $node, $view_mode, $text, $mes
     $clone = clone $node;
     $element = node_view($clone, $view_mode);
     $output = drupal_render($element);
-    $this->verbose(t('Rendered node - view mode: @view_mode', array('@view_mode' => $view_mode)) . '<hr />'. $output);
+    $this->verbose(t('Rendered node - view mode: @view_mode', array('@view_mode' => $view_mode)) . '<hr>'. $output);
 
     // Assign content so that WebTestBase functions can be used.
     $this->drupalSetContent($output);
diff --git a/core/modules/file/templates/file-upload-help.html.twig b/core/modules/file/templates/file-upload-help.html.twig
index fe4d194..093f4d3 100644
--- a/core/modules/file/templates/file-upload-help.html.twig
+++ b/core/modules/file/templates/file-upload-help.html.twig
@@ -11,4 +11,4 @@
  * @ingroup themeable
  */
 #}
-{{ descriptions|join('<br />') }}
+{{ descriptions|join('<br>') }}
diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module
index 9d38bba..32a4310 100644
--- a/core/modules/filter/filter.module
+++ b/core/modules/filter/filter.module
@@ -1121,7 +1121,7 @@ function _filter_autop($text) {
     }
     elseif (!$ignore) {
       $chunk = preg_replace('|\n*$|', '', $chunk) . "\n\n"; // just to make things a little easier, pad the end
-      $chunk = preg_replace('|<br />\s*<br />|', "\n\n", $chunk);
+      $chunk = preg_replace('|<br>\s*<br>|', "\n\n", $chunk);
       $chunk = preg_replace('!(<' . $block . '[^>]*>)!', "\n$1", $chunk); // Space things out a little
       $chunk = preg_replace('!(</' . $block . '>)!', "$1\n\n", $chunk); // Space things out a little
       $chunk = preg_replace("/\n\n+/", "\n\n", $chunk); // take care of duplicates
@@ -1133,9 +1133,9 @@ function _filter_autop($text) {
       $chunk = preg_replace('|<p>\s*</p>\n?|', '', $chunk); // under certain strange conditions it could create a P of entirely whitespace
       $chunk = preg_replace('!<p>\s*(</?' . $block . '[^>]*>)!', "$1", $chunk);
       $chunk = preg_replace('!(</?' . $block . '[^>]*>)\s*</p>!', "$1", $chunk);
-      $chunk = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $chunk); // make line breaks
-      $chunk = preg_replace('!(</?' . $block . '[^>]*>)\s*<br />!', "$1", $chunk);
-      $chunk = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)!', '$1', $chunk);
+      $chunk = preg_replace('|(?<!<br>)\s*\n|', "<br>\n", $chunk); // make line breaks
+      $chunk = preg_replace('!(</?' . $block . '[^>]*>)\s*<br>!', "$1", $chunk);
+      $chunk = preg_replace('!<br>(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)!', '$1', $chunk);
       $chunk = preg_replace('/&([^#])(?![A-Za-z0-9]{1,8};)/', '&amp;$1', $chunk);
     }
     $output .= $chunk;
diff --git a/core/modules/filter/src/Plugin/Filter/FilterHtml.php b/core/modules/filter/src/Plugin/Filter/FilterHtml.php
index 6549168..5bac92d 100644
--- a/core/modules/filter/src/Plugin/Filter/FilterHtml.php
+++ b/core/modules/filter/src/Plugin/Filter/FilterHtml.php
@@ -102,7 +102,7 @@ public function tips($long = FALSE) {
     $output .= '<p>' . $this->t('For more information see W3C\'s <a href="@html-specifications">HTML Specifications</a> or use your favorite search engine to find other sites that explain HTML.', array('@html-specifications' => 'http://www.w3.org/TR/html/')) . '</p>';
     $tips = array(
       'a' => array($this->t('Anchors are used to make links to other pages.'), '<a href="' . $base_url . '">' . String::checkPlain(\Drupal::config('system.site')->get('name')) . '</a>'),
-      'br' => array($this->t('By default line break tags are automatically added, so use this tag to add additional ones. Use of this tag is different because it is not used with an open/close pair like all the others. Use the extra " /" inside the tag to maintain XHTML 1.0 compatibility'), $this->t('Text with <br />line break')),
+      'br' => array($this->t('By default line break tags are automatically added, so use this tag to add additional ones. Use of this tag is different because it is not used with an open/close pair like all the others. Use the extra " /" inside the tag to maintain XHTML 1.0 compatibility'), $this->t('Text with <br>line break')),
       'p' => array($this->t('By default paragraph tags are automatically added, so use this tag to add additional ones.'), '<p>' . $this->t('Paragraph one.') . '</p> <p>' . $this->t('Paragraph two.') . '</p>'),
       'strong' => array($this->t('Strong', array(), array('context' => 'Font weight')), '<strong>' . $this->t('Strong', array(), array('context' => 'Font weight')) . '</strong>'),
       'em' => array($this->t('Emphasized'), '<em>' . $this->t('Emphasized') . '</em>'),
diff --git a/core/modules/filter/src/Tests/FilterHtmlImageSecureTest.php b/core/modules/filter/src/Tests/FilterHtmlImageSecureTest.php
index 4a11cdf..dc9edac 100644
--- a/core/modules/filter/src/Tests/FilterHtmlImageSecureTest.php
+++ b/core/modules/filter/src/Tests/FilterHtmlImageSecureTest.php
@@ -130,7 +130,7 @@ function testImageSource() {
       $comment[] = $image . ':';
       // Hash the image source in a custom test attribute, because it might
       // contain characters that confuse XPath.
-      $comment[] = '<img src="' . $image . '" testattribute="' . hash('sha256', $image) . '" />';
+      $comment[] = '<img src="' . $image . '" testattribute="' . hash('sha256', $image) . '">';
     }
     $edit = array(
       'comment_body[0][value]' => implode("\n", $comment),
diff --git a/core/modules/filter/src/Tests/FilterUnitTest.php b/core/modules/filter/src/Tests/FilterUnitTest.php
index b04a717..72d8b3f 100644
--- a/core/modules/filter/src/Tests/FilterUnitTest.php
+++ b/core/modules/filter/src/Tests/FilterUnitTest.php
@@ -63,32 +63,32 @@ function testCaptionFilter() {
     );
 
     // No data-caption nor data-align attributes.
-    $input = '<img src="llama.jpg" />';
+    $input = '<img src="llama.jpg">';
     $expected = $input;
     $this->assertIdentical($expected, $test($input)->getProcessedText());
 
     // Only data-caption attribute.
-    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" />';
-    $expected = '<figure class="caption caption-img"><img src="llama.jpg" /><figcaption>Loquacious llama!</figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="Loquacious llama!">';
+    $expected = '<figure class="caption caption-img"><img src="llama.jpg"><figcaption>Loquacious llama!</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
 
     // Empty data-caption attribute.
-    $input = '<img src="llama.jpg" data-caption="" />';
-    $expected = '<img src="llama.jpg" />';
+    $input = '<img src="llama.jpg" data-caption="">';
+    $expected = '<img src="llama.jpg">';
     $this->assertIdentical($expected, $test($input)->getProcessedText());
 
     // HTML entities in the caption.
-    $input = '<img src="llama.jpg" data-caption="&ldquo;Loquacious llama!&rdquo;" />';
-    $expected = '<figure class="caption caption-img"><img src="llama.jpg" /><figcaption>“Loquacious llama!”</figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="&ldquo;Loquacious llama!&rdquo;">';
+    $expected = '<figure class="caption caption-img"><img src="llama.jpg"><figcaption>“Loquacious llama!”</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
 
     // HTML encoded as HTML entities in data-caption attribute.
-    $input = '<img src="llama.jpg" data-caption="&lt;em&gt;Loquacious llama!&lt;/em&gt;" />';
-    $expected = '<figure class="caption caption-img"><img src="llama.jpg" /><figcaption><em>Loquacious llama!</em></figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="&lt;em&gt;Loquacious llama!&lt;/em&gt;">';
+    $expected = '<figure class="caption caption-img"><img src="llama.jpg"><figcaption><em>Loquacious llama!</em></figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
@@ -96,89 +96,89 @@ function testCaptionFilter() {
     // HTML (not encoded as HTML entities) in data-caption attribute, which is
     // not allowed by the HTML spec, but may happen when people manually write
     // HTML, so we explicitly support it.
-    $input = '<img src="llama.jpg" data-caption="<em>Loquacious llama!</em>" />';
-    $expected = '<figure class="caption caption-img"><img src="llama.jpg" /><figcaption><em>Loquacious llama!</em></figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="<em>Loquacious llama!</em>">';
+    $expected = '<figure class="caption caption-img"><img src="llama.jpg"><figcaption><em>Loquacious llama!</em></figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
 
     // Security test: attempt an XSS.
-    $input = '<img src="llama.jpg" data-caption="<script>alert(\'Loquacious llama!\')</script>" />';
-    $expected = '<figure class="caption caption-img"><img src="llama.jpg" /><figcaption>alert(\'Loquacious llama!\')</figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="<script>alert(\'Loquacious llama!\')</script>">';
+    $expected = '<figure class="caption caption-img"><img src="llama.jpg"><figcaption>alert(\'Loquacious llama!\')</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
 
     // Only data-align attribute: all 3 allowed values.
-    $input = '<img src="llama.jpg" data-align="left" />';
-    $expected = '<img src="llama.jpg" class="align-left" />';
+    $input = '<img src="llama.jpg" data-align="left">';
+    $expected = '<img src="llama.jpg" class="align-left">';
     $this->assertIdentical($expected, $test($input)->getProcessedText());
-    $input = '<img src="llama.jpg" data-align="center" />';
-    $expected = '<img src="llama.jpg" class="align-center" />';
+    $input = '<img src="llama.jpg" data-align="center">';
+    $expected = '<img src="llama.jpg" class="align-center">';
     $this->assertIdentical($expected, $test($input)->getProcessedText());
-    $input = '<img src="llama.jpg" data-align="right" />';
-    $expected = '<img src="llama.jpg" class="align-right" />';
+    $input = '<img src="llama.jpg" data-align="right">';
+    $expected = '<img src="llama.jpg" class="align-right">';
     $this->assertIdentical($expected, $test($input)->getProcessedText());
 
     // Only data-align attribute: a disallowed value.
-    $input = '<img src="llama.jpg" data-align="left foobar" />';
-    $expected = '<img src="llama.jpg" />';
+    $input = '<img src="llama.jpg" data-align="left foobar">';
+    $expected = '<img src="llama.jpg">';
     $this->assertIdentical($expected, $test($input)->getProcessedText());
 
     // Empty data-align attribute.
-    $input = '<img src="llama.jpg" data-align="" />';
-    $expected = '<img src="llama.jpg" />';
+    $input = '<img src="llama.jpg" data-align="">';
+    $expected = '<img src="llama.jpg">';
     $this->assertIdentical($expected, $test($input)->getProcessedText());
 
     // Both data-caption and data-align attributes: all 3 allowed values for the
     // data-align attribute.
-    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="left" />';
-    $expected = '<figure class="caption caption-img align-left"><img src="llama.jpg" /><figcaption>Loquacious llama!</figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="left">';
+    $expected = '<figure class="caption caption-img align-left"><img src="llama.jpg"><figcaption>Loquacious llama!</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
-    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="center" />';
-    $expected = '<figure class="caption caption-img align-center"><img src="llama.jpg" /><figcaption>Loquacious llama!</figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="center">';
+    $expected = '<figure class="caption caption-img align-center"><img src="llama.jpg"><figcaption>Loquacious llama!</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
-    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="right" />';
-    $expected = '<figure class="caption caption-img align-right"><img src="llama.jpg" /><figcaption>Loquacious llama!</figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="right">';
+    $expected = '<figure class="caption caption-img align-right"><img src="llama.jpg"><figcaption>Loquacious llama!</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
 
     // Both data-caption and data-align attributes, but a disallowed data-align
     // attribute value.
-    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="left foobar" />';
-    $expected = '<figure class="caption caption-img"><img src="llama.jpg" /><figcaption>Loquacious llama!</figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="left foobar">';
+    $expected = '<figure class="caption caption-img"><img src="llama.jpg"><figcaption>Loquacious llama!</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
 
     // Ensure the filter also works with uncommon yet valid attribute quoting.
-    $input = '<img src=llama.jpg data-caption=\'Loquacious llama!\' data-align=right />';
-    $expected = '<figure class="caption caption-img align-right"><img src="llama.jpg" /><figcaption>Loquacious llama!</figcaption></figure>';
+    $input = '<img src=llama.jpg data-caption=\'Loquacious llama!\' data-align=right>';
+    $expected = '<figure class="caption caption-img align-right"><img src="llama.jpg"><figcaption>Loquacious llama!</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
 
     // Security test: attempt to inject an additional class.
-    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="center another-class-here" />';
-    $expected = '<figure class="caption caption-img"><img src="llama.jpg" /><figcaption>Loquacious llama!</figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="center another-class-here">';
+    $expected = '<figure class="caption caption-img"><img src="llama.jpg"><figcaption>Loquacious llama!</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
 
     // Security test: attempt an XSS.
-    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="center \'onclick=\'alert(foo);" />';
-    $expected = '<figure class="caption caption-img"><img src="llama.jpg" /><figcaption>Loquacious llama!</figcaption></figure>';
+    $input = '<img src="llama.jpg" data-caption="Loquacious llama!" data-align="center \'onclick=\'alert(foo);">';
+    $expected = '<figure class="caption caption-img"><img src="llama.jpg"><figcaption>Loquacious llama!</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
     $this->assertIdentical($attached_library, $output->getAssets());
 
     // Finally, ensure that this also works on any other tag.
-    $input = '<video src="llama.jpg" data-caption="Loquacious llama!" />';
+    $input = '<video src="llama.jpg" data-caption="Loquacious llama!">';
     $expected = '<figure class="caption caption-video"><video src="llama.jpg"></video><figcaption>Loquacious llama!</figcaption></figure>';
     $output = $test($input);
     $this->assertIdentical($expected, $output->getProcessedText());
@@ -201,10 +201,10 @@ function testLineBreakFilter() {
     // strings and expectations, we're using "\n" instead of regular newlines
     // here.
     $tests = array(
-      // Single line breaks should be changed to <br /> tags, while paragraphs
+      // Single line breaks should be changed to <br> tags, while paragraphs
       // separated with double line breaks should be enclosed with <p></p> tags.
       "aaa\nbbb\n\nccc" => array(
-        "<p>aaa<br />\nbbb</p>\n<p>ccc</p>" => TRUE,
+        "<p>aaa<br>\nbbb</p>\n<p>ccc</p>" => TRUE,
       ),
       // Skip contents of certain block tags entirely.
       "<script>aaa\nbbb\n\nccc</script>
@@ -236,7 +236,7 @@ function testLineBreakFilter() {
       ),
       "<pre>aaa\nbbb\nccc</pre>\nddd\neee" => array(
         "<pre>aaa\nbbb\nccc</pre>" => TRUE,
-        "<p>ddd<br />\neee</p>" => TRUE,
+        "<p>ddd<br>\neee</p>" => TRUE,
       ),
       // Comments remain unchanged and subsequent lines/paragraphs are
       // transformed normally.
@@ -262,7 +262,7 @@ function testLineBreakFilter() {
     $result = _filter_autop($source);
     $success = $this->assertEqual($result, '<p>' . $source . "</p>\n", 'Line break filter can process very long strings.');
     if (!$success) {
-      $this->verbose("\n" . $source . "\n<hr />\n" . $result);
+      $this->verbose("\n" . $source . "\n<hr>\n" . $result);
     }
   }
 
@@ -307,10 +307,10 @@ function testHtmlFilter() {
     $this->assertNoNormalized($f, 'style', 'HTML filter should always remove style tags.');
 
     // Some tags make CSRF attacks easier, let the user take the risk herself.
-    $f = _filter_html('<img />', $filter);
+    $f = _filter_html('<img>', $filter);
     $this->assertNoNormalized($f, 'img', 'HTML filter should remove img tags on default.');
 
-    $f = _filter_html('<input />', $filter);
+    $f = _filter_html('<input>', $filter);
     $this->assertNoNormalized($f, 'img', 'HTML filter should remove input tags on default.');
 
     // Filtering content of some attributes is infeasible, these shouldn't be
@@ -589,8 +589,8 @@ function testUrlFilter() {
         'href="http://www.example.pooh"' => TRUE,
       ),
       '
-<p>Test &lt;br/&gt;: This is a www.example17.com example <strong>with</strong> various http://www.example18.com tags. *<br/>
- It is important www.example19.com to *<br/>test different URLs and http://www.example20.com in the same paragraph. *<br>
+<p>Test &lt;br/&gt;: This is a www.example17.com example <strong>with</strong> various http://www.example18.com tags. *<br>
+ It is important www.example19.com to *<br>test different URLs and http://www.example20.com in the same paragraph. *<br>
 HTML www.example21.com soup by person@example22.com can litererally http://www.example23.com contain *img*<img> anything. Just a www.example24.com with http://www.example25.com thrown in. www.example26.com from person@example27.com with extra http://www.example28.com.
 ' => array(
         'href="http://www.example17.com"' => TRUE,
@@ -730,8 +730,8 @@ function assertFilteredString($filter, $tests) {
         }
         if (!$success) {
           $this->verbose('Source:<pre>' . String::checkPlain(var_export($source, TRUE)) . '</pre>'
-            . '<hr />' . 'Result:<pre>' . String::checkPlain(var_export($result, TRUE)) . '</pre>'
-            . '<hr />' . ($is_expected ? 'Expected:' : 'Not expected:')
+            . '<hr>' . 'Result:<pre>' . String::checkPlain(var_export($result, TRUE)) . '</pre>'
+            . '<hr>' . ($is_expected ? 'Expected:' : 'Not expected:')
             . '<pre>' . String::checkPlain(var_export($value, TRUE)) . '</pre>'
           );
         }
@@ -793,7 +793,7 @@ function testHtmlCorrectorFilter() {
 
     // XHTML slash for empty elements.
     $f = Html::normalize('<hr><br>');
-    $this->assertEqual($f, '<hr /><br />', 'HTML corrector -- XHTML closing slash.');
+    $this->assertEqual($f, '<hr><br>', 'HTML corrector -- XHTML closing slash.');
 
     $f = Html::normalize('<P>test</P>');
     $this->assertEqual($f, '<p>test</p>', 'HTML corrector -- Convert uppercased tags to proper lowercased ones.');
@@ -801,38 +801,38 @@ function testHtmlCorrectorFilter() {
     $f = Html::normalize('<P>test</p>');
     $this->assertEqual($f, '<p>test</p>', 'HTML corrector -- Convert uppercased tags to proper lowercased ones.');
 
-    $f = Html::normalize('test<hr />');
-    $this->assertEqual($f, 'test<hr />', 'HTML corrector -- Let proper XHTML pass through.');
+    $f = Html::normalize('test<hr>');
+    $this->assertEqual($f, 'test<hr>', 'HTML corrector -- Let proper XHTML pass through.');
 
-    $f = Html::normalize('test<hr/>');
-    $this->assertEqual($f, 'test<hr />', 'HTML corrector -- Let proper XHTML pass through, but ensure there is a single space before the closing slash.');
+    $f = Html::normalize('test<hr>');
+    $this->assertEqual($f, 'test<hr>', 'HTML corrector -- Let proper XHTML pass through, but ensure there is a single space before the closing slash.');
 
-    $f = Html::normalize('test<hr    />');
-    $this->assertEqual($f, 'test<hr />', 'HTML corrector -- Let proper XHTML pass through, but ensure there are not too many spaces before the closing slash.');
+    $f = Html::normalize('test<hr >');
+    $this->assertEqual($f, 'test<hr>', 'HTML corrector -- Let proper XHTML pass through, but ensure there are not too many spaces before the closing slash.');
 
     $f = Html::normalize('<span class="test" />');
     $this->assertEqual($f, '<span class="test"></span>', 'HTML corrector -- Convert XHTML that is properly formed but that would not be compatible with typical HTML user agents.');
 
     $f = Html::normalize('test1<br class="test">test2');
-    $this->assertEqual($f, 'test1<br class="test" />test2', 'HTML corrector -- Automatically close single tags.');
+    $this->assertEqual($f, 'test1<br class="test">test2', 'HTML corrector -- Automatically close single tags.');
 
     $f = Html::normalize('line1<hr>line2');
-    $this->assertEqual($f, 'line1<hr />line2', 'HTML corrector -- Automatically close single tags.');
+    $this->assertEqual($f, 'line1<hr>line2', 'HTML corrector -- Automatically close single tags.');
 
     $f = Html::normalize('line1<HR>line2');
-    $this->assertEqual($f, 'line1<hr />line2', 'HTML corrector -- Automatically close single tags.');
+    $this->assertEqual($f, 'line1<hr>line2', 'HTML corrector -- Automatically close single tags.');
 
     $f = Html::normalize('<img src="http://example.com/test.jpg">test</img>');
-    $this->assertEqual($f, '<img src="http://example.com/test.jpg" />test', 'HTML corrector -- Automatically close single tags.');
+    $this->assertEqual($f, '<img src="http://example.com/test.jpg">test', 'HTML corrector -- Automatically close single tags.');
 
     $f = Html::normalize('<br></br>');
-    $this->assertEqual($f, '<br />', "HTML corrector -- Transform empty tags to a single closed tag if the tag's content model is EMPTY.");
+    $this->assertEqual($f, '<br>', "HTML corrector -- Transform empty tags to a single closed tag if the tag's content model is EMPTY.");
 
     $f = Html::normalize('<div></div>');
     $this->assertEqual($f, '<div></div>', "HTML corrector -- Do not transform empty tags to a single closed tag if the tag's content model is not EMPTY.");
 
-    $f = Html::normalize('<p>line1<br/><hr/>line2</p>');
-    $this->assertEqual($f, '<p>line1<br /></p><hr />line2', 'HTML corrector -- Move non-inline elements outside of inline containers.');
+    $f = Html::normalize('<p>line1<br><hr>line2</p>');
+    $this->assertEqual($f, '<p>line1<br></p><hr>line2', 'HTML corrector -- Move non-inline elements outside of inline containers.');
 
     $f = Html::normalize('<p>line1<div>line2</div></p>');
     $this->assertEqual($f, '<p>line1</p><div>line2</div>', 'HTML corrector -- Move non-inline elements outside of inline containers.');
@@ -841,7 +841,7 @@ function testHtmlCorrectorFilter() {
     $this->assertEqual($f, '<p>test</p><p>test</p>\n', 'HTML corrector -- Auto-close improperly nested tags.');
 
     $f = Html::normalize('<p>Line1<br><STRONG>bold stuff</b>');
-    $this->assertEqual($f, '<p>Line1<br /><strong>bold stuff</strong></p>', 'HTML corrector -- Properly close unclosed tags, and remove useless closing tags.');
+    $this->assertEqual($f, '<p>Line1<br><strong>bold stuff</strong></p>', 'HTML corrector -- Properly close unclosed tags, and remove useless closing tags.');
 
     $f = Html::normalize('test <!-- this is a comment -->');
     $this->assertEqual($f, 'test <!-- this is a comment -->', 'HTML corrector -- Do not touch HTML comments.');
diff --git a/core/modules/filter/tests/filter.url-input.txt b/core/modules/filter/tests/filter.url-input.txt
index 7b33af5..116456c 100644
--- a/core/modules/filter/tests/filter.url-input.txt
+++ b/core/modules/filter/tests/filter.url-input.txt
@@ -13,9 +13,9 @@ person@test.com
 
 What about tags that don't exist <x>like x say www.test.com</x>? And what about tag <pooh>beginning www.test.com with p?</pooh>
 
-Test &lt;br/&gt;: This is just a www.test.com. paragraph <strong>with</strong> some http://www.test.com urls thrown in. *<br/> This is just a www.test.com paragraph *<br/> with some http://www.test.com urls thrown in. *<br/>This is just a www.test.com paragraph person@test.com with some http://www.test.com urls *img*<img/> thrown in. This is just a www.test.com paragraph with some http://www.test.com urls thrown in. This is just a www.test.com paragraph person@test.com with some http://www.test.com urls thrown in.
+Test &lt;br/&gt;: This is just a www.test.com. paragraph <strong>with</strong> some http://www.test.com urls thrown in. *<br/> This is just a www.test.com paragraph *<br/> with some http://www.test.com urls thrown in. *<br>This is just a www.test.com paragraph person@test.com with some http://www.test.com urls *img*<img> thrown in. This is just a www.test.com paragraph with some http://www.test.com urls thrown in. This is just a www.test.com paragraph person@test.com with some http://www.test.com urls thrown in.
 
-This is just a www.test.com paragraph <strong>with</strong> some http://www.test.com urls thrown in. <br /> This is just a www.test.com paragraph with some http://www.test.com urls thrown in. This is just a www.test.com paragraph person@test.com with some http://www.test.com urls thrown in. This is just a www.test.com paragraph with some http://www.test.com urls thrown in. This is just a www.test.com paragraph person@test.com with some http://www.test.com urls thrown in.
+This is just a www.test.com paragraph <strong>with</strong> some http://www.test.com urls thrown in. <br> This is just a www.test.com paragraph with some http://www.test.com urls thrown in. This is just a www.test.com paragraph person@test.com with some http://www.test.com urls thrown in. This is just a www.test.com paragraph with some http://www.test.com urls thrown in. This is just a www.test.com paragraph person@test.com with some http://www.test.com urls thrown in.
 
 The old URL filter has problems with <a title="kind of link www.example.com with text" href="http://www.example.com">this kind of link</a> with www address as part of text in title. www.test.com
 
diff --git a/core/modules/filter/tests/filter.url-output.txt b/core/modules/filter/tests/filter.url-output.txt
index 9cc5073..85a3093 100644
--- a/core/modules/filter/tests/filter.url-output.txt
+++ b/core/modules/filter/tests/filter.url-output.txt
@@ -13,9 +13,9 @@ This is just a <a href="http://www.test.com">www.test.com</a>. paragraph with <a
 
 What about tags that don't exist <x>like x say <a href="http://www.test.com">www.test.com</a></x>? And what about tag <pooh>beginning <a href="http://www.test.com">www.test.com</a> with p?</pooh>
 
-Test &lt;br/&gt;: This is just a <a href="http://www.test.com">www.test.com</a>. paragraph <strong>with</strong> some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. *<br/> This is just a <a href="http://www.test.com">www.test.com</a> paragraph *<br/> with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. *<br/>This is just a <a href="http://www.test.com">www.test.com</a> paragraph <a href="mailto:person@test.com">person@test.com</a> with some <a href="http://www.test.com">http://www.test.com</a> urls *img*<img/> thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph <a href="mailto:person@test.com">person@test.com</a> with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in.
+Test &lt;br/&gt;: This is just a <a href="http://www.test.com">www.test.com</a>. paragraph <strong>with</strong> some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. *<br> This is just a <a href="http://www.test.com">www.test.com</a> paragraph *<br> with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. *<br>This is just a <a href="http://www.test.com">www.test.com</a> paragraph <a href="mailto:person@test.com">person@test.com</a> with some <a href="http://www.test.com">http://www.test.com</a> urls *img*<img> thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph <a href="mailto:person@test.com">person@test.com</a> with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in.
 
-This is just a <a href="http://www.test.com">www.test.com</a> paragraph <strong>with</strong> some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. <br /> This is just a <a href="http://www.test.com">www.test.com</a> paragraph with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph <a href="mailto:person@test.com">person@test.com</a> with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph <a href="mailto:person@test.com">person@test.com</a> with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in.
+This is just a <a href="http://www.test.com">www.test.com</a> paragraph <strong>with</strong> some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. <br> This is just a <a href="http://www.test.com">www.test.com</a> paragraph with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph <a href="mailto:person@test.com">person@test.com</a> with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in. This is just a <a href="http://www.test.com">www.test.com</a> paragraph <a href="mailto:person@test.com">person@test.com</a> with some <a href="http://www.test.com">http://www.test.com</a> urls thrown in.
 
 The old URL filter has problems with <a title="kind of link www.example.com with text" href="http://www.example.com">this kind of link</a> with www address as part of text in title. <a href="http://www.test.com">www.test.com</a>
 
@@ -30,7 +30,7 @@ The old URL filter has problems with <a title="kind of link www.example.com with
 </dl>
 
 <!-- <p>This url http://www.test.com is
- inside a comment containing newlines and 
+ inside a comment containing newlines and
 <em>html</em> tags.</p> -->
 
 This is the end!
\ No newline at end of file
diff --git a/core/modules/filter/tests/filter_test/src/Plugin/Filter/FilterTestReplace.php b/core/modules/filter/tests/filter_test/src/Plugin/Filter/FilterTestReplace.php
index 735c02d..a622b29 100644
--- a/core/modules/filter/tests/filter_test/src/Plugin/Filter/FilterTestReplace.php
+++ b/core/modules/filter/tests/filter_test/src/Plugin/Filter/FilterTestReplace.php
@@ -29,7 +29,7 @@ public function process($text, $langcode) {
     $text = array();
     $text[] = 'Filter: ' . $this->getLabel() . ' (' . $this->getPluginId() . ')';
     $text[] = 'Language: ' . $langcode;
-    return new FilterProcessResult(implode("<br />\n", $text));
+    return new FilterProcessResult(implode("<br>\n", $text));
   }
 
 }
diff --git a/core/modules/forum/forum.module b/core/modules/forum/forum.module
index 0c13945..60851c2 100644
--- a/core/modules/forum/forum.module
+++ b/core/modules/forum/forum.module
@@ -598,7 +598,7 @@ function template_preprocess_forums(&$variables) {
         else {
           $new_replies = '';
           if ($topic->new_replies) {
-            $new_replies = '<br /><a href="' . $topic->new_url . '">' . $topic->new_text . '</a>';
+            $new_replies = '<br><a href="' . $topic->new_url . '">' . $topic->new_text . '</a>';
           }
 
           $row[] = array(
diff --git a/core/modules/forum/templates/forum-list.html.twig b/core/modules/forum/templates/forum-list.html.twig
index 5b41f6a..6fae175 100644
--- a/core/modules/forum/templates/forum-list.html.twig
+++ b/core/modules/forum/templates/forum-list.html.twig
@@ -68,7 +68,7 @@
         <td class="topics">
           {{ forum.num_topics }}
           {% if forum.new_topics == true %}
-            <br />
+            <br>
             <a href="{{ forum.new_url }}">{{ forum.new_text }}</a>
           {% endif %}
         </td>
diff --git a/core/modules/image/src/Tests/ImageDimensionsTest.php b/core/modules/image/src/Tests/ImageDimensionsTest.php
index 48016ea..533aee4 100644
--- a/core/modules/image/src/Tests/ImageDimensionsTest.php
+++ b/core/modules/image/src/Tests/ImageDimensionsTest.php
@@ -73,7 +73,7 @@ function testImageDimensions() {
 
     $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="120" height="60" alt="" />');
+    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="120" height="60" alt="">');
     $this->assertFalse(file_exists($generated_uri), 'Generated file does not exist.');
     $this->drupalGet($url);
     $this->assertResponse(200, 'Image was generated at the URL.');
@@ -94,7 +94,7 @@ function testImageDimensions() {
 
     $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="60" height="120" alt="" />');
+    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="60" height="120" alt="">');
     $this->assertFalse(file_exists($generated_uri), 'Generated file does not exist.');
     $this->drupalGet($url);
     $this->assertResponse(200, 'Image was generated at the URL.');
@@ -116,7 +116,7 @@ function testImageDimensions() {
 
     $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="45" height="90" alt="" />');
+    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="45" height="90" alt="">');
     $this->assertFalse(file_exists($generated_uri), 'Generated file does not exist.');
     $this->drupalGet($url);
     $this->assertResponse(200, 'Image was generated at the URL.');
@@ -138,7 +138,7 @@ function testImageDimensions() {
 
     $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="45" height="90" alt="" />');
+    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="45" height="90" alt="">');
     $this->assertFalse(file_exists($generated_uri), 'Generated file does not exist.');
     $this->drupalGet($url);
     $this->assertResponse(200, 'Image was generated at the URL.');
@@ -156,7 +156,7 @@ function testImageDimensions() {
 
     $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="45" height="90" alt="" />');
+    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="45" height="90" alt="">');
     $this->assertFalse(file_exists($generated_uri), 'Generated file does not exist.');
     $this->drupalGet($url);
     $this->assertResponse(200, 'Image was generated at the URL.');
@@ -177,7 +177,7 @@ function testImageDimensions() {
 
     $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" alt="" />');
+    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" alt="">');
     $this->assertFalse(file_exists($generated_uri), 'Generated file does not exist.');
     $this->drupalGet($url);
     $this->assertResponse(200, 'Image was generated at the URL.');
@@ -197,7 +197,7 @@ function testImageDimensions() {
 
     $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="30" height="30" alt="" />');
+    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" width="30" height="30" alt="">');
     $this->assertFalse(file_exists($generated_uri), 'Generated file does not exist.');
     $this->drupalGet($url);
     $this->assertResponse(200, 'Image was generated at the URL.');
@@ -218,7 +218,7 @@ function testImageDimensions() {
 
     $effect_id = $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" alt="" />');
+    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" alt="">');
     $this->assertFalse(file_exists($generated_uri), 'Generated file does not exist.');
     $this->drupalGet($url);
     $this->assertResponse(200, 'Image was generated at the URL.');
@@ -237,7 +237,7 @@ function testImageDimensions() {
 
     $style->addImageEffect($effect);
     $style->save();
-    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" alt="" />');
+    $this->assertEqual($this->getImageTag($variables), '<img class="image-style-test" src="' . $url . '" alt="">');
   }
 
   /**
diff --git a/core/modules/locale/locale.pages.inc b/core/modules/locale/locale.pages.inc
index 8a07c4c..8a71431 100644
--- a/core/modules/locale/locale.pages.inc
+++ b/core/modules/locale/locale.pages.inc
@@ -285,12 +285,12 @@ function theme_locale_translate_edit_form_strings($variables) {
   foreach (Element::children($form) as $lid) {
     $string = $form[$lid];
     if ($string['plural']['#value']) {
-      $source = drupal_render($string['original_singular']) . '<br />' . drupal_render($string['original_plural']);
+      $source = drupal_render($string['original_singular']) . '<br>' . drupal_render($string['original_plural']);
     }
     else {
       $source = drupal_render($string['original']);
     }
-    $source .= empty($string['context']) ? '' : '<br /><small>' . t('In Context') . ':&nbsp;' . $string['context']['#value'] . '</small>';
+    $source .= empty($string['context']) ? '' : '<br><small>' . t('In Context') . ':&nbsp;' . $string['context']['#value'] . '</small>';
     $rows[] = array(
       array('data' => $source),
       array('data' => $string['translations']),
diff --git a/core/modules/migrate_drupal/src/Tests/Dump/Drupal6AggregatorSettings.php b/core/modules/migrate_drupal/src/Tests/Dump/Drupal6AggregatorSettings.php
index eccb65e..bebd827 100644
--- a/core/modules/migrate_drupal/src/Tests/Dump/Drupal6AggregatorSettings.php
+++ b/core/modules/migrate_drupal/src/Tests/Dump/Drupal6AggregatorSettings.php
@@ -35,7 +35,7 @@ public function load() {
     ))
     ->values(array(
       'name' => 'aggregator_allowed_html_tags',
-      'value' => 's:70:"<a> <b> <br /> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>";',
+      'value' => 's:70:"<a> <b> <br> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>";',
     ))
     ->values(array(
       'name' => 'aggregator_teaser_length',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorConfigsTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorConfigsTest.php
index 9bf5759..40c208c 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorConfigsTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateAggregatorConfigsTest.php
@@ -59,7 +59,7 @@ public function testAggregatorSettings() {
     $this->assertIdentical($config->get('parser'), 'aggregator');
     $this->assertIdentical($config->get('processors'), array('aggregator'));
     $this->assertIdentical($config->get('items.teaser_length'), 600);
-    $this->assertIdentical($config->get('items.allowed_html'), '<a> <b> <br /> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>');
+    $this->assertIdentical($config->get('items.allowed_html'), '<a> <b> <br> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>');
     $this->assertIdentical($config->get('items.expire'), 9676800);
     $this->assertIdentical($config->get('source.list_max'), 3);
     $this->assertConfigSchema(\Drupal::service('config.typed'), 'aggregator.settings', $config->get());
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php b/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php
index 30cd382..25483c8 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListFloatItem.php
@@ -55,9 +55,9 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
    */
   protected function allowedValuesDescription() {
     $description = '<p>' . t('The possible values this field can contain. Enter one value per line, in the format key|label.');
-    $description .= '<br/>' . t('The key is the stored value, and must be numeric. The label will be used in displayed values and edit forms.');
-    $description .= '<br/>' . t('The label is optional: if a line contains a single number, it will be used as key and label.');
-    $description .= '<br/>' . t('Lists of labels are also accepted (one label per line), only if the field does not hold any values yet. Numeric keys will be automatically generated from the positions in the list.');
+    $description .= '<br>' . t('The key is the stored value, and must be numeric. The label will be used in displayed values and edit forms.');
+    $description .= '<br>' . t('The label is optional: if a line contains a single number, it will be used as key and label.');
+    $description .= '<br>' . t('Lists of labels are also accepted (one label per line), only if the field does not hold any values yet. Numeric keys will be automatically generated from the positions in the list.');
     $description .= '</p>';
     $description .= '<p>' . t('Allowed HTML tags in labels: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())) . '</p>';
     return $description;
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListIntegerItem.php b/core/modules/options/src/Plugin/Field/FieldType/ListIntegerItem.php
index c049878..7fb1d03 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListIntegerItem.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListIntegerItem.php
@@ -55,9 +55,9 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
    */
   protected function allowedValuesDescription() {
     $description = '<p>' . t('The possible values this field can contain. Enter one value per line, in the format key|label.');
-    $description .= '<br/>' . t('The key is the stored value, and must be numeric. The label will be used in displayed values and edit forms.');
-    $description .= '<br/>' . t('The label is optional: if a line contains a single number, it will be used as key and label.');
-    $description .= '<br/>' . t('Lists of labels are also accepted (one label per line), only if the field does not hold any values yet. Numeric keys will be automatically generated from the positions in the list.');
+    $description .= '<br>' . t('The key is the stored value, and must be numeric. The label will be used in displayed values and edit forms.');
+    $description .= '<br>' . t('The label is optional: if a line contains a single number, it will be used as key and label.');
+    $description .= '<br>' . t('Lists of labels are also accepted (one label per line), only if the field does not hold any values yet. Numeric keys will be automatically generated from the positions in the list.');
     $description .= '</p>';
     $description .= '<p>' . t('Allowed HTML tags in labels: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())) . '</p>';
     return $description;
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListTextItem.php b/core/modules/options/src/Plugin/Field/FieldType/ListTextItem.php
index 1cf34b4..31787a0 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListTextItem.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListTextItem.php
@@ -57,8 +57,8 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
    */
   protected function allowedValuesDescription() {
     $description = '<p>' . t('The possible values this field can contain. Enter one value per line, in the format key|label.');
-    $description .= '<br/>' . t('The key is the stored value. The label will be used in displayed values and edit forms.');
-    $description .= '<br/>' . t('The label is optional: if a line contains a single string, it will be used as key and label.');
+    $description .= '<br>' . t('The key is the stored value. The label will be used in displayed values and edit forms.');
+    $description .= '<br>' . t('The label is optional: if a line contains a single string, it will be used as key and label.');
     $description .= '</p>';
     $description .= '<p>' . t('Allowed HTML tags in labels: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())) . '</p>';
     return $description;
diff --git a/core/modules/quickedit/js/theme.js b/core/modules/quickedit/js/theme.js
index 4a97130..1cc65e5 100644
--- a/core/modules/quickedit/js/theme.js
+++ b/core/modules/quickedit/js/theme.js
@@ -18,7 +18,7 @@
    */
   Drupal.theme.quickeditBackstage = function (settings) {
     var html = '';
-    html += '<div id="' + settings.id + '" />';
+    html += '<div id="' + settings.id + '">';
     return html;
   };
 
@@ -37,9 +37,9 @@
     html += '<i class="quickedit-toolbar-pointer"></i>';
     html += '<div class="quickedit-toolbar-content">';
     html += '<div class="quickedit-toolbar quickedit-toolbar-entity clearfix icon icon-pencil">';
-    html += '<div class="quickedit-toolbar-label" />';
+    html += '<div class="quickedit-toolbar-label">';
     html += '</div>';
-    html += '<div class="quickedit-toolbar quickedit-toolbar-field clearfix" />';
+    html += '<div class="quickedit-toolbar quickedit-toolbar-field clearfix">';
     html += '</div><div class="quickedit-toolbar-lining"></div></div>';
     return html;
   };
@@ -65,7 +65,7 @@
    *   The corresponding HTML.
    */
   Drupal.theme.quickeditEntityToolbarFence = function () {
-    return '<div id="quickedit-toolbar-fence" />';
+    return '<div id="quickedit-toolbar-fence">';
   };
 
   /**
@@ -78,7 +78,7 @@
    *   The corresponding HTML.
    */
   Drupal.theme.quickeditFieldToolbar = function (settings) {
-    return '<div id="' + settings.id + '" />';
+    return '<div id="' + settings.id + '">';
   };
 
   /**
diff --git a/core/modules/rdf/rdf.module b/core/modules/rdf/rdf.module
index 7bfb13c..95e130c 100644
--- a/core/modules/rdf/rdf.module
+++ b/core/modules/rdf/rdf.module
@@ -570,7 +570,7 @@ function template_preprocess_rdf_metadata(&$variables) {
     // are empty <span> tags in the document. The class can also be used to set
     // a CSS display:none rule in a theme where empty spans affect display.
     $attributes['class'][] = 'rdf-meta';
-    // The XHTML+RDFa doctype allows either <span></span> or <span /> syntax to
+    // The XHTML+RDFa doctype allows either <span></span> or <span> syntax to
     // be used, but for maximum browser compatibility, W3C recommends the
     // former when serving pages using the text/html media type, see
     // http://www.w3.org/TR/xhtml1/#C_3.
diff --git a/core/modules/responsive_image/responsive_image.module b/core/modules/responsive_image/responsive_image.module
index 79e29e2..b602375 100644
--- a/core/modules/responsive_image/responsive_image.module
+++ b/core/modules/responsive_image/responsive_image.module
@@ -280,17 +280,17 @@ function theme_responsive_image_source($variables) {
   $output = array();
   if (isset($variables['media']) && !empty($variables['media'])) {
     if (!isset($variables['srcset'])) {
-      $output[] = '<!-- <source media="' . $variables['media'] . '" src="' . $variables['src'] . '" ' . new Attribute($variables['dimensions']) . ' /> -->';
-      $output[] = '<source media="' . $variables['media'] . '" src="' . $variables['src'] . '" ' . new Attribute($variables['dimensions']) . '/>';
+      $output[] = '<!-- <source media="' . $variables['media'] . '" src="' . $variables['src'] . '" ' . new Attribute($variables['dimensions']) . '> -->';
+      $output[] = '<source media="' . $variables['media'] . '" src="' . $variables['src'] . '" ' . new Attribute($variables['dimensions']) . '>';
     }
     elseif (!isset($variables['src'])) {
-      $output[] = '<!-- <source media="' . $variables['media'] . '" srcset="' . $variables['srcset'] . '" ' . new Attribute($variables['dimensions']) . ' /> -->';
-      $output[] = '<source media="' . $variables['media'] . '" srcset="' . $variables['srcset'] . '" ' . new Attribute($variables['dimensions']) . ' />';
+      $output[] = '<!-- <source media="' . $variables['media'] . '" srcset="' . $variables['srcset'] . '" ' . new Attribute($variables['dimensions']) . '> -->';
+      $output[] = '<source media="' . $variables['media'] . '" srcset="' . $variables['srcset'] . '" ' . new Attribute($variables['dimensions']) . '>';
     }
   }
   else {
-    $output[] = '<!-- <source src="' . $variables['src'] . '" ' . new Attribute($variables['dimensions']) . ' /> -->';
-    $output[] = '<source src="' . $variables['src'] . '" ' . new Attribute($variables['dimensions']) . '/>';
+    $output[] = '<!-- <source src="' . $variables['src'] . '" ' . new Attribute($variables['dimensions']) . '> -->';
+    $output[] = '<source src="' . $variables['src'] . '" ' . new Attribute($variables['dimensions']) . '>';
   }
   return implode("\n", $output);
 }
diff --git a/core/modules/rest/src/Tests/AuthTest.php b/core/modules/rest/src/Tests/AuthTest.php
index a1ae295..5d3e965 100644
--- a/core/modules/rest/src/Tests/AuthTest.php
+++ b/core/modules/rest/src/Tests/AuthTest.php
@@ -104,7 +104,7 @@ protected function basicAuthGet($path, $username, $password) {
     );
 
     $this->verbose('GET request to: ' . $path .
-      '<hr />' . $out);
+      '<hr>' . $out);
 
     return $out;
   }
diff --git a/core/modules/rest/src/Tests/RESTTestBase.php b/core/modules/rest/src/Tests/RESTTestBase.php
index 1e19be2..92b37cd 100644
--- a/core/modules/rest/src/Tests/RESTTestBase.php
+++ b/core/modules/rest/src/Tests/RESTTestBase.php
@@ -150,9 +150,9 @@ protected function httpRequest($url, $method, $body = NULL, $mime_type = NULL) {
     $headers = implode("\n", $headers);
 
     $this->verbose($method . ' request to: ' . $url .
-      '<hr />Code: ' . curl_getinfo($this->curlHandle, CURLINFO_HTTP_CODE) .
-      '<hr />Response headers: ' . $headers .
-      '<hr />Response body: ' . $response);
+      '<hr>Code: ' . curl_getinfo($this->curlHandle, CURLINFO_HTTP_CODE) .
+      '<hr>Response headers: ' . $headers .
+      '<hr>Response body: ' . $response);
 
     return $response;
   }
diff --git a/core/modules/simpletest/simpletest.js b/core/modules/simpletest/simpletest.js
index 7e365bd..f19dc6d 100644
--- a/core/modules/simpletest/simpletest.js
+++ b/core/modules/simpletest/simpletest.js
@@ -31,7 +31,7 @@
       $(context).find('.simpletest-group').once('simpletest-group-select-all', function () {
         var $group = $(this);
         var $cell = $group.find('.simpletest-group-select-all');
-        var $groupCheckbox = $('<input type="checkbox" id="' + $cell.attr('id') + '-group-select-all" class="form-checkbox" />');
+        var $groupCheckbox = $('<input type="checkbox" id="' + $cell.attr('id') + '-group-select-all" class="form-checkbox">');
         var $testCheckboxes = $group.nextUntil('.simpletest-group').find('input[type=checkbox]');
         $cell.append($groupCheckbox);
 
diff --git a/core/modules/simpletest/src/TestBase.php b/core/modules/simpletest/src/TestBase.php
index fb09a1f..304e553 100644
--- a/core/modules/simpletest/src/TestBase.php
+++ b/core/modules/simpletest/src/TestBase.php
@@ -755,7 +755,7 @@ protected function verbose($message) {
       return;
     }
 
-    $message = '<hr />ID #' . $this->verboseId . ' (<a href="' . $this->verboseClassName . '-' . ($this->verboseId - 1) . '.html">Previous</a> | <a href="' . $this->verboseClassName . '-' . ($this->verboseId + 1) . '.html">Next</a>)<hr />' . $message;
+    $message = '<hr>ID #' . $this->verboseId . ' (<a href="' . $this->verboseClassName . '-' . ($this->verboseId - 1) . '.html">Previous</a> | <a href="' . $this->verboseClassName . '-' . ($this->verboseId + 1) . '.html">Next</a>)<hr>' . $message;
     $verbose_filename = $this->verboseDirectory . '/' . $this->verboseClassName . '-' . $this->verboseId . '.html';
     if (file_put_contents($verbose_filename, $message, FILE_APPEND)) {
       $url = $this->verboseDirectoryUrl . '/' . $this->verboseClassName . '-' . $this->verboseId . '.html';
diff --git a/core/modules/simpletest/src/WebTestBase.php b/core/modules/simpletest/src/WebTestBase.php
index e0aaa3e..b6a0bf7 100644
--- a/core/modules/simpletest/src/WebTestBase.php
+++ b/core/modules/simpletest/src/WebTestBase.php
@@ -1509,11 +1509,11 @@ protected function drupalGet($path, array $options = array(), array $headers = a
     }
 
     $verbose = 'GET request to: ' . $path .
-               '<hr />Ending URL: ' . $this->getUrl();
+               '<hr>Ending URL: ' . $this->getUrl();
     if ($this->dumpHeaders) {
-      $verbose .= '<hr />Headers: <pre>' . String::checkPlain(var_export(array_map('trim', $this->headers), TRUE)) . '</pre>';
+      $verbose .= '<hr>Headers: <pre>' . String::checkPlain(var_export(array_map('trim', $this->headers), TRUE)) . '</pre>';
     }
-    $verbose .= '<hr />' . $out;
+    $verbose .= '<hr>' . $out;
 
     $this->verbose($verbose);
     return $out;
@@ -1699,12 +1699,12 @@ protected function drupalPostForm($path, $edit, $submit, array $options = array(
           }
 
           $verbose = 'POST request to: ' . $path;
-          $verbose .= '<hr />Ending URL: ' . $this->getUrl();
+          $verbose .= '<hr>Ending URL: ' . $this->getUrl();
           if ($this->dumpHeaders) {
-            $verbose .= '<hr />Headers: <pre>' . String::checkPlain(var_export(array_map('trim', $this->headers), TRUE)) . '</pre>';
+            $verbose .= '<hr>Headers: <pre>' . String::checkPlain(var_export(array_map('trim', $this->headers), TRUE)) . '</pre>';
           }
-          $verbose .= '<hr />Fields: ' . highlight_string('<?php ' . var_export($post_array, TRUE), TRUE);
-          $verbose .= '<hr />' . $out;
+          $verbose .= '<hr>Fields: ' . highlight_string('<?php ' . var_export($post_array, TRUE), TRUE);
+          $verbose .= '<hr>' . $out;
 
           $this->verbose($verbose);
           return $out;
@@ -1824,9 +1824,9 @@ protected function drupalPostAjaxForm($path, $edit, $triggering_element, $ajax_p
     }
 
     $verbose = 'AJAX POST request to: ' . $path;
-    $verbose .= '<br />AJAX controller path: ' . $ajax_path;
-    $verbose .= '<hr />Ending URL: ' . $this->getUrl();
-    $verbose .= '<hr />' . $this->content;
+    $verbose .= '<br>AJAX controller path: ' . $ajax_path;
+    $verbose .= '<hr>Ending URL: ' . $this->getUrl();
+    $verbose .= '<hr>' . $this->content;
 
     $this->verbose($verbose);
 
@@ -2100,8 +2100,8 @@ protected function drupalHead($path, array $options = array(), array $headers =
 
     if ($this->dumpHeaders) {
       $this->verbose('GET request to: ' . $path .
-                     '<hr />Ending URL: ' . $this->getUrl() .
-                     '<hr />Headers: <pre>' . String::checkPlain(var_export(array_map('trim', $this->headers), TRUE)) . '</pre>');
+                     '<hr>Ending URL: ' . $this->getUrl() .
+                     '<hr>Headers: <pre>' . String::checkPlain(var_export(array_map('trim', $this->headers), TRUE)) . '</pre>');
     }
 
     return $out;
@@ -3119,9 +3119,9 @@ protected function assertNoTitle($title, $message = '', $group = 'Other') {
   protected function assertThemeOutput($callback, array $variables = array(), $expected, $message = '', $group = 'Other') {
     $output = _theme($callback, $variables);
     $this->verbose('Variables:' . '<pre>' .  String::checkPlain(var_export($variables, TRUE)) . '</pre>'
-      . '<hr />' . 'Result:' . '<pre>' .  String::checkPlain(var_export($output, TRUE)) . '</pre>'
-      . '<hr />' . 'Expected:' . '<pre>' .  String::checkPlain(var_export($expected, TRUE)) . '</pre>'
-      . '<hr />' . $output
+      . '<hr>' . 'Result:' . '<pre>' .  String::checkPlain(var_export($output, TRUE)) . '</pre>'
+      . '<hr>' . 'Expected:' . '<pre>' .  String::checkPlain(var_export($expected, TRUE)) . '</pre>'
+      . '<hr>' . $output
     );
     if (!$message) {
       $message = '%callback rendered correctly.';
diff --git a/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php b/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php
index 3bdacac..f6118e7 100644
--- a/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php
+++ b/core/modules/statistics/src/Plugin/Block/StatisticsPopularBlock.php
@@ -122,17 +122,17 @@ public function build() {
 
     if ($this->day_list) {
       $content['top_day'] = $this->day_list;
-      $content['top_day']['#suffix'] = '<br />';
+      $content['top_day']['#suffix'] = '<br>';
     }
 
     if ($this->all_time_list) {
       $content['top_all'] = $this->all_time_list;
-      $content['top_all']['#suffix'] = '<br />';
+      $content['top_all']['#suffix'] = '<br>';
     }
 
     if ($this->last_list) {
       $content['top_last'] = $this->last_list;
-      $content['top_last']['#suffix'] = '<br />';
+      $content['top_last']['#suffix'] = '<br>';
     }
 
     return $content;
diff --git a/core/modules/statistics/statistics.module b/core/modules/statistics/statistics.module
index bce72c7..cb4db82 100644
--- a/core/modules/statistics/statistics.module
+++ b/core/modules/statistics/statistics.module
@@ -189,7 +189,7 @@ function _statistics_link($path, $width = 35) {
  */
 function _statistics_format_item($title, $path) {
   $path = ($path ? $path : '/');
-  $output  = ($title ? "$title<br />" : '');
+  $output  = ($title ? "$title<br>" : '');
   $output .= _statistics_link($path);
   return $output;
 }
diff --git a/core/modules/system/src/Controller/SystemController.php b/core/modules/system/src/Controller/SystemController.php
index b960968..c53398d 100644
--- a/core/modules/system/src/Controller/SystemController.php
+++ b/core/modules/system/src/Controller/SystemController.php
@@ -394,7 +394,7 @@ public static function setLinkActiveClass(array $element, array $context) {
       // Parse it into a DOMDocument so we can reliably read and modify
       // attributes.
       $dom = new \DOMDocument();
-      @$dom->loadHTML('<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>' . $tag . '</body></html>');
+      @$dom->loadHTML('<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>' . $tag . '</body></html>');
       $node = $dom->getElementsByTagName('body')->item(0)->firstChild;
 
       // The language of an active link is equal to the current language.
diff --git a/core/modules/system/src/Tests/Common/AddFeedTest.php b/core/modules/system/src/Tests/Common/AddFeedTest.php
index 9997813..e36eba4 100644
--- a/core/modules/system/src/Tests/Common/AddFeedTest.php
+++ b/core/modules/system/src/Tests/Common/AddFeedTest.php
@@ -85,7 +85,7 @@ function testBasicFeedAddNoTitle() {
   function urlToRSSLinkPattern($url, $title = '') {
     // Escape any regular expression characters in the URL ('?' is the worst).
     $url = preg_replace('/([+?.*])/', '[$0]', $url);
-    $generated_pattern = '%<link +title="' . $title . '" +type="application/rss.xml" +href="' . $url . '" +rel="alternate" */>%';
+    $generated_pattern = '%<link +title="' . $title . '" +type="application/rss.xml" +href="' . $url . '" +rel="alternate" *>%';
     return $generated_pattern;
   }
 
diff --git a/core/modules/system/src/Tests/Common/CascadingStylesheetsTest.php b/core/modules/system/src/Tests/Common/CascadingStylesheetsTest.php
index 9b7e454..1e8946b 100644
--- a/core/modules/system/src/Tests/Common/CascadingStylesheetsTest.php
+++ b/core/modules/system/src/Tests/Common/CascadingStylesheetsTest.php
@@ -79,7 +79,7 @@ function testRenderFile() {
     $this->assertTrue(strpos($styles, $css) > 0, 'Rendered CSS includes the added stylesheet.');
     // Verify that newlines are properly added inside style tags.
     $query_string = $this->container->get('state')->get('system.css_js_query_string') ?: '0';
-    $css_processed = '<link rel="stylesheet" href="' . String::checkPlain(file_create_url($css)) . "?" . $query_string . '" media="all" />';
+    $css_processed = '<link rel="stylesheet" href="' . String::checkPlain(file_create_url($css)) . "?" . $query_string . '" media="all">';
     $this->assertEqual(trim($styles), $css_processed, 'Rendered CSS includes newlines inside style tags for JavaScript use.');
   }
 
diff --git a/core/modules/system/src/Tests/Common/RenderElementTypesTest.php b/core/modules/system/src/Tests/Common/RenderElementTypesTest.php
index 15a1904..7d71263 100644
--- a/core/modules/system/src/Tests/Common/RenderElementTypesTest.php
+++ b/core/modules/system/src/Tests/Common/RenderElementTypesTest.php
@@ -97,7 +97,7 @@ function testHtmlTag() {
         'name' => 'description',
         'content' => 'Drupal test',
       ),
-    ), '<meta name="description" content="Drupal test" />' . "\n", "#type 'html_tag' auto-closure meta tag generation");
+    ), '<meta name="description" content="Drupal test">' . "\n", "#type 'html_tag' auto-closure meta tag generation");
 
     // Test title tag generation.
     $this->assertElements(array(
diff --git a/core/modules/system/src/Tests/Common/RenderWebTest.php b/core/modules/system/src/Tests/Common/RenderWebTest.php
index 4eaba07..9a6fc05 100644
--- a/core/modules/system/src/Tests/Common/RenderWebTest.php
+++ b/core/modules/system/src/Tests/Common/RenderWebTest.php
@@ -156,7 +156,7 @@ protected function assertRenderedElement(array $element, $xpath, array $xpath_ar
     $this->drupalSetContent(drupal_render($element));
     $this->verbose('<pre>' .  String::checkPlain(var_export($original_element, TRUE)) . '</pre>'
       . '<pre>' .  String::checkPlain(var_export($element, TRUE)) . '</pre>'
-      . '<hr />' . $this->drupalGetContent()
+      . '<hr>' . $this->drupalGetContent()
     );
 
     // @see \Drupal\simpletest\WebTestBase::xpath()
diff --git a/core/modules/system/src/Tests/Form/ProgrammaticTest.php b/core/modules/system/src/Tests/Form/ProgrammaticTest.php
index a73f843..6571ddd 100644
--- a/core/modules/system/src/Tests/Form/ProgrammaticTest.php
+++ b/core/modules/system/src/Tests/Form/ProgrammaticTest.php
@@ -87,7 +87,7 @@ private function submitForm($values, $valid_input) {
       '%values' => print_r($values, TRUE),
       '%errors' => $valid_form ? t('None') : implode(' ', $errors),
     );
-    $this->assertTrue($valid_input == $valid_form, format_string('Input values: %values<br />Validation handler errors: %errors', $args));
+    $this->assertTrue($valid_input == $valid_form, format_string('Input values: %values<br>Validation handler errors: %errors', $args));
 
     // We check submitted values only if we have a valid input.
     if ($valid_input) {
diff --git a/core/modules/system/src/Tests/Mail/HtmlToTextTest.php b/core/modules/system/src/Tests/Mail/HtmlToTextTest.php
index 0f17ede..e5f3aaf 100644
--- a/core/modules/system/src/Tests/Mail/HtmlToTextTest.php
+++ b/core/modules/system/src/Tests/Mail/HtmlToTextTest.php
@@ -62,12 +62,12 @@ protected function assertHtmlToText($html, $text, $message, $allowed_tags = NULL
     $result = drupal_html_to_text($html, $allowed_tags);
     $pass = $this->assertEqual($result, $text, String::checkPlain($message));
     $verbose = 'html = <pre>' . $this->stringToHtml($html)
-      . '</pre><br />' . 'result = <pre>' . $this->stringToHtml($result)
-      . '</pre><br />' . 'expected = <pre>' . $this->stringToHtml($text)
+      . '</pre><br>' . 'result = <pre>' . $this->stringToHtml($result)
+      . '</pre><br>' . 'expected = <pre>' . $this->stringToHtml($text)
       . '</pre>';
     $this->verbose($verbose);
     if (!$pass) {
-      $this->pass("Previous test verbose info:<br />$verbose");
+      $this->pass("Previous test verbose info:<br>$verbose");
     }
   }
 
@@ -88,10 +88,10 @@ public function testTags() {
       // @todo There should be a space between the '>' and the text.
       '<blockquote>Drupal</blockquote>' => ">Drupal\n",
       '<blockquote>Drupal</blockquote><blockquote>Drupal</blockquote>' => ">Drupal\n>Drupal\n",
-      '<br />Drupal<br />Drupal<br /><br />Drupal' => "Drupal\nDrupal\nDrupal\n",
-      '<br/>Drupal<br/>Drupal<br/><br/>Drupal' => "Drupal\nDrupal\nDrupal\n",
+      '<br>Drupal<br>Drupal<br><br>Drupal' => "Drupal\nDrupal\nDrupal\n",
+      '<br>Drupal<br>Drupal<br><br>Drupal' => "Drupal\nDrupal\nDrupal\n",
       // @todo There should be two line breaks before the paragraph.
-      '<br/>Drupal<br/>Drupal<br/><br/>Drupal<p>Drupal</p>' => "Drupal\nDrupal\nDrupal\nDrupal\n\n",
+      '<br>Drupal<br>Drupal<br><br>Drupal<p>Drupal</p>' => "Drupal\nDrupal\nDrupal\nDrupal\n\n",
       '<div>Drupal</div>' => "Drupal\n",
       // @todo The <div> tag is currently not supported.
       '<div>Drupal</div><div>Drupal</div>' => "DrupalDrupal\n",
@@ -108,9 +108,9 @@ public function testTags() {
       '<h5>Drupal</h5><p>Drupal</p>' => "Drupal\n\nDrupal\n\n",
       '<h6>Drupal</h6>' => "Drupal\n\n",
       '<h6>Drupal</h6><p>Drupal</p>' => "Drupal\n\nDrupal\n\n",
-      '<hr />Drupal<hr />' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\n",
-      '<hr/>Drupal<hr/>' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\n",
-      '<hr/>Drupal<hr/><p>Drupal</p>' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\nDrupal\n\n",
+      '<hr>Drupal<hr>' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\n",
+      '<hr>Drupal<hr>' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\n",
+      '<hr>Drupal<hr><p>Drupal</p>' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\nDrupal\n\n",
       '<i>Drupal</i>' => "/Drupal/\n",
       '<p>Drupal</p>' => "Drupal\n\n",
       '<p>Drupal</p><p>Drupal</p>' => "Drupal\n\nDrupal\n\n",
@@ -221,7 +221,7 @@ public function testDrupalHtmltoTextCollapsesWhitespace() {
   public function testDrupalHtmlToTextBlockTagToNewline() {
     $input = '[text]'
       . '<blockquote>[blockquote]</blockquote>'
-      . '<br />[br]'
+      . '<br>[br]'
       . '<dl><dt>[dl-dt]</dt>'
       . '<dt>[dt]</dt>'
       . '<dd>[dd]</dd>'
@@ -232,7 +232,7 @@ public function testDrupalHtmlToTextBlockTagToNewline() {
       . '<h4>[h4]</h4>'
       . '<h5>[h5]</h5>'
       . '<h6>[h6]</h6>'
-      . '<hr />[hr]'
+      . '<hr>[hr]'
       . '<ol><li>[ol-li]</li>'
       . '<li>[li]</li>'
       . '<li>[li-ol]</li></ol>'
@@ -259,7 +259,7 @@ public function testDrupalHtmlToTextBlockTagToNewline() {
     if (!$pass) {
       $this->verbose(
         $upper_output
-        . '<br />should  be equal to <br />'
+        . '<br>should  be equal to <br>'
         . $output_upper
       );
     }
@@ -296,9 +296,9 @@ public function testHeaderSeparation() {
   public function testFootnoteReferences() {
     global $base_path, $base_url;
     $source = '<a href="http://www.example.com/node/1">Host and path</a>'
-      . '<br /><a href="http://www.example.com">Host, no path</a>'
-      . '<br /><a href="' . $base_path . 'node/1">Path, no host</a>'
-      . '<br /><a href="node/1">Relative path</a>';
+      . '<br><a href="http://www.example.com">Host, no path</a>'
+      . '<br><a href="' . $base_path . 'node/1">Path, no host</a>'
+      . '<br><a href="node/1">Relative path</a>';
     // @todo Footnote URLs should be absolute.
     $tt = "Host and path [1]"
       . "\nHost, no path [2]"
@@ -321,12 +321,12 @@ public function testFootnoteReferences() {
   public function testDrupalHtmlToTextParagraphs() {
     $tests = array();
     $tests[] = array(
-        'html' => "<p>line 1<br />\nline 2<br />line 3\n<br />line 4</p><p>paragraph</p>",
+        'html' => "<p>line 1<br>\nline 2<br>line 3\n<br>line 4</p><p>paragraph</p>",
         // @todo Trailing line breaks should be trimmed.
         'text' => "line 1\nline 2\nline 3\nline 4\n\nparagraph\n\n",
     );
     $tests[] = array(
-      'html' => "<p>line 1<br /> line 2</p> <p>line 4<br /> line 5</p> <p>0</p>",
+      'html' => "<p>line 1<br> line 2</p> <p>line 4<br> line 5</p> <p>0</p>",
       // @todo Trailing line breaks should be trimmed.
       'text' => "line 1\nline 2\n\nline 4\nline 5\n\n0\n\n",
     );
@@ -348,7 +348,7 @@ public function testDrupalHtmlToTextParagraphs() {
    * <CRLF> is 1000 characters."
    */
   public function testVeryLongLineWrap() {
-    $input = 'Drupal<br /><p>' . str_repeat('x', 2100) . '</><br />Drupal';
+    $input = 'Drupal<br><p>' . str_repeat('x', 2100) . '<><br>Drupal';
     $output = drupal_html_to_text($input);
     $eol = Settings::get('mail_line_endings', PHP_EOL);
 
diff --git a/core/modules/system/src/Tests/System/AdminMetaTagTest.php b/core/modules/system/src/Tests/System/AdminMetaTagTest.php
index 928b1f6..daa676a 100644
--- a/core/modules/system/src/Tests/System/AdminMetaTagTest.php
+++ b/core/modules/system/src/Tests/System/AdminMetaTagTest.php
@@ -29,7 +29,7 @@ public static function getInfo() {
    */
   public function testMetaTag() {
     list($version, ) = explode('.', \Drupal::VERSION);
-    $string = '<meta name="Generator" content="Drupal ' . $version . ' (http://drupal.org)" />';
+    $string = '<meta name="Generator" content="Drupal ' . $version . ' (http://drupal.org)">';
     $this->drupalGet('node');
     $this->assertRaw($string, 'Fingerprinting meta tag generated correctly.', 'System');
   }
diff --git a/core/modules/system/src/Tests/System/DefaultMobileMetaTagsTest.php b/core/modules/system/src/Tests/System/DefaultMobileMetaTagsTest.php
index ce750bf..a1cb5b2 100644
--- a/core/modules/system/src/Tests/System/DefaultMobileMetaTagsTest.php
+++ b/core/modules/system/src/Tests/System/DefaultMobileMetaTagsTest.php
@@ -25,7 +25,7 @@ public static function getInfo() {
   function setUp() {
     parent::setUp();
     $this->default_metatags = array(
-      'viewport' => '<meta name="viewport" content="width=device-width, initial-scale=1.0" />',
+      'viewport' => '<meta name="viewport" content="width=device-width, initial-scale=1.0">',
     );
   }
 
diff --git a/core/modules/system/src/Tests/System/SystemConfigFormTestBase.php b/core/modules/system/src/Tests/System/SystemConfigFormTestBase.php
index b923daf..e8fb3fe 100644
--- a/core/modules/system/src/Tests/System/SystemConfigFormTestBase.php
+++ b/core/modules/system/src/Tests/System/SystemConfigFormTestBase.php
@@ -60,7 +60,7 @@ public function testConfigForm() {
       '%values' => print_r($values, TRUE),
       '%errors' => $valid_form ? t('None') : implode(' ', $errors),
     );
-    $this->assertTrue($valid_form, format_string('Input values: %values<br/>Validation handler errors: %errors', $args));
+    $this->assertTrue($valid_form, format_string('Input values: %values<br>Validation handler errors: %errors', $args));
 
     foreach ($this->values as $data) {
       $this->assertEqual($data['#value'], \Drupal::config($data['#config_name'])->get($data['#config_key']));
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 5edb12f..9d9433e 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -314,7 +314,7 @@ function system_requirements($phase) {
     }
 
     $description .= ' ' . t('You can <a href="@cron">run cron manually</a>.', array('@cron' => url('admin/reports/status/run-cron')));
-    $description .= '<br />' . t('To run cron from outside the site, go to <a href="!cron">!cron</a>', array('!cron' => url('cron/' . \Drupal::state()->get('system.cron_key'), array('absolute' => TRUE))));
+    $description .= '<br>' . t('To run cron from outside the site, go to <a href="!cron">!cron</a>', array('!cron' => url('cron/' . \Drupal::state()->get('system.cron_key'), array('absolute' => TRUE))));
 
     $requirements['cron'] = array(
       'title' => t('Cron maintenance tasks'),
diff --git a/core/modules/system/templates/block--system-branding-block.html.twig b/core/modules/system/templates/block--system-branding-block.html.twig
index 2a12c7a..a7b3958 100644
--- a/core/modules/system/templates/block--system-branding-block.html.twig
+++ b/core/modules/system/templates/block--system-branding-block.html.twig
@@ -18,7 +18,7 @@
 {% block content %}
   {% if site_logo %}
     <a href="{{ url('<front>') }}" title="{{ 'Home'|t }}" rel="home" class="site-logo">
-      <img src="{{ site_logo }}" alt="{{ 'Home'|t }}" />
+      <img src="{{ site_logo }}" alt="{{ 'Home'|t }}">
     </a>
   {% endif %}
   {% if site_name %}
diff --git a/core/modules/system/templates/image.html.twig b/core/modules/system/templates/image.html.twig
index b6b238a..0037ba6 100644
--- a/core/modules/system/templates/image.html.twig
+++ b/core/modules/system/templates/image.html.twig
@@ -11,4 +11,4 @@
  * @ingroup themeable
  */
 #}
-<img{{ attributes }} />
+<img{{ attributes }}>
diff --git a/core/modules/system/templates/input.html.twig b/core/modules/system/templates/input.html.twig
index 1409c25..175aa82 100644
--- a/core/modules/system/templates/input.html.twig
+++ b/core/modules/system/templates/input.html.twig
@@ -12,4 +12,4 @@
  * @ingroup themeable
  */
 #}
-<input{{ attributes }} />{{ children }}
+<input{{ attributes }}>{{ children }}
diff --git a/core/modules/system/templates/maintenance-page.html.twig b/core/modules/system/templates/maintenance-page.html.twig
index fd780d4..612a07c 100644
--- a/core/modules/system/templates/maintenance-page.html.twig
+++ b/core/modules/system/templates/maintenance-page.html.twig
@@ -16,7 +16,7 @@
   <header role="banner">
     {% if logo %}
       <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home">
-        <img src="{{ logo }}" alt="{{ 'Home'|t }}"/>
+        <img src="{{ logo }}" alt="{{ 'Home'|t }}">
       </a>
     {% endif %}
 
diff --git a/core/modules/system/templates/page.html.twig b/core/modules/system/templates/page.html.twig
index ba013a2..7c5b57c 100644
--- a/core/modules/system/templates/page.html.twig
+++ b/core/modules/system/templates/page.html.twig
@@ -68,7 +68,7 @@
   <header role="banner">
     {% if logo %}
       <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home">
-        <img src="{{ logo }}" alt="{{ 'Home'|t }}"/>
+        <img src="{{ logo }}" alt="{{ 'Home'|t }}">
       </a>
     {% endif %}
 
diff --git a/core/modules/system/templates/table.html.twig b/core/modules/system/templates/table.html.twig
index ce69286..4c0d7c7 100644
--- a/core/modules/system/templates/table.html.twig
+++ b/core/modules/system/templates/table.html.twig
@@ -45,11 +45,11 @@
     {% if colgroup.cols %}
       <colgroup{{ colgroup.attributes }}>
         {% for col in colgroup.cols %}
-          <col{{ col.attributes }} />
+          <col{{ col.attributes }}>
         {% endfor %}
       </colgroup>
     {% else %}
-      <colgroup{{ colgroup.attributes }} />
+      <colgroup{{ colgroup.attributes }}>
     {% endif %}
   {% endfor %}
 
diff --git a/core/modules/system/templates/tablesort-indicator.html.twig b/core/modules/system/templates/tablesort-indicator.html.twig
index 1f0eb9d..2243641 100644
--- a/core/modules/system/templates/tablesort-indicator.html.twig
+++ b/core/modules/system/templates/tablesort-indicator.html.twig
@@ -10,7 +10,7 @@
  */
 #}
 {% if style == 'asc' -%}
-  <img src="{{ url('core/misc/arrow-asc.png') }}" width="13" height="13" alt="{{ 'sort ascending'|t }}" title="{{ 'sort ascending'|t }}" />
+  <img src="{{ url('core/misc/arrow-asc.png') }}" width="13" height="13" alt="{{ 'sort ascending'|t }}" title="{{ 'sort ascending'|t }}">
 {% else -%}
-  <img src="{{ url('core/misc/arrow-desc.png') }}" width="13" height="13" alt="{{ 'sort descending'|t }}" title="{{ 'sort descending'|t }}" />
+  <img src="{{ url('core/misc/arrow-desc.png') }}" width="13" height="13" alt="{{ 'sort descending'|t }}" title="{{ 'sort descending'|t }}">
 {% endif %}
diff --git a/core/modules/system/tests/modules/batch_test/batch_test.callbacks.inc b/core/modules/system/tests/modules/batch_test/batch_test.callbacks.inc
index ca1ea6f..c8c3ef8 100644
--- a/core/modules/system/tests/modules/batch_test/batch_test.callbacks.inc
+++ b/core/modules/system/tests/modules/batch_test/batch_test.callbacks.inc
@@ -91,7 +91,7 @@ function _batch_test_finished_helper($batch_id, $success, $results, $operations)
   if (!$success) {
     // A fatal error occurred during the processing.
     $error_operation = reset($operations);
-    $messages[] = t('An error occurred while processing @op with arguments:<br />@args', array('@op' => $error_operation[0], '@args' => print_r($error_operation[1], TRUE)));
+    $messages[] = t('An error occurred while processing @op with arguments:<br>@args', array('@op' => $error_operation[0], '@args' => print_r($error_operation[1], TRUE)));
   }
 
   drupal_set_message(implode('<br>', $messages));
diff --git a/core/modules/system/tests/modules/batch_test/batch_test.module b/core/modules/system/tests/modules/batch_test/batch_test.module
index b97f966..4d6d4c3 100644
--- a/core/modules/system/tests/modules/batch_test/batch_test.module
+++ b/core/modules/system/tests/modules/batch_test/batch_test.module
@@ -60,7 +60,7 @@ function batch_test_multistep_form($form, &$form_state) {
   }
 
   $form['step_display'] = array(
-    '#markup' => 'step ' . $form_state['storage']['step'] . '<br/>',
+    '#markup' => 'step ' . $form_state['storage']['step'] . '<br>',
   );
   $form['submit'] = array(
     '#type' => 'submit',
diff --git a/core/modules/system/tests/themes/test_theme/templates/theme-test-specific-suggestions--variant--foo.html.twig b/core/modules/system/tests/themes/test_theme/templates/theme-test-specific-suggestions--variant--foo.html.twig
index 7e0b485..826b43d 100644
--- a/core/modules/system/tests/themes/test_theme/templates/theme-test-specific-suggestions--variant--foo.html.twig
+++ b/core/modules/system/tests/themes/test_theme/templates/theme-test-specific-suggestions--variant--foo.html.twig
@@ -2,4 +2,4 @@
 Template overridden based on suggestion alter hook determined by the base hook.
 
 <p>Theme hook suggestions:
-{{ theme_hook_suggestions|join("<br />") }}</p>
+{{ theme_hook_suggestions|join("<br>") }}</p>
diff --git a/core/modules/system/tests/themes/test_theme/templates/theme-test-specific-suggestions--variant.html.twig b/core/modules/system/tests/themes/test_theme/templates/theme-test-specific-suggestions--variant.html.twig
index 655db4e..c70f600 100644
--- a/core/modules/system/tests/themes/test_theme/templates/theme-test-specific-suggestions--variant.html.twig
+++ b/core/modules/system/tests/themes/test_theme/templates/theme-test-specific-suggestions--variant.html.twig
@@ -2,4 +2,4 @@
 Template matching the specific theme call.
 
 <p>Theme hook suggestions:
-{{ theme_hook_suggestions|join("<br />") }}</p>
+{{ theme_hook_suggestions|join("<br>") }}</p>
diff --git a/core/modules/text/src/Tests/TextSummaryTest.php b/core/modules/text/src/Tests/TextSummaryTest.php
index b287a62..4cf9d14 100644
--- a/core/modules/text/src/Tests/TextSummaryTest.php
+++ b/core/modules/text/src/Tests/TextSummaryTest.php
@@ -82,14 +82,14 @@ function testLength() {
     ))->save();
 
     // This string tests a number of edge cases.
-    $text = "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>";
+    $text = "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>";
 
     // The summaries we expect text_summary() to return when $size is the index
     // of each array item.
     // Using no text format:
     $format = NULL;
     $i = 0;
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
     $this->assertTextSummary($text, "<", $format, $i++);
     $this->assertTextSummary($text, "<p", $format, $i++);
     $this->assertTextSummary($text, "<p>", $format, $i++);
@@ -124,14 +124,14 @@ function testLength() {
     $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++);
     $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++);
     $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++);
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
 
     // Using a text format with filter_autop enabled.
     $format = 'autop';
     $i = 0;
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
     $this->assertTextSummary($text, "<", $format, $i++);
     $this->assertTextSummary($text, "<p", $format, $i++);
     $this->assertTextSummary($text, "<p>", $format, $i++);
@@ -166,14 +166,14 @@ function testLength() {
     $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++);
     $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++);
     $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++);
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
 
     // Using a text format with filter_autop and filter_htmlcorrector enabled.
     $format = 'autop_correct';
     $i = 0;
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
     $this->assertTextSummary($text, "", $format, $i++);
     $this->assertTextSummary($text, "<p></p>", $format, $i++);
     $this->assertTextSummary($text, "<p></p>", $format, $i++);
@@ -208,9 +208,9 @@ function testLength() {
     $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++);
     $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++);
     $this->assertTextSummary($text, "<p>\nHi\n</p>", $format, $i++);
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
-    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br />\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
+    $this->assertTextSummary($text, "<p>\nHi\n</p>\n<p>\nfolks\n<br>\n!\n</p>", $format, $i++);
   }
 
   /**
diff --git a/core/modules/text/text.module b/core/modules/text/text.module
index 1612487..f4b1d09 100644
--- a/core/modules/text/text.module
+++ b/core/modules/text/text.module
@@ -120,7 +120,7 @@ function text_summary($text, $format = NULL, $size = NULL) {
   $break_points[] = array('</p>' => 0);
 
   // If no complete paragraph then treat line breaks as paragraphs.
-  $line_breaks = array('<br />' => 6, '<br>' => 4);
+  $line_breaks = array('<br>' => 6, '<br>' => 4);
   // Newline only indicates a line break if line break converter
   // filter is present.
   if (isset($format) && $filters->has('filter_autop') && $filters->get('filter_autop')->status) {
diff --git a/core/modules/tracker/tracker.pages.inc b/core/modules/tracker/tracker.pages.inc
index 7baf977..432210f 100644
--- a/core/modules/tracker/tracker.pages.inc
+++ b/core/modules/tracker/tracker.pages.inc
@@ -77,7 +77,7 @@ function tracker_page($account = NULL) {
         $comments = $node->comment_count;
 
         if ($new = \Drupal::service('comment.manager')->getCountNewComments($node)) {
-          $comments .= '<br />';
+          $comments .= '<br>';
           $comments .= l(format_plural($new, '1 new', '@count new'), 'node/' . $node->id(), array('fragment' => 'new'));
         }
       }
diff --git a/core/modules/user/src/RegisterForm.php b/core/modules/user/src/RegisterForm.php
index ddbbcc0..2fe7ec2 100644
--- a/core/modules/user/src/RegisterForm.php
+++ b/core/modules/user/src/RegisterForm.php
@@ -152,7 +152,7 @@ public function save(array $form, array &$form_state) {
     // Administrator approval required.
     else {
       _user_mail_notify('register_pending_approval', $account);
-      drupal_set_message($this->t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.<br />In the meantime, a welcome message with further instructions has been sent to your email address.'));
+      drupal_set_message($this->t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.<br>In the meantime, a welcome message with further instructions has been sent to your email address.'));
       $form_state['redirect_route']['route_name'] = '<front>';
     }
   }
diff --git a/core/modules/user/user.permissions.js b/core/modules/user/user.permissions.js
index 415fc53..9c56f62 100644
--- a/core/modules/user/user.permissions.js
+++ b/core/modules/user/user.permissions.js
@@ -31,7 +31,7 @@
         // submitted form. If we'd automatically check existing checkboxes, the
         // permission table would be polluted with redundant entries. This
         // is deliberate, but desirable when we automatically check them.
-        var $dummy = $('<input type="checkbox" class="dummy-checkbox" disabled="disabled" checked="checked" />')
+        var $dummy = $('<input type="checkbox" class="dummy-checkbox" disabled="disabled" checked="checked">')
           .attr('title', Drupal.t("This permission is inherited from the authenticated user role."))
           .hide();
 
diff --git a/core/modules/views/src/Plugin/entity_reference/selection/ViewsSelection.php b/core/modules/views/src/Plugin/entity_reference/selection/ViewsSelection.php
index aa84db2..c52ae4d 100644
--- a/core/modules/views/src/Plugin/entity_reference/selection/ViewsSelection.php
+++ b/core/modules/views/src/Plugin/entity_reference/selection/ViewsSelection.php
@@ -89,7 +89,7 @@ public static function settingsForm(FieldDefinitionInterface $field_definition)
         '#required' => TRUE,
         '#options' => $options,
         '#default_value' => $default,
-        '#description' => '<p>' . t('Choose the view and display that select the entities that can be referenced.<br />Only views with a display of type "Entity Reference" are eligible.') . '</p>',
+        '#description' => '<p>' . t('Choose the view and display that select the entities that can be referenced.<br>Only views with a display of type "Entity Reference" are eligible.') . '</p>',
       );
 
       $default = !empty($view_settings['arguments']) ? implode(', ', $view_settings['arguments']) : '';
diff --git a/core/tests/Drupal/Tests/Component/Utility/XssTest.php b/core/tests/Drupal/Tests/Component/Utility/XssTest.php
index 72aade4..7d62841 100644
--- a/core/tests/Drupal/Tests/Component/Utility/XssTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/XssTest.php
@@ -541,7 +541,7 @@ public function testQuestionSign() {
    * Checks that \Drupal\Component\Utility\Xss::filterAdmin() correctly strips unallowed tags.
    */
   public function testFilterXSSAdmin() {
-    $value = Xss::filterAdmin('<style /><iframe /><frame /><frameset /><meta /><link /><embed /><applet /><param /><layer />');
+    $value = Xss::filterAdmin('<style /><iframe /><frame /><frameset /><meta><link><embed><applet /><param><layer />');
     $this->assertEquals($value, '', 'Admin HTML filter -- should never allow some tags.');
   }
 
diff --git a/core/themes/bartik/color/preview.html b/core/themes/bartik/color/preview.html
index ae9aa14..2174662 100644
--- a/core/themes/bartik/color/preview.html
+++ b/core/themes/bartik/color/preview.html
@@ -1,7 +1,7 @@
 <div id="preview">
 
   <div id="preview-header">
-    <div id="preview-logo"><img src="../../../core/themes/bartik/logo.png" alt="Site Logo" /></div>
+    <div id="preview-logo"><img src="../../../core/themes/bartik/logo.png" alt="Site Logo"></div>
     <div id="preview-site-name">Bartik</div>
     <div id="preview-main-menu">
       <ul id="preview-main-menu-links">
diff --git a/core/themes/bartik/templates/block--system-branding-block.html.twig b/core/themes/bartik/templates/block--system-branding-block.html.twig
index 5917f58..82b83d1 100644
--- a/core/themes/bartik/templates/block--system-branding-block.html.twig
+++ b/core/themes/bartik/templates/block--system-branding-block.html.twig
@@ -16,7 +16,7 @@
 {% block content %}
   {% if site_logo %}
     <a href="{{ url('<front>') }}" title="{{ 'Home'|t }}" rel="home" class="site-logo">
-      <img src="{{ site_logo }}" alt="{{ 'Home'|t }}" />
+      <img src="{{ site_logo }}" alt="{{ 'Home'|t }}">
     </a>
   {% endif %}
   {% if site_name or site_slogan %}
diff --git a/core/themes/bartik/templates/page.html.twig b/core/themes/bartik/templates/page.html.twig
index 2456642..593cf66 100644
--- a/core/themes/bartik/templates/page.html.twig
+++ b/core/themes/bartik/templates/page.html.twig
@@ -88,7 +88,7 @@
 
     {% if logo %}
       <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home" id="logo">
-        <img src="{{ logo }}" alt="{{ 'Home'|t }}" />
+        <img src="{{ logo }}" alt="{{ 'Home'|t }}">
       </a>
     {% endif %}
 
diff --git a/core/themes/seven/templates/tablesort-indicator.html.twig b/core/themes/seven/templates/tablesort-indicator.html.twig
index b2eadaa..6450d2d 100644
--- a/core/themes/seven/templates/tablesort-indicator.html.twig
+++ b/core/themes/seven/templates/tablesort-indicator.html.twig
@@ -10,7 +10,7 @@
  */
 #}
 {% if style == 'asc' -%}
-  <img src="{{ arrow_asc }}" width="9" height="5" alt="{{ 'Sort ascending'|t }}" title="{{ 'Sort ascending'|t }}" />
+  <img src="{{ arrow_asc }}" width="9" height="5" alt="{{ 'Sort ascending'|t }}" title="{{ 'Sort ascending'|t }}">
 {% else -%}
-  <img src="{{ arrow_desc }}" width="9" height="5" alt="{{ 'Sort descending'|t }}" title="{{ 'Sort descending'|t }}" />
+  <img src="{{ arrow_desc }}" width="9" height="5" alt="{{ 'Sort descending'|t }}" title="{{ 'Sort descending'|t }}">
 {% endif %}
