</x:out>和</out>标签有什么区别?

时间:2019-06-11 10:30:30

标签: xml xml-namespaces

在XML中,</x:out></out>标签之间有什么区别?因此,例如,如果我有一个<quantity>23</x:quantity>和一个<quantity>23</quantity>,那会有什么不同?

2 个答案:

答案 0 :(得分:1)

不同之处在于您会得到一个错误

<quantity>23</x:quantity>

与之没有错误

<quantity>23</quantity>

在整个xml文档中找到的前缀称为名称空间前缀。 如上面的答案所示,名称空间标记“ x”只是实际名称空间的占位符,它几乎只是元素范围的唯一标识符。 命名空间是使用xml的重要且不可超越的部分,但它们具有良好的功能。在使用所有类型的工作流工具来更高级别地识别/设置范围之前,应通过该元素的给定名称空间定义该元素应起作用的范围。

示例:

x = oldNamespace,xy = newNamespace。 xslt中的以下代码模板在xml文档中出现时会调用<x:element>,并创建一个新元素<xy:element>,并将<x:element>的值复制到该元素。

 <xsl:template match="x:element">
   <xsl:element name="xy:element">
      <xsl:value-of select="current()"/>
   </xsl:element>
</xsl:template>

这样做的好处是,与<xy:element>相比,新形成的<x:element>是一个完全不同的元素,并且当<xy:element>被某种其他函数调用时,它将离开{单独使用{1}},从而定义了<x:element>和随后的<x:element>的范围。

因此,“ x:”前缀不会像使用其他编程语言(我想可能会引起您的困惑)那样在元素<xy:element>上产生函数“ x”,它只是将环境中的元素。

干杯!

答案 1 :(得分:0)

x中的<x:out>被XML解析器解释为命名空间前缀,这是一种使用两个或多个XML词汇组成文档的机制,这些词汇具有相同的元素本地名称。例如,XHTML具有title元素,SVG也具有。现在,在同时包含XHTML和SVG标记的文档中,根据给定的title元素是否适用于XHTML,需要对title元素进行不同处理(以进行验证和允许的属性等)。或SVG内容。在XML中,名称空间前缀(所有出现在元素或属性名称中:之前的内容)必须命名空间绑定进行绑定(一个或多个特殊的XML属性以xmlnsxmlns:)。例如,以下文档使用xmlns:myvocabulary="http://example.com/myvocabulary"名称空间绑定将XML名称空间前缀myvocabulary分配给URI http://example.com/myvocabulary标识的名称空间名称:

<p>
  <myvocabulary:myelement xmlns:myvocabulary="http://example.com/myvocabulary"/>
</p>

名称空间名称是URL的事实并不重要-XML解析器仅使用URL作为名称空间名称的字符串标识符。

编辑:迈克尔指出,以下内容不正确。相反,构造<x:myelement>...</y:myelement>始终是 无效,并且命名空间前缀(不仅限于绑定的命名空间名称在匹配开始和结束时必须相同) -element标签。

请注意,XML要求XML内容相对于XML命名空间具有良好的格式:<x:myelement>...</y:myelement>之类的构造仅在同时绑定xy命名空间前缀时才有效到相同的名称空间名称,例如

<x:myelement xmlns:x="http://example.com/myvocab" xmlns:y="http://example.com/myvocab">...</y:myelement>

相比之下,SGML(XML和HTML的祖先/超集)通常不会 (1)将名称空间前缀甚至冒号(:)字符都视为特殊字符并解释整个字符字符串x:myelement作为元素名称。

请参见Namespaces in XML

(1),除非使用ISO / IEC 19757-9:2008中定义的特殊DSDL-9名称空间绑定处理指令