什么是XML"命名空间"它是如何定义的?

时间:2016-04-22 14:00:34

标签: .net xml

我需要更新我们的应用程序以支持上传XML文档,而不仅仅是CSV。所以我试图首先验证用户上传的文件是否包含所有必需的节点。

我正在MSDN阅读本指南,但我不清楚这段代码中的第三个命令:

string xsdMarkup =
    @"<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
        <xsd:element name='Root'>
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name='Child1' minOccurs='1' maxOccurs='1'/>
                    <xsd:element name='Child2' minOccurs='1' maxOccurs='1'/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:schema>";

XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));

XmlSchemaSet对象的documentation将第一个字符串定义为:

  

的targetNamespace

     

输入:System.String

     

架构targetNamespace属性,或null以使用架构中指定的targetNamespace。

然后在评论中,它有关于该参数的注释:

  

XmlSchemaSet的Add方法能够使用模式中定义的目标名称空间,而不是在调用Add方法时将目标名称空间指定为参数。 为Add方法指定null或String.Empty指示XmlSchemaSet使用架构中定义的目标命名空间。有关此行为的示例,请参阅Add(string targetNamespace, string schemaUri)方法。

但我并不完全明白我加粗的部分是什么意思。

引用XML的命名空间是什么意思?从代码的角度来看,我知道这意味着什么,而不是XML。另外,在我从MSDN上面发布的代码片段中,这个命名空间在哪里定义?由于它将空字符串传递给Add方法,这意味着它引用了模式中定义的目标名称空间,该目标名称空间必须是xmlns节点中的第一个xsdMarkup节点。 1}}字符串。但我还是不明白。

我真的不明白&#34;我正在看什么,或者我应该如何配置我的架构,以确保他们上传到我的应用程序的XML具有所有需要的节点。我看到this SO question on how to define an XML namespace,但这对我没有帮助。

0 个答案:

没有答案