diff --git a/basis/html/templates/chloe/compiler/compiler.factor b/basis/html/templates/chloe/compiler/compiler.factor
index 331b565b98..4410cd7599 100644
--- a/basis/html/templates/chloe/compiler/compiler.factor
+++ b/basis/html/templates/chloe/compiler/compiler.factor
@@ -7,16 +7,16 @@ html.templates html.templates.chloe.syntax continuations ;
IN: html.templates.chloe.compiler
: chloe-attrs-only ( assoc -- assoc' )
- [ drop url>> chloe-ns = ] assoc-filter ;
+ [ drop chloe-name? ] assoc-filter ;
: non-chloe-attrs-only ( assoc -- assoc' )
- [ drop url>> chloe-ns = not ] assoc-filter ;
+ [ drop chloe-name? not ] assoc-filter ;
: chloe-tag? ( tag -- ? )
dup xml? [ body>> ] when
{
{ [ dup tag? not ] [ f ] }
- { [ dup url>> chloe-ns = not ] [ f ] }
+ { [ dup chloe-name? not ] [ f ] }
[ t ]
} cond nip ;
@@ -49,7 +49,7 @@ DEFER: compile-element
reset-buffer "@" ?head [ , [ value present ] % ] [ , ] if ;
: compile-attrs ( assoc -- )
- [
+ attrs>> [
" " [write]
swap name>string [write]
"=\"" [write]
diff --git a/basis/html/templates/chloe/syntax/syntax.factor b/basis/html/templates/chloe/syntax/syntax.factor
index 90c171917b..fb457ff1df 100644
--- a/basis/html/templates/chloe/syntax/syntax.factor
+++ b/basis/html/templates/chloe/syntax/syntax.factor
@@ -21,14 +21,14 @@ tags global [ H{ } clone or ] change-at
: chloe-ns "http://factorcode.org/chloe/1.0" ; inline
-: chloe-name ( string -- name )
- name new
- swap >>main
- chloe-ns >>url ;
+: chloe-name? ( name -- ? )
+ url>> chloe-ns = ;
+
+XML-NS: chloe-name http://factorcode.org/chloe/1.0
: required-attr ( tag name -- value )
- dup chloe-name rot at*
- [ nip ] [ drop " attribute is required" append throw ] if ;
+ tuck chloe-name attr
+ [ nip ] [ " attribute is required" append throw ] if* ;
: optional-attr ( tag name -- value )
- chloe-name swap at ;
+ chloe-name attr ;