我是 XML 的初学者。我刚刚研究了命名空间,我有点挣扎所以我的问题是在这个例子中,
<s:root xmlns:s="help.com">
<h></h>
</s:root>
我们可以<h>
吗?没有 s:
前缀 ?
如果是,就是<h>
包含在 s:
中是否命名空间?
我知道这是一个愚蠢的问题,但每个人都开始愚蠢。感谢您的回答。
最佳答案
您的问题一点都不“愚蠢”——实际上反射(reflect)了先进的新兴理解。
“应该”XML
“应该”XML 问题可以在两个级别上回答:well-formedness and validity .
您的 XML 确实格式正确。它遵循所有规则 是 XML。它甚至遵循所有规则 命名空间格式正确。根据 XML 格式良好的规则,是的, 你可以有一个没有
s:
前缀的h
元素。 (根据规则 namespace-well-formedness,你也可以——你只是不能 带有未声明的d
命名空间前缀的d:h
元素。)您的 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/