<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="abc" targetNamespace="http://schemas.businessNameHere.com/SoftwareNameHere"
elementFormDefault="qualified"
xmlns="http://schemas.businessNameHere.com/SoftwareNameHere"
xmlns:mstns="http://schemas.businessNameHere.com/SoftwareNameHere"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="..." type="..." />
<xs:complexType name="...">
我正在开发一个使用XSD生成.cs文件的项目。我的问题是关于字符串“http://schemas.businessNameHere.com/SoftwareNameHere”如果我改变它,它不起作用。但http://不是一个有效的......背后的逻辑是什么,我在哪里可以获得有关放置什么或如何更改它的信息?
答案 0 :(得分:11)
XSD名称空间不必是有效的URI。拥有一个URL的命名空间字符串并不意味着从URL中获取任何内容,或者根本不需要与Web进行任何操作 - 它只是一个像其他任何字符串一样的字符串。因此,尽管URL实际上并未指向任何内容,但它可能无效,但它仍然是一个有效的字符串作为名称空间声明。
您可以阅读部分reasoning behind namespace identifiers being in this format here。
使用URL作为命名空间标识符有几个原因,但主要是为了方便 - 它是一个唯一的标识符,通常为用户附加了一些含义,就像Java命名空间通常以“com”开头的方式一样,“org”或“net”。
对于为什么名称空间在URI(技术上, IRI )格式中的细节,您可以阅读W3C's standards for XML namespaces。指定XML命名空间采用IRI(国际资源标识符)格式,在RFC3986中定义。
有关如何正确使用命名空间的更多信息,有很多很棒的演练like this one。更改命名空间时什么不起作用?
答案 1 :(得分:2)
命名空间除了必须是唯一的之外没有语义含义。人们通常使用URI表单,因为它可能指向文档,但这不是必需的。
在这种情况下,它是默认命名空间,您用于生成.cs
文件的应用程序可能会被硬编码以使用它。
在编写良好的应用程序中,如果只是更改命名空间字符串,则不会有任何内容。
答案 2 :(得分:2)
xmlns="http://schemas.businessNameHere.com/SoftwareNameHere"
这是不一个有效的URL,其中某些文档必须存在 - 它只是 一个表示XML命名空间的字符串(就像C#应用程序中名为{{ 1}}或其他什么。
您可以轻松更改该字符串 - 此处引用了 nothing 。 (但这是一种常见的误解)
人们经常使用网址语法,因为注册到您/您公司的域名在全球范围内保证是唯一的 - &gt;因此,您从中派生的XML命名空间在全球范围内也是独一无二的。