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”)传递给模板。