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/8/xslt/3.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 XSLT1.0测试偏差_Xml_Xslt_Xslt 1.0 - Fatal编程技术网

Xml XSLT1.0测试偏差

Xml XSLT1.0测试偏差,xml,xslt,xslt-1.0,Xml,Xslt,Xslt 1.0,如何检查两个值是否不同?->关注节点Item.DeliveryDate和Item.OrigDeliveryDate 如果是,则应使用值yes创建新节点LineChangeDeliveryDate,否则使用值no 目前的XML: 5637248870 SO0009783-1 柔 2020-01-27 2019-12-07 XML新的/正确的: 5637248870 SO0009783-1 柔 2020-01-27 2019-12-07 对 当前XSLT: 在带有match=“Item”的模

如何检查两个值是否不同?->关注节点
Item.DeliveryDate
Item.OrigDeliveryDate

如果是,则应使用值
yes
创建新节点
LineChangeDeliveryDate
,否则使用值
no

目前的XML:


5637248870
SO0009783-1
柔
2020-01-27
2019-12-07
XML新的/正确的:


5637248870
SO0009783-1
柔
2020-01-27
2019-12-07
对
当前XSLT:


在带有
match=“Item”
的模板规则中,执行以下操作

<LineChangeDeliveryDate>
  <xsl:choose>
    <xsl:when test="OrigDeliveryDate = DeliveryDate">
       <xsl:value-of select="'yes'/>
    </xsl:when>
    <xsl:otherwise>
       <xsl:value-of select="'no'/>
    </xsl:otherwise>
  </xsl:choose>
</LineChangeDeliveryDate>

这是XSLT 2.0代码更加简洁的许多情况之一:

<LineChangeDeliveryDate>
       <xsl:value-of select="if (OrigDeliveryDate = DeliveryDate) then 'yes' else 'no'"/>
</LineChangeDeliveryDate>

在3.0中,它进一步降低到

<LineChangeDeliveryDate>{
  if (OrigDeliveryDate = DeliveryDate) then 'yes' else 'no'
}</LineChangeDeliveryDate>
{
如果(OrigDeliveryDate=DeliveryDate),则为“是”,否则为“否”
}

您将代码放在与
行信息
匹配的模板中,而不是
,因此上下文节点错误。已更正但错误消息:XML解析器报告的错误:元素类型“xsl:choose”必须由匹配的结束标记“”终止。在末尾有一个额外的斜杠,我想确保人们必须阅读和理解代码,而不是盲目复制;-)。希望这意味着他们将来不必问那么多问题。回答得好,+1来自我这边!Michael,是时候发布XSLT3.0了。