Xml 从XSLT中的父节点获取值

Xml 从XSLT中的父节点获取值,xml,xslt,parent-child,Xml,Xslt,Parent Child,我正在尝试获取家长的社会保险。我尝试了此代码,但返回空,但我知道该值不是空的 <xsl:call-template name="render-Employee"> <xsl:with-param name="ssno" select="normalize-space(SocialSecurityNumber)"></xsl:with-param> <xsl:with-param name="firstName" select="norma

我正在尝试获取家长的社会保险。我尝试了此代码,但返回空,但我知道该值不是空的

<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>

员工
...
雇员ID
873
公司ID
33
....
...
123456789
...
873
...
000000000
...

您的XPath表达式表示

ancestor::Employee[1]/@SocialSecurityNumber

但在您的示例中,XML
SocialSecurityNumber
是一个元素,而不是一个属性

ancestor::Employee[1]/@SocialSecurityNumber

但是在您的示例中,XML
SocialSecurityNumber
是一个元素,而不是一个属性。

就目前而言,Employees SSN是一个元素,而不是一个属性,因此您需要将xpath更改为

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

目前,Employees SSN是一个元素,而不是一个属性,因此需要将xpath更改为

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

请您提供一个输入XML的示例?请您提供一个输入XML的示例?真的是出于习惯-这取决于您的调用模板的期望。e、 g.如果输入XML为
000000000
,则您可能只希望将第一个
text()[1]
(即“000000000”)传递给模板。这实际上是出于习惯-取决于调用模板的期望。e、 g.如果输入XML是
000000000
,那么您可能只希望将第一个
text()[1]
(即“000000000”)传递给模板。