2012-10-02 54 views
1

我試圖獲得parent.I的社會保障。我試過這段代碼,但它返回空,但我知道值不是空的。從XSLT中的父節點獲取價值

<xsl:call-template name="render-Employee"> 
    <xsl:with-param name="ssno" select="normalize-space(SocialSecurityNumber)"></xsl:with-param> 
    <xsl:with-param name="firstName" select="normalize-space(FirstName)"></xsl:with-param> 
    <xsl:with-param name="middleName" select="normalize-space(MiddleName)"></xsl:with-param> 
    <xsl:with-param name="lastName" select="normalize-space(LastName)"></xsl:with-param> 
    <xsl:with-param name="creationDate" select="ChangeDate"></xsl:with-param> 
    </xsl:call-template> 
    <xsl:for-each select="Dependents"> 
    <xsl:for-each select="Dependent"> 
     <xsl:call-template name="render-Dependent"> 
     <xsl:with-param name="recordType" select="'BN'" /> 
     <xsl:with-param name="employeeSsno" select="normalize-space(ancestor::Employee[1]/@SocialSecurityNumber)"/> 

示例XML

<Employee> 
    <EntityKey> 
     <EntitySetName>Employees</EntitySetName> 
     <EntityContainerName>...</EntityContainerName> 
     <EntityKeyValues> 
     <EntityKeyMember> 
      <Key>EmployeeId</Key> 
      <Value xsi:type="xsd:int">873</Value> 
     </EntityKeyMember> 
     <EntityKeyMember> 
      <Key>CompanyId</Key> 
      <Value xsi:type="xsd:int">33</Value> 
     </EntityKeyMember> 
     </EntityKeyValues> 
    </EntityKey> 
    <Dependents> 
     <Dependent> 
     <EntityKey> 
      .... 
     </EntityKeyValues> 
     </EntityKey> 
     ... 
     <SocialSecurityNumber>123456789</SocialSecurityNumber> 
     ... 
     </Dependent> 
    </Dependents> 
    <EmployeeId>873</EmployeeId> 
    ... 
    <SocialSecurityNumber>000000000</SocialSecurityNumber> 
    ... 
    </Employee> 
+1

請你能提供輸入XML的例子嗎? – StuartLC

+0

@nonnb更新上面 –

回答

3

你的XPath表達式表示

ancestor::Employee[1]/@SocialSecurityNumber 

但在你的示例XML SocialSecurityNumber是一個元素,而不是一個屬性。

+0

謝謝,我剛剛刪除了@ –

2

既然這樣,僱員SSN是一個元素,而不是一個屬性,所以你需要改變XPath來

select="normalize-space(ancestor::Employee[1]/SocialSecurityNumber/text())" 
+0

爲什麼添加文本()? –

+2

真的出於習慣 - 這取決於您的電話模板所期望的。例如如果輸入的XML爲' 000000000 ',那麼您可能只需要將第一個'text()[1]'(即'000000000')傳遞給模板。 – StuartLC

+0

感謝高手知道,我不用xml很多工作 –