0

我有一个 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> 
4

2 回答 2

0

您正在测试名为 hr:Onboarding_Event 的元素的值,但源文档中没有此类元素。

于 2013-10-17T07:55:38.933 回答
-1

您需要确保选择要处理的节点: XSL W3Schools Example

于 2013-10-17T03:57:33.260 回答