---
# Allowed HTML tags and attributes
_common:
class: &name !ruby/regexp /\A[a-z0-9 .:_-]+\z/i
id: *name
title: &cdata !ruby/regexp /\A[^'"]*\z/
style: *cdata
dir: !ruby/regexp /\A(ltr|rtl)\z/i
xmlns: &uri !ruby/regexp /\A(http:|https:|ftp:|mailto:)?[^:]+/i
lang: &lang !ruby/regexp /\A[a-z]+(-[a-z]*)?\z/i
"xml:lang": *lang
a:
href: *uri
rel: &keyword !ruby/regexp /\A[a-z ]+\z/i
rev: *keyword
shape: *keyword
coords: !ruby/regexp /\A[0-9,]+\z/i
abbr:
acronym:
address:
b:
base:
href: *uri
bdo:
big:
blockquote:
cite: *uri
body:
br:
button:
name: *cdata
value: *cdata
type: *keyword
disabled: "disabled"
caption:
cite:
code:
col:
span: &number !ruby/regexp /\A[0-9]+\z/
width: &length !ruby/regexp /\A[0-9]+(%|\*)?\z/
align: *keyword
valign: *keyword
char: *cdata
charlength: *length
colgroup:
span: *number
width: *length
align: *align
valign: *valign
char: *cdata
charlength: *length
dd:
del:
cite: *uri
datetime: &datetime !ruby/regexp /\A[0-9a-z:-]+\z/i
dfn:
div:
dl:
dt:
em:
fieldset:
form:
action: *uri
method: *keyword
enctype: &type !ruby/regexp /\A[ ,a-z0-9\/+-]+\z/i
h1:
h2:
h3:
h4:
h5:
h6:
head:
profile: *uri
hr:
html:
i:
img:
src: *uri
alt: *cdata
longdesc: *uri
width: *length
height: *length
usemap: *uri
ismap: "ismap"
input:
type: *keyword
name: *cdata
value: *cdata
checked: "checked"
size: *cdata
maxlength: *number
src: *uri
alt: *cdata
usemap: *uri
disabled: "disabled"
readonly: "readonly"
accept: *type
ins:
cite: *uri
datetime: &datetime !ruby/regexp /\A[0-9a-z:-]+\z/i
kbd:
label:
for: *name
legend:
li:
link:
href: *uri
rel: *keyword
rev: *keyword
type: *type
title: *cdata
media: *keyword
map:
name: *cdata
meta:
name: *name
"http-equiv": *name
content: *cdata
scheme: *cdata
ol:
optgroup:
label: *cdata
disabled: "disabled"
option:
label: *cdata
value: *cdata
selected: "selected"
disabled: "disabled"
p:
pre:
q:
cite: *uri
samp:
select:
name: *cdata
multiple: "multiple"
size: *number
disabled: "disabled"
small:
span:
strong:
style:
type: *type
media: *keyword
title: *cdata
sub:
sup:
table:
summary: *cdata
width: *length
border: *number
frame: *keyword
rules: *keyword
cellspacing: *length
cellpadding: *length
tbody:
align: *keyword
char: *cdata
charoff: *length
valign: *keyword
td:
rowspan: *number
colspan: *number
headers: &idrefs !ruby/regexp /\A[a-z0-9 ,#.:_-]+\z/i
abbr: *cdata
scope: *keyword
axis: *cdata
align: *keyword
char: *cdata
charoff: *length
valign: *keyword
textarea:
name: *cdata
rows: *number
cols: *number
disabled: "disabled"
readonly: "readonly"
tfoot:
align: *keyword
char: *cdata
charoff: *length
valign: *keyword
th:
rowspan: *number
colspan: *number
headers: *idrefs
abbr: *cdata
scope: *keyword
axis: *cdata
align: *keyword
char: *cdata
charoff: *length
valign: *keyword
thead:
align: *keyword
char: *cdata
charoff: *length
valign: *keyword
title:
tr:
align: *keyword
char: *cdata
charoff: *length
valign: *keyword
tt:
ul:
var: