XSL选择语句无法识别XSL When语句

时间:2013-10-17 03:37:14

标签: xml xslt

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

您需要确保选择要使用的节点: XSL W3Schools Example