diff --git a/core/lib/Drupal/Core/Template/Attribute.php b/core/lib/Drupal/Core/Template/Attribute.php
index 3ea18b1..c165981 100644
--- a/core/lib/Drupal/Core/Template/Attribute.php
+++ b/core/lib/Drupal/Core/Template/Attribute.php
@@ -251,14 +251,20 @@ public function hasClass($class) {
    * Implements the magic __toString() method.
    */
   public function __toString() {
-    $return = '';
+    $keys = '';
+    $values = array();
     foreach ($this->storage as $name => $value) {
       $rendered = $value->render();
       if ($rendered) {
-        $return .= ' ' . $rendered;
+        $keys .= ' @' . $name;
+        $values['@' . $name] = $rendered;
       }
     }
-    return SafeMarkup::set($return);
+
+    if(!$rendered){
+      return '';
+    }
+    return SafeMarkup::format($keys, $values);
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Template/AttributeValueBase.php b/core/lib/Drupal/Core/Template/AttributeValueBase.php
index 4db6dd8..de87f7b 100644
--- a/core/lib/Drupal/Core/Template/AttributeValueBase.php
+++ b/core/lib/Drupal/Core/Template/AttributeValueBase.php
@@ -57,7 +57,7 @@ public function __construct($name, $value) {
   public function render() {
     $value = (string) $this;
     if (isset($this->value) && static::RENDER_EMPTY_ATTRIBUTE || !empty($value)) {
-      return SafeMarkup::checkPlain($this->name) . '="' . $value . '"';
+      return SafeMarkup::format("@name = '@value'", ['@name' => $this->name, '@value' => $value]);
     }
   }
 
