如何在XSLT中处理HTML实体nbsp.不更改输入文件



我正在尝试使用XSLT将HTML文件转换为XML文件(使用Oxygen 9.0进行转换)。

当我用HTML文件配置并运行XSLT转换时,Oxygen会输出

CCD_ 1。

我输入的html文件是:

<div><span>&nbsp;some text</span></div>

注意:我想知道如何仅使用XSLT处理该实体,我不想对输入文件进行任何更改。

您可以使用XML实体来创建一个XML文件,该文件定义nbsp实体,并包括(损坏的)XML片段

例如,假设您的片段保存为一个名为:"invalid.xml"的文件

<div><span>&nbsp;some text</span></div>

创建这样的XML文件:

<!DOCTYPE wrapper [
   <!ENTITY nbsp "&#160;">
   <!ENTITY invalid-xml-document SYSTEM "./invalid.xml">
]><wrapper>
&invalid-xml-document;</wrapper>

当解析该文件时,它将定义nbsp实体,包括"invalid.xml"中的内容,并正确解析nbsp实体。结果是:

<wrapper>
  <div>
    <span> some text</span> 
  </div>
</wrapper>

然后,只需调整XSLT以适应新的文档元素(在本例中为元素<wrapper>)。

据我所知,您需要对输入文件进行更改。

通过将&nbsp;更改为&#160;,或者通过声明将为您进行转换的自定义doctype:

<!DOCTYPE doctypeName [
   <!ENTITY nbsp "&#160;">
]> 

这是因为&nbsp;不是XML预定义的实体之一。

最新更新