如何在 XSD xsi:schemaLocation 相对路径中指定空格?

问题描述

我正在 Visual Studio 中编辑一个 XML 文件,该文件在相对路径中引用 XSD,其中一个文件名称中带有空格。 Visual Studio 似乎没有留下深刻印象。

如果我从文件夹中删除空间名称,它会起作用并且我可以导航。

<?xml version="1.0" encoding="UTF-8"?>
  <SyncTests xmlns="http://www.mimosa.org/ccom4" releaseID="1.0" versionID="4.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.mimosa.org/ccom4 ../../CCOM/BOD/Messages/OperationandCondition/synctests.xsd">

但是原来的文件名称在“操作和条件”中有空格。

<?xml version="1.0" encoding="UTF-8"?>
  <SyncTests xmlns="http://www.mimosa.org/ccom4" releaseID="1.0" versionID="4.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.mimosa.org/ccom4 ../../CCOM/BOD/Messages/Operation and Condition/synctests.xsd">

我一直试图让它与 file:///%20 的各种咒语一起用于空间,但还没有能够让它工作。

文件夹结构来自另一个存储库,我希望能够保持原样(带空格)。

enter image description here

解决方法

xsi:schemaLocation 的值是以空格分隔的 XML 命名空间值和 XSD 文件位置的序列对。由于空格用于分隔这些组件对和每对的部分,因此 XSD 文件规范中也不能出现明显未转义的空格。

解决方案是在 XSD 的文件路径中使用 %20 代替原始空格字符。您说您已经尝试过与其他实验的各种组合,但都没有成功。当您消除 XSD 目录路径中的空格时,回溯到您证明有效的情况。使用那个确切的情况,只做一个改变:在你希望有空格的地方替换 %20,并对文件系统中的路径进行相应的更改(使用实际的、未转义的空格——不再使用或小于 xsi:schemaLocation 值中使用的值。

应该可以。如果它没有发布证明它没有的最小、完整、可验证的示例,以及您正在使用的 XSD 处理器。请务必根据关联的 XSD 实际验证文档实例,以将重要的 XML-XSD 问题与无关紧要的 Visual Studio IDE 解析限制区分开来。

另见

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...