【问题标题】:XSD file, where to get xmlns argument?XSD 文件,从哪里获取 xmlns 参数?
【发布时间】:2010-04-07 19:04:25
【问题描述】:
<?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:// 不是一个有效的......背后的逻辑是什么,我在哪里可以得到关于放什么或如何改变它的信息?

【问题讨论】:

    标签: c# asp.net xsd


    【解决方案1】:

    XSD 命名空间不必是有效的 URI。拥有一个作为 URL 的命名空间字符串并不意味着从 URL 中获取任何内容,或者与 Web 有任何关系——它只是一个与其他字符串一样的字符串。因此,尽管从实际上不指向任何东西的意义上说,URL 可能是无效的,但它仍然是作为命名空间声明的有效字符串。

    您可以阅读一些reasoning behind namespace identifiers being in this format here

    使用 URL 作为命名空间标识符有几个原因,但主要是为了方便 - 它是一个唯一标识符,通常对用户具有一定的意义,就像 Java 命名空间通常以“com”开头的方式、“组织”或“网络”。

    关于命名空间为何采用 URI(技术上是 IRI)格式的细节,您可以阅读W3C's standards for XML namespaces。指定 XML 命名空间采用 IRI(国际资源标识符)格式,在 RFC3986 中定义。

    有关如何正确使用命名空间的更多信息,有很多很棒的演练,like this one。更改命名空间时什么不起作用?

    【讨论】:

    • 你可能有一个错字——“命名空间不必是有效的 URI”。平均网址?
    • @xcut:命名空间是 URI,其中包括 URL。
    • 我很清楚这一点。这就是为什么说命名空间标识符不必是有效的 URI 是错误的。它们确实如此,它们不必是可解析的 URL。
    【解决方案2】:

    命名空间除了必须是唯一的之外没有语义意义。人们通常使用 URI 形式,因为它可能指向文档,但这不是必需的。

    在这种情况下,它是默认命名空间,您用来生成 .cs 文件的应用程序可能经过硬编码以使用它。

    在编写良好的应用程序中,如果您只是更改命名空间字符串,则不会出现任何问题。

    【讨论】:

      【解决方案3】:
      xmlns="http://schemas.businessNameHere.com/SoftwareNameHere" 
      

      不是一个必须存在某些文档的有效 URL - 它只是一个表示 XML 命名空间的字符串(就像 C# 应用程序中名为 @987654322 的命名空间@ 或其他)。

      您可以轻松更改该字符串 - 这里没有引用 nothing。 (但这是一个常见的误解)

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-13
        相关资源
        最近更新 更多