XSLT2.0如何在输入文件中的字段为空时跳过对元素的写入



I有一个XML输入文件。我使用xslt将输入文件中的元素映射并写入应用程序的put webservice操作。有些元素没有任何值(null(。我想知道如何使用xslt对条件进行编码,以便当这些列字段没有值时,它们不会向相应的映射元素/s写入任何内容,或者您可以说忽略元素/s本身以避免更新。

下面是一个有3行的输入文件示例:

Rownum是行号,Text2是SSN,Text3是员工ID。如果有员工ID,那么Web服务XML会进行验证,还需要将该员工的可用性百分比更新为100。

行号、文本2、文本3

1321-99-9999001

2002年2月

3652-77-7777,

我的代码看起来像这样-

<xsl:param name='Text2'/>
<xsl:param name='Text3'/>
<xsl:variable name='pct' select='100.00'/>
<SSN>
<xsl:choose>
<xsl:when test= "($Text2!='')">
<em:em:type="SSN"><xsl:value-of select='$Text2'/>
</xsl:when>
</xsl:choose>
</SSN>      
<Emp>
<xsl:choose>
<xsl:when test="($Text3!='')">
<em:Availability><xsl:value-of select="$pct"/></em:Availability>
<em:ID:em:type="EmpID"><xsl:value-of select='$Text3'/></em:ID>
</xsl:when>
</xsl:choose>
</Emp>  

在将上面的xslt应用于输入文件时,第1行和第2行通过Web服务加载,但第3行出现验证错误。

它似乎对输入文件的Text2元素很有效。当输入文件中没有此元素的值时,不会对webservice进行更新。当有一个值时,会对webservice进行相应的更新。

对于作为员工ID的Text3元素,当存在值时,该元素将被更新。可用性元素(百分比(也会更新为100。

当没有Text3元素(没有员工ID(时,XSLT将失败。抛出验证错误,声明";内部元素"Emp"上的元素内容"Availability"是必需的。

正如您在上面看到的,我已经为Text2和Text3元素使用了/条件语句。当Text2在输入文件中具有null值时,它不会像我在Text3元素为null时得到的那样抛出任何错误。根据错误信息,我猜是当Text3为null时,条件语句的结构可能无法正常工作。我们非常感谢为解决这一问题提供的任何帮助。

感谢您的回复,我忽略了条件构造必须在父节点之前"Emp";以便在EmpID为空时将该条件应用于子元素"Availability"one_answers"EmpID"。这样做解决了问题。

相关内容

  • 没有找到相关文章

最新更新