【发布时间】:2010-08-25 00:38:47
【问题描述】:
在尝试制作样式表以转换使用非常过时的 SGML DTD 进行格式化的书籍的旧 LoC 转录本的过程中,我遇到了以下情况:
在转换后的 XML 文件中,有如下几行文本:
<p> Text on left <hsep></hsep> Text on right </p>
hsep 本质上是推动剩余的文本右对齐。不幸的是,我不知道通过转换标签将其转换为 HTML 的任何方法,因为 HTML 没有像 hsep 这样的可疑 CSS hacks。我认为能够将其转换为以下内容会更有用:
<p> Text on left <span class="right">Text on right</span> </p>
但是,我不确定如何执行此操作,因为它需要在 <p> 元素中确定是否存在 <hsep>,然后根据剩余文本的存在创建一个围绕剩余文本的标签,同时还将模板应用于可能存在的任何元素。我不认为我有类似的情况
<p> Text a <em> Text b <hsep></hsep> Text c </em> </p>
很常见甚至存在,所以我认为这不会造成问题,但可能会出现以下情况:
<p> <em> Text a Text b <hsep></hsep> Text c </em> </p>
我能想到涉及正则表达式的复杂、可怕的方法,但我希望有一种不可怕的方法。
【问题讨论】:
-
实际上,在更仔细地检查 DTD 时,事实证明 hsep 可以表示文本之间的任何间距(通常类似于制表符);在实践中,我通常在目录中看到它来分隔页码。
-
好问题 (+1)。请参阅我的答案以获得完整而简单的解决方案。 :)