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了。