背景:我正在编写一个 DocBook 5 文档(并在其中包含一些已经编写的文本),目的是从中生成 HTML。我想从一开始就得到正确的语义标记,所以我以后不需要重新做,但是标准方法似乎没有生成我正在寻找的东西,所以我不确定我是否应该是否偏离它,取决于 XSL 的可能性。
当前设置:我的词汇表只有缩写项目。它由glossentry
s 组成,每个 s 都包含一个完整的拼写glossterm
和一些非零数量的acronym
s 和/或abbrev
s。我想这可能只是glossterm
s 。对我来说没关系。假设例如我有这个:
<glossentry xml:id="ff"><glossterm>Firefox</glossterm>
<acronym>FF</acronym>
<glossdef>
<para>The web browser made by Mozilla.</para>
</glossdef>
</glossentry>
理想的
假设无论我想在哪里提到 Firefox,我都会FF
在文本中输入。理想情况下,没有任何额外的标记,只要“FF”(区分大小写)在我的 DocBook 文件中的para
图形(或者title
,但不是,例如,code
或者programlisting
属性内的 URL 内......)中作为一个简单的整个单词出现,它会在 HTML 中以文本“FF”的形式出现,但标记为词汇表条目的链接,但不使用标准链接 CSS,此外还有一个title
具有值的属性Firefox
. 这样,读者可以将鼠标悬停以获取为他们拼写的首字母缩写词/缩写,如果这还不够,他们可以单击以获取更完整的定义。同时,我会将其设置为黑色并加下划线,以便他们知道此功能存在,但它不会像普通链接那样分散注意力,尤其是在文本中出现的频率。
主要问题:在 XSL 中这种纯文本、无标记术语的替换是否可能(不会产生像斯肯索普问题这样的问题)?如果是这样,它可以自动为每个acronym
或abbrev
在词汇表中找到吗?
我无法弄清楚如何直接做到这一点,但这仍然是我的目标。同时我尝试了其他事情:
方法一
设置一个键盘宏,这样我就可以ff
在输入<xref linkend="ff"/>
.
优点:
- 词汇表的链接
- 拼出缩写
缺点:
- 拼出缩写(最好保持简短阅读,而不仅仅是简短键入)...解决方法:将其
acronym
放入 aglossterm
并将其放在首位glossentry
(语义丢失,但也许在这里可以吗?) - 词汇表的链接(我希望它的样式不同)...解决方案:CSS for
a.xref
- 即使解决了上述两个问题,标题
FFFirefox
也不仅仅是Firefox
(以及其他有多个同义词的人,混搭继续)......解决方案:在您喜欢的首字母缩写词/缩写词上放置一个替代xml:id
词,然后使其中的链接在其endterm
属性中引用该 id(以及linkend
对第一个 id 的引用) - 我必须记住使用键盘宏,而不是仅仅键入并让系统完成工作;任何导入的文本都必须对每个词汇表条目进行文本替换
方法二
使用<xsl:param name="glossterm.auto.link" select="1"/>
和 键盘宏更改FF
为<glossterm>FF</glossterm>
.
优点:
- 词汇表的链接
缺点:
- 拼出缩写(最好保持简短阅读,而不仅仅是简短键入)...解决方法:将其
acronym
放入 aglossterm
并将其放在首位glossentry
(语义丢失,但也许在这里可以吗?) - 词汇表的链接(我希望它的样式不同)...解决方案:CSS for
.glossterm
- 即使解决了上述两个问题,也没有
title
给出任何属性 - 我必须记住使用键盘宏,而不是仅仅键入并让系统完成工作;任何导入的文本都必须对每个词汇表条目进行文本替换
到目前为止,方法 1 在解决方法之后似乎更好,但是有没有办法实现我概述的理想?