7

我无法弄清楚如何解决这个问题。我有一个名为:“urlrewrite.xml”的文件,它是在 ROO Shell 中运行“控制器”命令后由 spring ROO 自动生成的。

但是,我仍然收到以下错误:

"Referenced file contains errors (http://tuckey.org/res/dtds/urlrewrite3.0.dtd). For more information, right click on the message in the Problems View and select "Show Details..."

这是 urlrewrite.xml 文件的内容:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">

<urlrewrite default-match-type="wildcard">
    <rule>
        <from>/resources/**</from>
        <to last="true">/resources/$1</to>
    </rule>
    <rule>
        <from>/static/WEB-INF/**</from>
        <set type="status">403</set>
        <to last="true">/static/WEB-INF/$1</to>
    </rule>
    <rule>
        <from>/static/**</from>
        <to last="true">/$1</to>
    </rule>
    <rule>
        <from>/</from>
        <to last="true">/app/index</to>     
    </rule>
    <rule>
        <from>/app/**</from>
        <to last="true">/app/$1</to>
    </rule>
    <rule>
        <from>/**</from>
        <to>/app/$1</to>
    </rule>
    <outbound-rule>
        <from>/app/**</from>
        <to>/$1</to>
    </outbound-rule>    
</urlrewrite>

关于如何摆脱这个错误的任何想法?

4

14 回答 14

10

只需将 3.0 更改为 3.2

<!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
    "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
于 2010-06-23T22:09:05.697 回答
7

我也遇到了这个问题。我所做的只是将代码更改为:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">

进入 :

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//www.tuckey.org//DTD UrlRewrite 3.2//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite3.2.dtd">

基本上,我只是附加了“www”。在“tukey.org”之前,它解决了这个问题。

于 2011-05-30T22:47:30.737 回答
5

http://forum.springsource.org/showthread.php?t=90962引导我走向正确的道路。

如果您从http://tukey.org/res/dtds/urlrewrite3.0.dtd下载 DTD,您会发现有时它是正确的,有时它是空 HTML。无论哪种方式,Eclipse 都会缓存它下载的内容。您可以通过两种方式解决问题:

  1. 自己下载 DTD 文件,验证它是否看起来像 XML DTD,将其存储在本地,然后在 urlrewrite.xml 标头中指向它。
  2. 转到首选项 -> 常规 -> 网络连接 -> 缓存并删除缓存的 DTD,然后重新验证 XML(右键单击 -> 验证)。重复,直到您获得缓存的 DTD 的良好副本。
于 2010-07-07T21:10:00.780 回答
3

www添加到链接对我有用,我从

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
    "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
    "http://www.tuckey.org/res/dtds/urlrewrite3.0.dtd">
于 2011-06-27T04:20:53.270 回答
2

嗨,我刚刚根据这里的一些答案解决了这个问题:

我遵循的步骤是:
1. 下载 urlrewrite3.2.dtd
2. 将其保存到本地 ...war/WEB-INF/urlrewrite3.2.dtd
3. 将我的 URLrewrite 文件指向本地副本
4. 删除缓存版本 (Preferences>General>Network Connections>Cache)
5. 重新验证 XML

注意:我最初尝试按照 Titi Wangsa bin Damhore 的建议编辑文件,但在 dtd 文件中出现验证错误。我删除了按照上述步骤和繁荣。问题解决了。感谢那些贡献想法的人。

块引用

于 2010-07-21T14:25:36.320 回答
1

将 3.0 更改为 3.2 对我有用...

于 2010-07-27T13:25:31.997 回答
1

做了一些谷歌搜索“示例 dtd”第 4 或第 5 个结果是http://www.xmlfiles.com/dtd/dtd_examples.asp

样品有一个

<!DOCTYPE TVSCHEDULE [ 
<!ELEMENT TVSCHEDULE (CHANNEL+)>
..
..
]>

url rewrite dtd 开始于

<!ELEMENT urlrewrite ((rule|class-rule)*, outbound-rule*, catch*)>

我为“” http://tukey.org/res/dtds/urlrewrite3.0.dtd “”发布了一个wget,并在sts中打开,是的,它是红色的。

在顶部添加

<!DOCTYPE urlrewrite [

并在底部做广告

]>

它不再是红色的。

所以我建议,

  1. 获取 dtd
  2. 改变它
  3. 将其保存在与xml相同的目录中
  4. 更改 xml 以使用同一目录中的 dtd。
于 2010-06-15T23:58:55.300 回答
1

在 IntelliJ IDEA 中,您可以选择红色的 DTD URI,按 Alt-Enter,然后选择“获取外部资源”。

在 Eclipse 中,您可以将条目添加到以下 XML 目录:Preferences -> XML -> XML Catalog。

我希望这有帮助。

于 2010-06-17T08:46:07.683 回答
1

将 dtd url 设置为“ http://urlrewritefilter.googlecode.com/svn-history/r275/trunk/src/java/org/tukey/web/filters/urlrewrite/dtds/urlrewrite3.0.dtd ”,它可以工作。

于 2010-08-12T09:30:44.900 回答
0

最好下载 DTD 并使用 XML 目录条目指向它,因为这使得在发布时无需更改 DTD,但您的文件将在开发时在本地验证。

于 2011-03-09T10:10:10.833 回答
0

我已经弄清楚了问题所在。用你的浏览器试试这个 url http://tukey.org/res/dtds/urlrewrite3.1.dtd,你会看到它把你重定向到完全不同的 html 页面而不是 dtd 文件。所以这就是我所做的。我从 tukey jar 中找到 dtd 文件并将内容复制到 {workspace}/.metadata/.plugins/org.eclipse.wst.internet.cache/279269156.cache 并从标记视图中删除警告并重新验证。Rememer 279269156.cache 缓存文件的名称会有所不同。所以你必须通过一些编辑器打开缓存文件来找到哪个是坏文件

于 2011-06-20T05:31:36.407 回答
0

我得到了 DTD ... 将其保存在与 xml 相同的目录中并对其进行了更改。现在 DTD 和 xml 中有一个红色

文档类型声明包含或指向的标记声明必须格式正确。urlrewrite3.0.dtd

引用的文件包含错误 (....App/src/main/webapp/WEB-INF/urlrewrite3.0.dtd)。..

请上传您的 xml 文件和 dtd 文件。

于 2010-06-17T03:41:50.173 回答
0

该问题已在下一个版本中得到修复...... https://jira.springsource.org/browse/ROO-1129

于 2010-07-25T13:18:01.973 回答
0

我使用了 user374708 方法并清除了网络缓存,如 Nearmars 帖子中所示

于 2010-07-23T11:54:43.953 回答