【问题标题】:Understanding NCName and QName in XPath/XML了解 XPath/XML 中的 NCName 和 QName
【发布时间】:2020-12-01 06:03:26
【问题描述】:

什么是NCNameQName 在XML 中的基本解释是什么?在XPath page 上多次提到它,例如:

name 函数返回一个包含 QName 的字符串,该 QName 表示参数节点集中的节点的扩展名称,该节点在文档顺序中排在第一位。 QName 必须代表扩展名称,这与在其扩展名称被表示的节点上有效的命名空间声明有关。通常,这将是 XML 源中出现的 QName。如果在将多个前缀与同一名称空间相关联的节点上存在有效的名称空间声明,则不需要这种情况。然而,一个实现可以在它的节点表示中包含关于原始前缀的信息;在这种情况下,实现可以确保返回的字符串始终与 XML 源中使用的 QName 相同。如果参数节点集为空或第一个节点没有扩展名称,则返回一个空字符串。如果它省略了参数,则默认为以上下文节点作为其唯一成员的节点集。

但我很难理解那是什么,当点击链接时,它似乎给出了一个“语法/语法”定义,但对我来说并不是一个“有意义”的定义(即,对我来说是可以解释的)而不仅仅是“哦,它代表解析器的那些字符”)。这些的定义是什么?每个都有一个例子?

【问题讨论】:

    标签: xml xpath xml-namespaces w3c ebnf


    【解决方案1】:

    需要NCNameQName 来支持XML Namespaces

    NCName

    Non-Colonized NAME 可以包含 XML Name 中允许的任何字符 冒号除外:

    NCName         ::= Name - (Char* ':' Char*)
    

    示例: pNCName,其中 <p> 可能是段落开始标记。

    定义不能包含: 的名称的动机是保留: 作为XML 命名空间前缀和名称的其余部分(称为本地部分)之间的分隔符。这将我们带到 QName...

    QName

    Q认证的NAME 可能(但不必)有一个命名空间前缀,由: 与本地部分分隔:

    QName          ::= PrefixedName | UnprefixedName
    PrefixedName   ::= Prefix ':' LocalPart
    UnprefixedName ::= LocalPart
    Prefix         ::= NCName
    LocalPart      ::= NCName
    

    示例: w:pQName<w:p> 是 OOXML 中的段落标签,其中 w 是声明为 xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 的命名空间前缀。

    另见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多