- From: Håkon Wium Lie <howcome@opera.com>
- Date: Sun, 9 Aug 2015 13:50:47 +0200
- To: Sanders Kleinfeld <sanders@oreilly.com>
- Cc: Daniel Glazman <daniel.glazman@disruptive-innovations.com>, public-digipub <public-digipub@w3.org>
Sanders Kleinfeld wrote:
> Re: cross-references, the main use case I would love to see covered is
> the ability to automatically customize the text content based on the
> type of element that is being linked to. So for example, if we had
> markup like the following:
>
> <section>
> <h1 id="a_section">The First section title</h1>
> <p>Some text here</p>
> <figure id="a_figure">
> <figcaption>An interesting icon</figcaption>
> <img src="icon.gif"/>
> </figure>
>
> <p>In <a href="#a_section"/>, we have some cross references.</p>
> <p>In <a href="#a_figure"/>, we have an icon image</p>
> </section>
>
> We might want the cross-reference to the section heading (#a_section)
> to contain the text "Section 1.1", and the cross-reference to the
> figure caption to contain the text "Figure 1.1".
You could this by adding a class to the <a> element, e.g.:
<a class=figref href=...>
Combined with something like:
a.figref:before { content: "Figure: " }
But I guess you're looking for a solution where you only insert simple
<a> elements that transform themselves?
Sometimes this could lead to errors. E.g:
See figure 2.3 on page 56.
Figure 2.3 on page 56 illustrates this.
That is, the spelling of figure/Figure changes, this would be tough to
adjust automatically.
Still if you want an all-automatic solution, I'd probably base it on
named strings. First, I would set a named string with:
h1[id] { string-set: ref "Section " counter(sec) }
figure[id] { string-set: ref "Figure " counter(fig) }
Then I would refer to it with:
a { content: target-string(ref, attr(href url)) }
The 'target-string' function doesn't exist, yet. But I think it could work, no?
Cheers,
-h&kon
Håkon Wium Lie CTO °þe®ª
howcome@opera.com http://people.opera.com/howcome
Received on Sunday, 9 August 2015 11:51:18 UTC