Is an xml attribute without a value, valid?
Asked Answered
R

3

60

I want to have an XML attribute without any value, which simply has one meaning when it exists or does not exist.

Is that valid?

Registrar answered 3/8, 2011 at 12:28 Comment(1)
And for attribute="": #184514Fore
V
75

An attribute must be specified with the following syntax:

Name Eq AttValue

where Name is a legal XML name, Eq is = optionally preceded or followed by whitespace, and AttValue is a legal attribute value.

This definition is true for both XML 1.0 and XML 1.1.

If you are trying to specify an attribute as below:

<car owned/>

then no, that is not valid. If you are trying to specify it this way:

<car owned=""/>

then yes, that is valid.

Vanadium answered 3/8, 2011 at 14:29 Comment(0)
A
26

No.

Boolean attributes in XML are of the form foo="foo".

Even in SGML, you must provide the value, (it is the name, = and quotes that you can omit, which is why you have things like <select multiple> in HTML).

Anchorage answered 3/8, 2011 at 12:29 Comment(3)
I have hard time parsing your remark about attribute's value being required in SGML followed by example where the value is omitted. As to where do HTML attributes without value come from; Authors should be aware that many user agents only recognize the minimized form of boolean attributes and not the full form. For instance, authors may want to specify: <OPTION selected> instead of <OPTION selected="selected">w3.org/TR/html4/appendix/notes.html#sgmlfeaturesHeptode
@PiotrDobrogost — In the example you give, selected is the value not the name of the attribute (HTML happens to only use values which are the same as the name for boolean attributes).Anchorage
This syntax (<car owned />) is used by Schema.org and "microdata". I guess this just underscores that HTML is not valid XML, but is it valid SGML (i.e. <div> is defined with an attribute Itemscope that can only take the value "itemscope"? schema.org/docs/gs.html#microdata_whyFeudatory
V
6

You can have an attribute whose only permitted value is the empty string, "". I'm not sure it's good design, though; I would normally suggest a boolean attribute with values true/false, and a default value of false.

Veneaux answered 3/8, 2011 at 13:31 Comment(2)
An empty string is still a value though.Anchorage
My answer has been downvoted presumably because people think I interpreted the question incorrectly. They may be right. Interpreting unclear questions is a bit of an art form, and we sometimes get it right and sometimes not. A comment on the answer is more helpful than an unexplained downvote.Veneaux

© 2022 - 2024 — McMap. All rights reserved.