当前位置: 首页 > 知识库问答 >
问题:

noNamespaceSchemaLocation属性对XML解析有什么影响?

施晗昱
2023-03-14

根据定义

noNamespaceSchema位置属性引用没有目标命名空间的XML Schema文档。

这个属性将如何改变解析的结果?

例如,以这个XML为例:

<?xml version="1.0"?>
<name
  xmlns="http://www.example.com/name"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.example.com/name schema/schema.xsd"
  title="Mr.">
   <first>John</first>
   <middle>M</middle>
   <last>Doe</last>
</name>

参考此模式:

<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:target="http://www.example.com/name"
targetNamespace="http://www.example.com/name" elementFormDefault="qualified">
  <element name="name">
    <complexType>
      <sequence>
        <element name="first" type="string"/>
        <element name="middle" type="string"/>
        <element name="last" type="string"/>
      </sequence>
      <attribute name="title" type="string"/>
    </complexType>
  </element>
</schema>

我从架构中删除了以下命名空间声明:

xmlns:target="http://www.example.com/name" 
targetNamespace="http://www.example.com/name" 

即使在引用XML中不使用noNamespaceSchemaLocation属性,也不会引发错误。为什么我们一开始就需要这个属性?

共有1个答案

怀晋
2023-03-14

该属性对XML解析器没有影响。如果设置了适当的选项,它可能会影响XML模式处理器的行为;同样,它可能会影响结合XML解析和XML模式验证功能的程序的行为。它告诉模式处理器在何处查找描述文档的模式。

但是,即使使用模式处理器,noNamespaceSchemaLocation属性也不会影响像您这样的文档的验证,其中元素都位于名称空间中。

 类似资料:
  • 问题内容: 我目前正在解析XML,但是我不太确定如何解析“消息”的“状态”属性: 这是代码,我切断了所有不必要的内容: 谁能指导我该如何完成? 提前致谢。 问题答案: Node.getAttributes() 如果使用XPATH检索数据,则可以避免遍历。阅读本教程。

  • 我有一个来自API的xml。 当我尝试使用simplexml\u load\u字符串或simplexmlement进行解析时,我得到了这个结果。 [广告]= 重要的是缺少我需要的url visibleurl属性。我试着在网上找,浪费了一整天来解决这个问题,但没有答案。有人能纠正我正在做的错误吗? PHP代码:

  • 下面是vb中的一个特殊情况。我搞乱了SuppressKeyPress属性,发现了一些奇怪的东西。 形势 假设我有一个名为的输入框,我希望名称不带任何数字,当插入数字时,会弹出一个MessageBox并报告错误。 在这种情况下,由于某种奇怪的原因,如果我键入一个数字,它将被写入文本框中,尽管我抑制了按键。 我发现,如果我删除MsgBox行,数字将不会出现在输入框中。 问题 这是怎么回事?为什么Msg

  • 我在Apache HttpClients教程中读到关闭并丢弃连接。我的问题是,当我们使用一个只管理单个连接的时,我调用我是否无法重用同一个HttpClient,因为连接已经关闭并被丢弃?

  • 请考虑以下情况: 这将无法编译,并出现关于< code>A::A的不明确重载的错误。两个候选人都被认为是可行的,因为要求很简单: 其次,为了使 成为一个可行的函数,每个参数都应该存在一个隐式转换序列 (13.3.3.1),该序列将该参数转换为 的相应参数。 虽然有一个从<code>double</code>到<code>int</code>的隐式转换序列,但<code>A(int)</code>重

  • 问题内容: 我有这样的XML结构: 我不知道如何收集SubItemField元素的值和属性,我的代码是这样的: 我需要属性和值,但是获取我知道的值的唯一方法就是使用 而不是我的自定义类型。我正在使用xml.Unmarshal btw。 任何想法? 谢谢。 问题答案: 我想出了如何做到这一点,我只需要在结构中添加一个匹配的新属性即可,如下所示: 我希望这可以帮助某人,因为没有相关文档或示例。