1

親の社会保障を取得しようとしています。このコードを試しましたが、空が返されますが、値が空ではないことがわかります。

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

2 に答える 2

3

XPath式は

ancestor::Employee[1]/@SocialSecurityNumber

しかし、あなたの例では、XMLSocialSecurityNumberは属性ではなく要素です。

于 2012-10-02T16:46:06.720 に答える
2

現状では、Employees SSN は属性ではなく要素であるため、xpath を次のように変更する必要があります。

select="normalize-space(ancestor::Employee[1]/SocialSecurityNumber/text())"
于 2012-10-02T16:48:02.337 に答える