1

考虑从导出中获得的这个片段:

<!--l. 266--><p class="indent" >
              <span 
class="ptmr8t-x-x-90">“&lt;/span><span 
class="ptmri8t-x-x-90">Blah blah blah, </span>
              <span 
class="ptmri8t-x-x-90">blah blah, blah blah blah, </span>
              <span 
class="ptmri8t-x-x-90">blah blah, blah blah, blah blah blah </span>
              <span 
class="ptmri8t-x-x-90">blah blah, blah </span>
              <span 
class="ptmri8t-x-x-90">blah blah, blah blah, blah</span>
              <span 
class="ptmri8t-x-x-90">blah blah, blah </span><span 
class="ptmr8t-x-x-90">(</span><a 
href="#X0-cite"><span 
class="ptmr8t-x-x-90">Testing </span>
              <span 
class="ptmr8t-x-x-90">Ref, </span><a 
href="#X0-cite"><span 
class="ptmr8t-x-x-90">1980</span></a></a><span 
class="ptmr8t-x-x-90">, pg.1)”&lt;/span>
         </p>

编辑:我同意评论,没有一般的方法来指定什么是多余的 - 这就是我的意思:这个代码片段本质上是为了将单行表示为呈现的 HTML:

firefox_html_render

...并且由于内容行中的所有“bla bla ...”都意味着采用相同的格式,我认为它的各个部分带有指定相同格式的单独跨度标签(实际上它们是相同的标签, 不改变属性,只是<span class="ptmri8t-x-x-90">) 是多余的——即使它们没有嵌套。


在此(例如 )上运行 XML 格式化程序/漂亮的打印机xml_pp -i a.xml来缩进我们的标签将产生以下代码:

<!--l. 266--><p class="indent">
  <span class="ptmr8t-x-x-90">“&lt;/span>
  <span class="ptmri8t-x-x-90">Blah blah blah, </span>
  <span class="ptmri8t-x-x-90">blah blah, blah blah blah, </span>
  <span class="ptmri8t-x-x-90">blah blah, blah blah, blah blah blah </span>
  <span class="ptmri8t-x-x-90">blah blah, blah </span>
  <span class="ptmri8t-x-x-90">blah blah, blah blah, blah</span>
  <span class="ptmri8t-x-x-90">blah blah, blah </span>
  <span class="ptmr8t-x-x-90">(</span>
  <a href="#X0-cite">
    <span class="ptmr8t-x-x-90">Testing </span>
    <span class="ptmr8t-x-x-90">Ref, </span>
    <a href="#X0-cite">
      <span class="ptmr8t-x-x-90">1980</span>
    </a>
  </a>
  <span class="ptmr8t-x-x-90">, pg.1)”&lt;/span>
</p>

注意这里:

  • 我们有<span class="X">text A, </span><span class="X">text B, </span>没有意义的序列,因为它们可以简化为<span class="X">text A, text B, </span>
  • 我们有双重嵌套<a href="#X0-cite">- 再次毫无意义,可以没有内部的

最终,我想运行一些东西,并获得以下“压缩”代码:

<!--l. 266--><p class="indent" >
              <span
class="ptmr8t-x-x-90">“&lt;/span><span
class="ptmri8t-x-x-90">Blah blah blah,
              blah blah, blah blah blah,
              blah blah, blah blah, blah blah blah
              blah blah, blah
              blah blah, blah blah, blah
              blah blah, blah </span><span 
class="ptmr8t-x-x-90">(<a
href="#X0-cite">
Testing
              Ref,
1980</a>
, pg.1)”&lt;/span>
         </p>

...其中保留了文本空白(并且在每一行上分别删除了多余标签的各个部分),并且处理了诸如<a href="#X0-cite">中断<span>s 序列之类的情况;然后我可以美化为:

<!--l. 266--><p class="indent">
  <span class="ptmr8t-x-x-90">“&lt;/span>
  <span class="ptmri8t-x-x-90">Blah blah blah,
              blah blah, blah blah blah,
              blah blah, blah blah, blah blah blah
              blah blah, blah
              blah blah, blah blah, blah
              blah blah, blah </span>
  <span class="ptmr8t-x-x-90">(<a href="#X0-cite">
Testing
              Ref,
1980</a>
, pg.1)”&lt;/span>
</p>

 

是否有(Linux)命令行工具可以帮助我进行描述的“压缩”?awk或者正则表达式脚本可以做到这一点,我猜 - 但这似乎有点复杂......

非常感谢您的任何答案,
干杯!

4

1 回答 1

1

没有任何可以使用的预构建。

您要求更改将从标记生成的 DOM。缩小的通常情况是在不改变它所代表的模型的情况下改变标记。

您的空白保留要求还要求它保留未由标记表示的数据(因为除了 CDATA 块中的空白不会折叠)。

于 2012-05-02T08:42:52.220 回答