A Cite To See

If you notice this sort of thing, the last post and one several days ago about Charles Platt now have visible attribution as part of the inset quote, which is marked up using the HTML <blockquote element. Each of these block quotes has a cite attribute, which is invisible to the user but which I sometimes add when I feel like having million dollar markup. Honestly I had slacked off doing lately because I wonder: if you add an attribute to an element, and no one sees or uses it, does it make a sound? It does now.

Thanks to an ingenious script from Dunstan which he describes in this post my cite attributes are now clear for the world to see. Can you hear me now?

The validationists in the audience will notice that am I not using the cite attribute in the strict sense because the value “Albert Einstein” it isn’t a URI. They would be right: it is technically in violation of the spec. However it is correct in spirit if not implementation. The URI RFC says “Not all resources are network ‘retrievable’; e.g., human beings” and “An identifier is an object that can act as a reference to something that has identity.” We’ve got the “resource” and “identifier” part down, what about “universal”? To be fully in line with specification what we need is a protocol to indicate individual people. I propose something like the following:

person://Albert Einstein

Thoughts? Now I just need to work up the javascript chops to hack around with the script, or if I’m lucky Dunstan will get an itch and beat me to it. The cite attribute checking should probably allow for protocols such as ftp:// and irc:// as well, not just http://.

12 thoughts on “A Cite To See

  1. I’ve taken to making quotes like this:

    <blockquote><p>The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect.</p></blockquote>
    <cite>&rarr; <a href="http://www.w3.org/WAI/">Tim Berners-Lee</a></cite>

    If I’ve got a URI to point to I’ll wrap the <cite> tag with an <a> tag. Structurally speaking, I’m not sure whether or not I’m standing on solid ground.

  2. Your use is invalid, since you are citing Albert Einstein. The cite attribute, however is meant for the location of the quote and ‘Albert Einstein’ is a person, not a location. I think MC solution is better in this particular example, although I wouldn’t have linked to the WAI, but to something like: http://google.com/search?q=tim+berners-lee

  3. Matt, what would ‘person://Albert Einstein’ point to?
    And are we allowed to just make stuff like that up?

    Let me know, and I’ll alter the JS to take into account the other protocols you mention :o)

  4. Dunstan, person://Albert Einstein refers to the person known as Albert Einstein who created the theory of relativity et cetera just as person://Matthew Mullenweg would refer to me and you would be the referent of person://Dunstan Orchard.

    Anne, Mikey’s markup isn’t leveraging the possible attributes of blockquote and the actual attribution of the quote could only be detemined by context, making any future mining of the markup more complicated and more prone to error.

  5. “Not all resources are network ‘retrievable’; e.g., human beings”

    In the words of Zeldman, it’s all about ‘forward-compatibility’. One day we’ll be able to upload the conscious minds of human beings onto the Internet so that the “person://” protocol will actually point to the individual in question. Didn’t you see the Matrix 😉

  6. Actually, I was talking about your markup ;-). If you are citing a person you would use the cite element for that person his name. The cite attribute of the blockquote element is not meant for that kind of things. It is meant for a specific URI which points to exactly the same text as you are quoting.

    Person names are irrelevant here, since that is who said it, not where it was written down => The resource.

  7. Am I the only one who thinks hiding human-useful information in an attribute, then using JavaScript to pull it out and make it visible, is … well, a bit awkward? It doesn’t work for those with JavaScript turned off, and nor does it work for search engines. For example, if I’m searching for the quote where Einstein somebody said something about “everything that can be counted”, your post wouldn’t show up, because “Einstein” isn’t in the page text.

    Having said, it’s a damn shame HTML never had a person element to mark up people’s names. (In visual browsers it could have been displayed in bold, like it is in gossip columns.) It’s also a shame that blockquote doesn’t have obvious markup for a non-URI citation.

    Now if you’ll excuse me, I’m going down to the post office to change my name to Albert Einstein, so I can start cybersquatting on the person://Albert Einstein domain.

  8. Well, you could do that … But if later you migrate to a standards-compliant Weblog tool, it won’t know you had redefined the cite attribute to mean something other than what the HTML spec says it’s for (the URI of the document you’re quoting from), so it won’t know to do that fancy conversion, will it? :->

    I suggest a much more legitimate way of marking up the author of a block quote is with an address element inside your blockquote. address is intended “to supply contact information for a document or a major part of a document”; extending that to include citation information for a block quotation is much less of a stretch, I think, than pretending people’s names are URIs for blockquote cite.

    Your style sheet could say “blockquote address {font-style: inherit; text-align: right;} blockquote address:before {content: "&#8212;&nbsp;"}” But it would still work splendidly in text-only browsers, JavaScript-disabled browsers, and search engines.

    [I hope I got all that double-escaping right. Without a preview function it’s kinda hard to tell. 🙂 ]