我有一个XML,它有各种条件应该被评估以创建一个节点。我研究了多个站点,我的代码似乎是正确的,但它总是默认为“其他”节点。一个注意事项:我无法控制正在提交的XML,并且我必须基于XML中为每个测试发送的一个值来构建XSLT。但根据事件名称,需要引用不同的人。我认为它是我最初的When语句,因为它似乎永远不会超过这个条件。也许语法错了? 任何指导将不胜感激。
<Event>
<xsl:for-each select="hr:UserArea/hr:Id">
<xsl:if test="@idOwner = 'Onboarding_Event' and hr:IdValue !=''">
<Name><xsl:value-of select="hr:IdValue"/></Name>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="hr:UserArea/hr:Id">
<xsl:choose>
<xsl:when test="hr:Onboarding_Event = 'US Onboarding'">
<xsl:if test="@idOwner = 'Managers_Email_ID' and hr:IdValue !=''">
<Person>
<Name>Manager</Name>
<Value><xsl:value-of select="hr:IdValue"/></Value>
</Person>
</xsl:if>
<xsl:if test="@idOwner = 'Onboarding_Co' and hr:IdValue !=''">
<Person>
<Name>Onboarding Coordinator</Name>
<Value><xsl:value-of select="hr:IdValue"/></Value>
</Person>
</xsl:if>
<xsl:if test="@idOwner = 'HR_Rep_email_ID' and hr:IdValue !=''">
<Person>
<Name>HR Representative</Name>
<Value><xsl:value-of select="hr:IdValue"/></Value>
</Person>
</xsl:if>
</xsl:when>
<xsl:when test="hr:UserArea/hr:Onboarding_Event and hr:IdValue ='CES Onboarding'">
<xsl:if test="@idOwner = 'Managers_Email_ID' and hr:IdValue !=''">
<Person>
<Name>CES Manager</Name>
<Value><xsl:value-of select="hr:IdValue"/></Value>
</Person>
</xsl:if>
<xsl:if test="@idOwner = 'Onboarding_Co' and hr:IdValue !=''">
<Person>
<Name>CES Onboarding Coordinator</Name>
<Value><xsl:value-of select="hr:IdValue"/></Value>
</Person>
</xsl:if>
<xsl:if test="@idOwner = 'HR_Rep_email_ID' and hr:IdValue !=''">
<Person>
<Name>CES HR Representative</Name>
<Value><xsl:value-of select="hr:IdValue"/></Value>
</Person>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:if test="@idOwner = 'Managers_Email_ID' and hr:IdValue !=''">
<Person>
<Name>EMEA Manager</Name>
<Value>Test</Value>
</Person>
</xsl:if>
<xsl:if test="@idOwner = 'Onboarding_Co' and hr:IdValue !=''">
<Person>
<Name>EMEA Onboarding Coordinator</Name>
<Value>Test</Value>
</Person>
</xsl:if>
<xsl:if test="@idOwner = 'HR_Rep_email_ID' and hr:IdValue !=''">
<Person>
<Name>EMEA HR Representative</Name>
<Value>Test</Value>
</Person>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</Event>
以下是XML示例
<Candidate>
<UserArea>
<Id idOwner="Manager">
<IdValue>CES Manager</IdValue>
</Id>
<Id idOwner="Managers_Email_ID">
<IdValue>CES manager Email</IdValue>
</Id>
<Id idOwner="HR_Representative">
<IdValue>CES HR Rep</IdValue>
</Id>
<Id idOwner="Onboarding_Co">
<IdValue>CES Coordinator</IdValue>
</Id>
<Id idOwner="Onboarding_Event">
<IdValue>CES Onboarding</IdValue>
</Id>
<Id idOwner="HR_Rep_email_ID">
<IdValue>CES HR REP email address</IdValue>
</Id>
</UserArea>
</Candidate>
答案 0 :(得分:0)
您正在测试名为hr:Onboarding_Event的元素的值,但源文档中没有此类元素。
答案 1 :(得分:-1)
您需要确保选择要使用的节点: XSL W3Schools Example