如何在XSLT中处理HTML实体nbsp。无需更改输入文件
问题描述:
我试图使用XSLT将HTML文件转换为XML文件(使用Oxygen 9.0进行转换)。如何在XSLT中处理HTML实体nbsp。无需更改输入文件
当我配置和使用HTML文件运行XSLT转换然后将氧气输出
The entity 'nbsp' was referenced,but not declared
。
我输入HTML文件:
<div><span> some text</span></div>
注:我想知道如何处理实体仅使用XSLT,我不想对输入文件进行任何更改。
答
您可以使用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>
)。
答
据我所知,您将需要对输入文件进行更改。
要么改变你
到 
或声明的自定义文档类型,将做转换为你:
<!DOCTYPE doctypeName [
<!ENTITY nbsp " ">
]>
这是因为
不是预定义的实体个XML之一。
感谢您的回复..但我不应该改变输入文件做什么.. – Ramesh 2012-02-03 10:29:03
谢谢我刚使用 而不是 – 2013-07-09 18:16:31