代码之家  ›  专栏  ›  技术社区  ›  Patrick Desjardins

xsd文件,在哪里获取xmlns参数?

  •  2
  • Patrick Desjardins  · 技术社区  · 15 年前
    <?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://不是有效的……背后的逻辑是什么?我在哪里可以知道应该放什么或如何改变它?

    3 回复  |  直到 15 年前
        1
  •  11
  •   womp    15 年前

    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 . 更改命名空间时,什么不起作用?

        2
  •  2
  •   Oded    15 年前

    除了必须是唯一的之外,名称空间没有语义意义。人们通常使用uri表单,因为它可能指向文档,但这不是一个要求。

    在这种情况下,它是默认的命名空间,并且可能是您用来生成 .cs 文件是硬编码的。

    在编写良好的应用程序中,只要简单地更改名称空间字符串,就不会有任何中断。

        3
  •  2
  •   marc_s MisterSmith    15 年前
    xmlns="http://schemas.businessNameHere.com/SoftwareNameHere" 
    

    这是 必须存在某个文档的有效url 只有 表示XML命名空间的字符串(类似于C应用程序中名为 System.Data 或者别的什么)。

    你可以很容易地改变那根线 没有什么 在这里被引用。(但这是一个常见的误解)

    人们经常使用url语法,因为向您/您的公司注册的域保证在全球范围内是唯一的->因此您从中派生的xml名称空间在全球范围内也是唯一的。

    推荐文章