gpt4 book ai didi

xml - XML 文件中的默认命名空间不适用于 XSD,为什么?

转载 作者:行者123 更新时间:2023-12-04 17:00:34 25 4
gpt4 key购买 nike

我有一个 XML 文件和 XSD。在这种形式下它工作正常:

<tns:Users xmlns:tns="http://www.example.org/NewXMLSchema">
<User>
<FirstName>Max</FirstName>
<LastName>Gordon</LastName>
<Salary>80000</Salary>
</User>
<User>
<FirstName>Alex</FirstName>
<LastName>Disel</LastName>
<Salary>75000</Salary>
</User>
</tns:Users>

<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/NewXMLSchema"
xmlns:tns="http://www.example.org/NewXMLSchema">
<element name="Users">
<complexType>
<sequence maxOccurs="unbounded" minOccurs="1">
<element name="User">
<complexType>
<sequence>
<element name="FirstName" type="string"/>
<element name="LastName" type="string"/>
<element name="Salary" type="int"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>

我想知道为什么它不在另一个中:如果我在 xml 文件中省略了 tns 前缀?我的意思是它会成为一个默认的命名空间:
<Users xmlns="http://www.example.org/NewXMLSchema">
<User>
<FirstName>Max</FirstName>
<LastName>Gordon</LastName>
<Salary>80000</Salary>
</User>
<User>
<FirstName>Alex</FirstName>
<LastName>Disel</LastName>
<Salary>75000</Salary>
</User>
</Users>

最佳答案

因为这些是不同的 XML 文档。

在第一个 XML 中:

<tns:Users xmlns:tns="http://www.example.org/NewXMLSchema">
<User>
<FirstName>Max</FirstName>
<LastName>Gordon</LastName>
<Salary>80000</Salary>
</User>
<User>
<FirstName>Alex</FirstName>
<LastName>Disel</LastName>
<Salary>75000</Salary>
</User>
</tns:Users>

只有根元素 Usershttp://www.example.org/NewXMLSchema命名空间。
所有其他元素都在 {no namespace} 中。

这对应于您的 XML 架构。它确实定义了目标命名空间。
但它只适用于全局元素 Users .
所有其他元素都在本地声明,并且它们的命名空间是确定的
elementFormDefault <schema ...> 的属性元素。
您不指定此属性,但它存在且其默认值为“不合格”。
这意味着所有本地元素都没有命名空间。

现在,让我们看看你的第二个 XML:
<Users xmlns="http://www.example.org/NewXMLSchema">
<User>
<FirstName>Max</FirstName>
<LastName>Gordon</LastName>
<Salary>80000</Salary>
</User>
<User>
<FirstName>Alex</FirstName>
<LastName>Disel</LastName>
<Salary>75000</Salary>
</User>
</Users>

在这里,您直截了本地指定 全部 元素在 http://www.example.org/NewXMLSchema命名空间(根和其他一切)。但这不符合您的 XML 模式!

关于xml - XML 文件中的默认命名空间不适用于 XSD,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18169319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com