xml - 对于 XML 中的非默认命名空间,每个标记都应该有一个前缀吗?

标签 xml xml-namespaces xml-validation

我是 XML 的初学者。我刚刚研究了命名空间,我有点挣扎所以我的问题是在这个例子中,

<s:root xmlns:s="help.com">
  <h></h>
</s:root>

我们可以<h>吗?没有 s:前缀 ?

如果是,就是<h>包含在 s: 中是否命名空间?

我知道这是一个愚蠢的问题,但每个人都开始愚蠢。感谢您的回答。

最佳答案

您的问题一点都不“愚蠢”——实际上反射(reflect)了先进的新兴理解。

“应该”XML

“应该”XML 问题可以在两个级别上回答:well-formedness and validity .

  1. 您的 XML 确实格式正确。它遵循所有规则 是 XML。它甚至遵循所有规则 命名空间格式正确。根据 XML 格式良好的规则,是的, 你可以有一个没有 s: 前缀的 h 元素。 (根据规则 namespace-well-formedness,你也可以——你只是不能 带有未声明的 d 命名空间前缀的 d:h 元素。)

  2. 您的 XML 可能有效也可能无效。在 XML 术语中,有效 暗示它遵循模式给出的规则(通常是 XSD; 不太常见的 DTD、Relax NG、Schematron 等)。根据有效期规则 由 XML 模式给出,您可能有也可能没有 h 元素 在那个位置——我们必须有一个 XML 模式才能知道。

XML 命名空间

对于您的 XML,

<s:root xmlns:s="help.com">
  <h></h>
</s:root>
  • root 位于 help.com 命名空间中。
  • h 不在命名空间中。

对于这个 XML,

<root xmlns="help.com">
  <h></h>
</root>
  • root 位于 help.com 命名空间中。
  • h 也在 help.com 命名空间中,因为 xmlns="help.com" 声明 应用于 root 和所有后代元素的默认命名空间 缺少命名空间声明。

关于xml - 对于 XML 中的非默认命名空间,每个标记都应该有一个前缀吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67342901/

相关文章:

c# - 将 xml 与 ApprovalTests 进行比较时忽略属性的顺序

xmlns、xmlns :xsi, xsi :schemaLocation, 和 targetNamespace?

c# - 生成命名空间的 XML

xml - src 解析 : Cannot resolve the name 'ds:Signature' to an 'element declaration' component

php - 使用 PHP/MySQL 应用程序时是否有理由使用 XML/XSLT?

android - 将 Tab Activity 放在屏幕底部

xml - 如果未指定其多重性,是否需要该元素?

xml - 验证 XSD : Opening and ending tag mismatch

java - 关于 Android Gallery 控件的一般问题

java - 默认命名空间和复杂的包/数据结构