在阅读W3C关于XML Schema的文档时,我遇到了两个术语“值空间”和“词汇空间”,它们看起来非常相似。
This thread表示值空间是抽象定义,而词汇空间是指该数据类型的特定内容。
作为类比,可以公平地说值空间可以是正则表达式,而词汇空间可以是与正则表达式匹配的任何字符串吗?
答案 0 :(得分:6)
值空间是给定类型的值范围,而词汇空间是表示的范围。
因此,例如,double类型的值空间包含可以用64位IEEE 754浮点数表示的所有值;即一组数字,以及∞,-∞和非数字。
它有一个词汇空间,包括表示所涵盖数字的各种方式,以及INF
,-INF
和NaN
。
因此,字符串INF
对应值∞。
字符串12.5
对应值12.5。
字符串12.000
,12
,1.2E1
,12.0E0
和12.0
都与值12相对应。
因此,对于某些值类型,词法空间和值空间之间的映射可以是多对一的。
使用字符串类型以及通过限制基于它的任何类型,映射是一对一的。
请注意,词法空间是指处理XML后生成的字符串,因此对于包含文本12
的XML文档,我们会处理实体以在词法中生成字符串12
双倍空间(对应12)。或者换句话说,虽然12
也是表示12的一种方式以及我给出的其他示例,但它处于比处理XML模式更低的级别;在该级别,我们将其视为字符串12
,因为12
只是在XML文档中表示该字符串的另一种方式。
答案 1 :(得分:0)
乔恩·汉纳(Jon Hanna)已经很好地回答了。
我的2美分是这样的:
XML模式中的所有数据类型都由三种类型组成
值空间:一组不同且有效的值,每个值对应一个或多个字符串表示形式(例如,数字72是单个值)
词汇空间:一组词汇表示形式,即表示值的字符串文字(例如,任何字符串“ 72”或“七十二”或“ 0.72E2”都可以表示值72) )
一组方面:值空间的属性,可以是单个值或词汇术语
考虑以下示例:
printgraph
在“名称”空间中,字符串的值与其词法表示相同。
在以XML表示但它的值是数学结构(例如XML)的“人口”元素中。 “五百”。以上代码段中的字符串500只是一种可能的词汇表示形式。也可以使用诸如500.00或500.0