我在 MS InfoPath 中有以下 XPath 1.0 表达式(我将发布随附的 XML):
//my:Value_Modifier_Group[1=count(following-sibling::my:Value_Modifier_Group)]//my:Modified_Start_Value[(text())] | //my:Start_Value[text() and not(//my:Value_Modifier_Group[1=count(following-sibling::my:Value_Modifier_Group)]//my:Modified_Start_Value[(text()])]
如果有初始值并且还没有“修改值”,则返回初始值。如果存在修改后的值,则将其返回。
我需要返回该值,然后对其执行以下操作:
number(//my:Value_Modifier_Group[1=count(following-sibling::my:Value_Modifier_Group)]//my:Modfied_Start_Value) + number(//my:Value_Modifier_Group[0=count(following-sibling::my:Value_Modifier_Group)]//my:Start_Value_Increase) - number(//my:Value_Modifier_Group[0=count(following-sibling::my:Value_Modifier_Group)]//my:Start_Value_Decrease)
此操作增加或减少增加/减少值。Modified_Start_Value
问题是如果不存在,这个表达式返回一个 NaN 。否则效果很好。
我需要将这两个表达式组合成一个 XPath 表达式。
- 如果
Modified_Start_Value
有前面的值,则在操作中使用它 - 如果
Modified_Start_Value
没有前面的值,则Start_Value
在操作中使用 - 重要的是我总是使用“前一个”值,因为前一个值是固定的。它充当参考点或起点。
这是我正在使用的 XML 示例:
<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.2" productVersion="14.0.0" PIVersion="1.0.0.0" href="file:///C:\Documents%20and%20Settings\Chris\Local%20Settings\Application%20Data\Microsoft\InfoPath\Designer3\ef41a19775b4ce0\manifest.xsf" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.3"?>
<my:myFields xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-09-19T13:28:35" xml:lang="en-us">
<my:Start_Value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">6</my:Start_Value>
<my:Main_Group>
<my:Value_Modifier_Group>
<my:Modified_Start_Value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">6</my:Modified_Start_Value>
<my:Start_Value_Increase>0</my:Start_Value_Increase>
<my:Start_Value_Decrease>0</my:Start_Value_Decrease>
</my:Value_Modifier_Group>
<my:Value_Modifier_Group>
<my:Modified_Start_Value>6</my:Modified_Start_Value>
<my:Start_Value_Increase>0</my:Start_Value_Increase>
<my:Start_Value_Decrease>0</my:Start_Value_Decrease>
</my:Value_Modifier_Group></my:Main_Group>
</my:myFields>
我希望这个问题不要太仓促!今天很忙...