Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML属性和XML标记之间有什么区别?_Xml_Xpath_Indexing_Basex - Fatal编程技术网

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>