XML属性和XML标记之间有什么区别?
我通读了一遍,发现它们提供了一个标记索引和一个属性标记。然而,我不清楚两者之间的区别是什么 属性似乎是我所知道的常规属性:XML属性和XML标记之间有什么区别?,xml,xpath,indexing,basex,Xml,Xpath,Indexing,Basex,我通读了一遍,发现它们提供了一个标记索引和一个属性标记。然而,我不清楚两者之间的区别是什么 属性似乎是我所知道的常规属性: <node attribute="value"/> 令牌索引改进了包含检查,例如 //div[contains-token(@class, 'row')] 那么,令牌索引不就是一个高级属性索引,可以处理多个值吗?还是我遗漏了什么?什么时候会使用一个或另一个,它们在组合中有用吗?不幸的是,在XPath、XML、XML模式、DTD和其他相关技术中,令牌在不同的上
<node attribute="value"/>
令牌索引改进了包含检查,例如
//div[contains-token(@class, 'row')]
那么,令牌索引不就是一个高级属性索引,可以处理多个值吗?还是我遗漏了什么?什么时候会使用一个或另一个,它们在组合中有用吗?不幸的是,在XPath、XML、XML模式、DTD和其他相关技术中,令牌在不同的上下文中意味着一些不同的东西,这可能会使术语出现时有点不清楚
这里他们指的是由XML名称字符组成的字符串意义上的令牌
在定义属性的许多方法中,有一种情况是使用多个由空格分隔的标记,这些标记的顺序没有意义。以您引用的其中一个示例为例:
//div[contains-token(@class, 'row')]
这将与以下各项相匹配:
<div class="row">
<div class="row important">
<div class="important row">
<div class="important row warning">
将在一个属性上使用=
,在另一个属性上使用包含标记
(同样,真正的包含标记不是一种索引类型,它是一个作用于字符串的字符串函数,在索引中通常很有用)。术语“名称标记”源自这样的DTD中声明的SGML属性
<!ATTLIST your-element an-attribute-name NMTOKEN #IMPLIED>
<!ATTLIST your-element an-attribute-name (value1|value2) #IMPLIED>
<your-element value1>
(对于第一个示例),或
HTML还有一个额外的怪癖,它可能将true
/false
作为DOM属性值公开
也就是说,您链接的文档表明
XQuery函数fn:contains token
,fn:tokenize
和fn:idref
尽可能被重写以进行索引访问
啊,我想我明白了。因此,属性索引将为整个字符串的第二个示例编制索引行重要
,而标记将分别使用行重要
和行重要
?你能否详细说明我丢失的问题,即两个索引是否应该一起使用,以及为什么或为什么不一起使用?
//a[@href = 'http://example.net/][contains-token(@class, 'cool')]
<!ATTLIST your-element an-attribute-name NMTOKEN #IMPLIED>
<!ATTLIST your-element an-attribute-name (value1|value2) #IMPLIED>
<your-element an-attribute="whatever">
<your-element an-attribute="value1">
<your-element value1>
<div hidden>
<option selected>