在XML中,</x:out>
和</out>
标签之间有什么区别?因此,例如,如果我有一个<quantity>23</x:quantity>
和一个<quantity>23</quantity>
,那会有什么不同?
答案 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属性以xmlns
或xmlns:
)。例如,以下文档使用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>
之类的构造仅在同时绑定x
和y
命名空间前缀时才有效到相同的名称空间名称,例如
<x:myelement xmlns:x="http://example.com/myvocab" xmlns:y="http://example.com/myvocab">...</y:myelement>
相比之下,SGML(XML和HTML的祖先/超集)通常不会 (1)将名称空间前缀甚至冒号(:
)字符都视为特殊字符并解释整个字符字符串x:myelement
作为元素名称。
(1),除非使用ISO / IEC 19757-9:2008中定义的特殊DSDL-9名称空间绑定处理指令