2012-02-03 108 views
4

我试图使用XSLT将HTML文件转换为XML文件(使用Oxygen 9.0进行转换)。如何在XSLT中处理HTML实体nbsp。无需更改输入文件

当我配置和使用HTML文件运行XSLT转换然后将氧气输出

The entity 'nbsp' was referenced,but not declared

我输入HTML文件:

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

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

回答

7

您可以使用XML实体来创建定义nbsp实体的XML文件,并包含(破碎的)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>)。

7

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

要么改变你&nbsp;&#160;或声明的自定义文档类型,将做转换为你:

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

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

+1

感谢您的回复..但我不应该改变输入文件做什么.. – Ramesh 2012-02-03 10:29:03

+2

谢谢我刚使用 而不是  – 2013-07-09 18:16:31