这是解决此问题的另一种方法,其灵感来自 HTML 微格式(将信息嵌入额外的 HTML 元素,通常是“div”和“span”)。通过主要使用“g”元素,可以在 SVG 中实现类似的功能。
相对于RDFa,它会有一些缺点。例如,在地图制作社区之外,人们不会告诉某条特定信息是开放日期。这意味着需要一些额外的 SVG 标记来嵌入这些信息。另一方面,它是一种更直接和可读的方法。但它将如何应对挑战并实现目标?
今天的地图标记(清理后)对于一个车站(在本例中为北京火车站)可能看起来像这样:
<circle id="circle452" cx="1512.523" cy="1300.289" r="5.625" class="station"/>
<text dx="1522.5999" dy="1321.2517" xml:lang="en" class="station-name">Beijing Railway Station</text>
<text dx="1522.9651" dy="1306.156" xml:lang="zh" class="station-name">北京站</text>
上面的三个车站组件实际上并没有以任何方式连接,除了视觉上的接近。微格式地铁站表示的第一次尝试可能是这样的:
<g class="station">
<metadata>
<desc class="opening-date">1971-11-7</desc>
<desc class="coordinates">116.41735553741455,39.90104520501837,0.0</desc>
</metadata>
<circle id="circle452" cx="1512.523" cy="1300.289" r="5.625" class="icon"/>
<text dx="1522.5999" dy="1321.2517" xml:lang="en" class="name">Beijing Railway Station</text>
<text dx="1522.9651" dy="1306.156" xml:lang="zh" class="name">北京站</text>
</g>
与第一种方法相比,这具有一些优势,因为相关元素(车站符号、英文和简体中文名称)现在与元数据在结构上相关。
在第一次尝试中,我将“元数据”元素与“描述”元素一起使用。这可能是也可能不是一个好的选择。“元数据”应该没问题,但“desc”元素是为人类观众设计的,而不是 Javascript。对于 SVG 渲染器和其他 SVG 处理器(例如 SVG 屏幕阅读器),查找无副作用的元素势在必行。我还不能确定“desc”是否满足要求。
此外,这能否应对挑战并实现目标?换句话说,提取这些数据并将其应用于动画是否容易?
(从结构上讲,我假设 RDFa 解决方案看起来类似,只是现在使用“desc”元素所在的 RDF。)