我正在尝试使用XSLT将HTML文件转换为XML文件(使用Oxygen 9.0进行转换)。
当我使用HTML文件配置并运行XSLT转换时,Oxygen输出
The entity 'nbsp' was referenced,but not declared
。
我输入的html文件是:
<div><span> some text</span></div>
注意:我想知道如何仅使用XSLT来处理该实体,我不想要对输入文件进行任何更改。
答案 0 :(得分:7)
据我所知,您需要对输入文件进行更改。
将
更改为 
或声明将为您进行转换的自定义文档类型:
<!DOCTYPE doctypeName [
<!ENTITY nbsp " ">
]>
这是因为
不是XML预定义实体之一。
答案 1 :(得分:7)
您可以使用XML实体创建定义nbsp
实体的XML文件,并包含(损坏的)XML片段。
例如,假设您的片段保存为名为“ invalid.xml ”的文件
<div><span> some text</span></div>
创建一个这样的XML文件:
<!DOCTYPE wrapper [
<!ENTITY nbsp " ">
<!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>
)。