4

我开始使用 Visual Studio 来编写我的 XUL,因为它给了我智能感知和验证,因为我使用了一个特殊的 XUL xml-schema。

这种方法仍然存在一些问题,我想修复这些问题以使 VS 成为更可用的 XUL-IDE。

VS 对 chrome 协议一无所知,并在以下 xml 代码中给了我一个错误(“无法识别 URI 前缀”):

<!DOCTYPE window SYSTEM "chrome://myApp/locale/main.dtd">

这不是VS的错。由于它不知道协议,它无法解释 URI,它不知道 main.dtd 所在的位置,因此不知道其中声明的实体,这将在其他地方。

我的目标是扩展 XML 解析器或 VS 或其他任何东西,以便它可以解释 URI。这不应该是一项艰巨的任务,因为 chrome 所做的只是根据“chrome.manifest”文件中的信息将 URI 映射到文件路径,所以

chrome://myApp/locale/main.dtd

实际上是这样的

file:///c:/somefolder/myapp/locale/main.dtd

我只需要知道,我如何告诉 VS / XML 解析器关于 URI 前缀以及如何解释它,以便它链接到真实文件。

有没有人有什么建议?

非常感谢!

4

2 回答 2

2

我会尝试以下方法:

  1. 在 Chrome 的下一行使用另一个 Doctype 标记,除了这个使用 file:// URI 方案。
  2. 如果这不起作用,请尝试使用文件 URI 本身完全替换 chrome URI。

在某些情况下,允许使用多个 doctype 标签。

于 2009-05-31T04:10:20.530 回答
1

深入了解适用于您的安装的 Visual Studio 安装目录下的 Program Files。

您将找到 Xml 的子目录,以及 Schemas 的子目录。

例如,在我的系统上,目录是:

C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas

您在此处输入的任何架构文件都将根据架构的 URI 与您编辑的 XML 文件相匹配。

我相信(但尚未测试)DTD 以同样的方式得到支持;只需将您的 DTD 放在此目录中,并确保 DTD 的 URI 匹配。

旁注:模式和 DTD 使用 URI(通用资源标识符),而不是 URL(通用资源定位器)。URI 实际上并没有提供关于在哪里找到它的任何信息。这只是一个名字。

更新

事实证明 Visual Studio 不支持 DTD,所以我的想法不会浮动。

不过还有另一种可能性:由于 Visual Studio确实支持架构,因此您可以通过将 DTD 转换为架构来获得一些吸引力。一个快速的谷歌发现DTD2Schema,一个基于 perl 的W3站点本身的工具。可能值得一试...

于 2009-06-05T02:39:11.507 回答