我在XHTML文档中使用多个XML命名空间时遇到问题。具体来说,我试图在同一份文件中使用Wicket和Nitobi。
代码看起来像这样:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"
xmlns:ntb="http://www.nitobi.com">
... blah blah blah ...
<wicket:extend>
<div wicket:id="gridContainer">
<wicket:panel>
<ntb:grid wicket:id="grid" id="grid14" width="660" height="600" mode="livescrolling">
</ntb:grid>
</wicket:panel>
</div>
</wicket:extend>
... blah blah blah ...
标题中还有代码调用Nitobi的网格初始化代码,它基本上试图获取ntb:grid XML。但是,当我使用Firebug进行初始化时,我看到Firefox在解析XML时遇到了这个错误:
Parsing Error: prefix not bound to a namespace
Location: http://localhost:8080/foo/bar
Line Number 1, Column 1:
<ntb:grid xmlns:ntb="http://www.nitobi.com" mode="livescrolling" height="600" width="660" id="grid14" wicket:id="grid">
</ntb:grid>
我做错了什么?我觉得这个问题与<ntb>
标记嵌套在<wicket>
标记中的方式有关。
答案 0 :(得分:1)
我发现问题是由wicket:id
元素上的ntb:grid
引起的。解决方法是从页面中删除wicket:
命名空间标记,如下所示:
https://cwiki.apache.org/WICKET/how-to-remove-wicket-markup-from-output.html
以下是相关部分:
private boolean stripTags;
public TestPage() {
stripTags = getApplication().getMarkupSettings().getStripWicketTags();
}
@Override
protected void onBeforeRender() {
getApplication().getMarkupSettings().setStripWicketTags(true);
}
@Override
protected void onAfterRender() {
getApplication().getMarkupSettings().setStripWicketTags(stripTags);
}