问题描述
我正在 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
的各种咒语一起用于空间,但还没有能够让它工作。
解决方法
xsi:schemaLocation
的值是以空格分隔的 XML 命名空间值和 XSD 文件位置的序列对。由于空格用于分隔这些组件对和每对的部分,因此 XSD 文件规范中也不能出现明显未转义的空格。
解决方案是在 XSD 的文件路径中使用 %20
代替原始空格字符。您说您已经尝试过与其他实验的各种组合,但都没有成功。当您消除 XSD 目录路径中的空格时,回溯到您证明有效的情况。使用那个确切的情况,只做一个改变:在你希望有空格的地方替换 %20
,并对文件系统中的路径进行相应的更改(使用实际的、未转义的空格——不再使用或小于 xsi:schemaLocation
值中使用的值。
应该可以。如果它没有发布证明它没有的最小、完整、可验证的示例,以及您正在使用的 XSD 处理器。请务必根据关联的 XSD 实际验证文档实例,以将重要的 XML-XSD 问题与无关紧要的 Visual Studio IDE 解析限制区分开来。