定义元素

这个<定义>元素允许表达序列在其他文件中命名和引用表达序列通过那个名字。它包含一个或多个<让>元素。每个<让>元素定义let定义,文件的名称let定义通过<让>元素的名称属性,而其值是表达式序列:

<!--一些表达式序列--><!--一些表达式序列-->

这些let表达式序列可以通过两种不同的方式访问:通过定义表达式,或者通过<条件>元素的布尔表达式%代币。这个定义表达式如中所述定义表达式. 本节介绍%中的令牌<条件>元素的布尔表达式。

回想一下,与映射规则的匹配布尔表达式不同,来自<条件>元素可能包含一个额外的%代币,复制如下以供参考。

booleanExpr=attrCondition | andExpr | orExpr |'('booleanExpr')'andExpr=booleanExpr'和'booleanExpr orExpr=booleanExpr'或'booleanExpr attrCondition='@'attrName('+'|'-')|'@'attrName('='!=')'%'?(''“|”')属性值(“'”|“'”)

代币%意思是解释属性值作为一个let定义. let定义的值属性值表达序列,然后替换为比较。

下面的示例说明let定义可通过<条件>元素的布尔表达式。

播放器.xml

<?xml version=“1.0”?>Josephine16Joan17

我们想绘制每个<玩家>元素转换为FME特征。我们还想在FME特性中添加一个位置属性来描述玩家的位置。注意,所有位置信息都在单个玩家的数据之前;因此,我们将使用组映射规则:

玩家.xmp

<?xml version=“1.0”?><--我们创建这个组,以便在position元素之外构造的组可以在这里持久存在。--><--为每个位置元素构造一个组,当读取位置元素结束标记时,该组被定义为保留在其父组中(即,在上面的组映射中定义的组)。--> <定义><--此let定义将由下面的condition元素访问。我们要跟踪这个组的创建者的名字。-->/>应用属性集--只有具有名为“name”的属性(其值等于“playerName”表示的表达式序列的值)的功能才会接收属性集。--> <条件feature=“@name=%'playerName'”/>

FME的特征是当上述播放器.xml玩家.xmp输入XML读取器的是:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++功能类型:`player'属性:`age'具有值`16'属性:`name'具有值`Josephine'属性:`position'具有值`forward'属性:`xml\u Type'具有值`xml\u no\u geom'几何体类型:未知(0)===================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++功能类型:`player'属性:`age'具有值`17'属性:`name'具有值`Joan'属性:`position'具有值`backward'属性:`xml\u Type'具有值`xml\u no\u geom'几何体类型:未知(0)===================================================================

请注意,player FME特性包含具有正确属性值的position元素。