According to Wikipedia, CSS is a style sheet language. However, it's pretty much the only such type of language in use (at least from a web developer's perspective).

When trying to categorize CSS as a language or technology (e.g. for a résumé), would it be acceptable to simply call it a domain-specific language? If you don't think it can, why not?

  • 4
    Funny that you added the programming-languages tag to your question... – BoltClock May 31 '11 at 1:27
  • 6
    I wouldn't hire anyone who put CSS up as a DSL on their resumé, that seems like something weasels would do. – Homde May 31 '11 at 10:47
  • 1
    in common use is the key. There is also XSL:FO that has a similar scope, although much different look/feel. XSL:FO is not nearly as compact as CSS, which explains why there is little or no push for browsers to adopt it. – Berin Loritsch May 31 '11 at 11:35
  • 2
    CSS is a domain specific language, although I wouldn't put DSL on my resume just because I know CSS. The worst thing to do on a resume is to put something you don't know much about, and if you put DSL, the employer might assume you could (or have) actually written your own DSL. – WuHoUnited May 31 '11 at 12:00
  • 1
    I would avoid having to categorize it all together. It's too easy to disagree about these things and you don't want your job application turned down because someone disagrees about this. – Jaap May 31 '11 at 13:51

To answer the question of whether CSS is a domain specific language, according to Martin Fowler, it is. In fact he lists it among examples of DSLs.

You do have to understand that talk about DSLs has been going on for a while now, and Wikipedia's more narrow definition has come along much later in the discussion. Understand that Wikipedia is edited by peers who may or may not have a full grasp of what has been discussed so far. It's definition covers the most common uses for DSLs, and why you may want to create one of your own. However, it does not have a complete article. The fact that it omits markup languages completely is an omission. Perhaps the smart doctorates came along later and redrew the lines--but from the beginning markup languages were included with DSLs in early conversations.

Classifying CSS on a Resume

While CSS is a DSL, you don't want to list it under a section of DSLs on your resume. The most common way to reference CSS is to lump it with HTML.

  • Hmm...after reading these other answers and comments, I'm definitely going to avoid categorizing CSS as a DSL. I'm going to be bothered, though, because I don't agree that CSS is a markup language. – arussell84 May 31 '11 at 15:54

It's a language. It's specific to a domain. If you're going to have a "DSL" list on your resume, I don't see why CSS wouldn't count as one.


Is it a DSL? Yes.

Should you put it in your resume as such? No!

You're debating it (since you're asking the question here). If you're debating it, or more importantly, if you think a potential employer will debate it, why bother? What's the upside?

Do you believe that an employer will say "I don't like that he puts DSL and CSS in the same context and I'm going to bring him over so he can convince me?" No. You're just making it more likely to have your resume ignored by the employer.

The only upside is that buzzword scanners will find both CSS and DSL in your resume. Meh.

Extra points for résumé though. Instead of resumé or even my lazy resume.



In software development and domain engineering, a domain-specific language (DSL) is a programming language or specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique. [wiki]

CSS is neither programming language nor specification language. CSS does not allow you to express any computations, doesn't have variables, and in fact in current version there are no expressions at all (might change in the future).

  • 9
    It is a specification language. Computations and variables are the realm of programming, but CSS allows you to specify the style and location of elements in a markup language such as HTML or XML. – Berin Loritsch May 31 '11 at 11:32
  • 3
    @Berin: it's not specification language. It's a data language. en.wikipedia.org/wiki/Specification_language – vartec May 31 '11 at 11:35
  • 2
    You are saying that CSS is not a specification language because it doesn't compute (a programming language function). That is not correct. – Berin Loritsch May 31 '11 at 11:37
  • 6
    We all know that Wikipedia contains no errors, omissions, or contradictions right? CSS contains a syntax and a grammar. These two things make it a language. It is also pertinent in only one domain, which makes it domain specific. It is used to declare, and specify where things are on the screen and how they are presented. This is a very narrow part of the specification process. You won't be able to do business level specifications with it, but you will be able to do screen layout specifications and use the file in production. Your definition is too narrow and your source is not perfect. – Berin Loritsch May 31 '11 at 14:41
  • 7
    I understand your point, however, I also don't trust your source. You are treating Wikipedia as if it were the Bible. Both articles are incomplete. It's almost as if it doesn't exist on wikipedia it doesn't exist. I could (but won't) go up on both of those articles and edit them to add information or change information. That doesn't necessarily make it true or more accurate. You can do the same. But how about martinfowler.com/bliki/DomainSpecificLanguage.html? – Berin Loritsch May 31 '11 at 14:52

I disagree that CSS can be called a domain specific language.

Normally with a DSL what you would call the "domain" is a business domain, not a technical domain. A DSL defines keywords and constructs that indicate entities specific to the business. The goal is to make it easy for people who are experts in the business domain to use the DSL.

CSS is a declarative language to define styles for marking up documents in HTML, it does not have anything to do with a specific business domain and can therefore not be called a DSL.

  • That's an artificial distinction. It's domain is the presentation of markup. I.e. a representational domain. – Berin Loritsch May 31 '11 at 11:31
  • 1
    @Berin that is not a business domain, but a technical domain. Suppose your business is about insurances. Then a DSL would define entities that are specific to the insurance business. People who are experts at insurances would know how to use the language (without the need to be hard-core programmers). – Jesper May 31 '11 at 11:35
  • 4
    SQL is a DSL, and its realm is not business. – Berin Loritsch May 31 '11 at 11:36
  • 1
    @berin-loritsch He means that a DSL is specific to a type of business. Your SQL argument still works, though, if you reword it to something like "SQL is a DSL, but it is not specific to any particular type of business." – arussell84 May 31 '11 at 15:59
  • 2
    @Jesper What makes you think that it must be a "business" domain? – Rein Henrichs May 31 '11 at 16:48

It's not a general purpose language, so it's easy to categorize it as a domain-specific language.

At the same time, your question is also about whether it makes sense to place it under a heading of domain-specific languages on your resume. Personally, I don't think it makes sense to do that, since even though CSS is a DSL, it's general technology for people that work on websites and web applications.

If you're applying for a job in web development, I would expect you to know CSS and would expect that in a list detailing your knowledge of important web technologies such as HTML5, Javascript, etc.

There are DSLs that would make sense on the resume of a web developer, such as WebDSL. If you know them, I would mention them as DSL on your resume, because they show that you have knowledge of domain-specific technology in addition to your general technical knowledge. (At the same time, most web development teams focus only on the general technology currently, so it probably wouldn't be of importance anyway, but I mention it here as an example of what would make sense in such a section.)


Domain Specific Languages are languages created to support a particular set of tasks, as they are performed in a specific domain.

The Cascading Style Sheet language defines the style to use to visualize a document. We can use it to define how an HTML document will appear on the screen or how it will appear when printed.So css is used to perform Specific task which is designing webpage.


CSS is (by accident) a Turing complete language.

That feature makes it a DSL.

You might also look into DSSSL, which is a dialect of Scheme to manipulate SGML documents, and is an interesting DSL.

I don't mention DSL in my resume, except when claiming to be a DSL designer and implementor.

You could mention several DSLs in your resume, as an indication that you have the skills to learn another one easily.

Not the answer you're looking for? Browse other questions tagged or ask your own question.