有没有简单而通用的方法来定位基于命名空间的模式?例如,在下面的XML中,我如何找到http://schemas.microsoft.com/developer/msbuild/2003的架构?
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
答案 0 :(得分:3)
检查任何可用的xsi:schemaLocation提示给出的位置:
xsi:schemaLocation="namespace location"
。
在这种情况下,我们没有架构位置提示。
通过在浏览器中键入命名空间值,如果是URI形式,则检查它。
在这种情况下,http://schemas.microsoft.com/developer/msbuild/2003
命名空间采用URI的形式,但端点上没有XSD:
您要查找的资源已被删除,名称已有 已更改,或暂时无法使用。
检查正在播放的URI Resolution个XML Catalogs条目。
在这种情况下,没有提到任何XML目录。
在这种情况下,搜索到的命名空间没有条目。
检查维基百科的List of XML markup languages和List of XML schemas。
在这种情况下,搜索到的命名空间没有条目。
检查XML工具的架构关联机制。以下是一些:
XML Spy :查看DTD/Schema > Assign Schema...
menu command或他们的XML catalog mechanism。
Oxygen XML Editor :查看Document > Schema > Associate schema...
menu command或他们的XML catalog mechanism
Visual Studio 2013 :检查XML编辑器的本地架构缓存
%InstallDir%\Xml\Schemas
目录。 XML编辑器允许XSD与之关联
通过XML Schemas Dialog Box。
在这种情况下,没有提到任何工具,但它是Microsoft命名空间,因此如果安装了Visual Studio,请检查XML Schemas对话框和本地架构缓存中列出的关联。
根据this source,给定命名空间的XSD是 msbuild.xsd ,可以位于Visual Studio架构缓存中。 这是MSBuild生成文件的架构。
底线:通常,上述过程应该允许您将命名空间解析为XSD的物理位置,但要注意难度可以从简单到不可能变化。
答案 1 :(得分:1)
XML命名空间和资源URL之间没有映射,您可以在其中找到架构资源。命名空间就是 - 可以定义名称的空格,以免与其他名称冲突。