Xml 如何使用XSLT从子节点获取父节点
我很难找到所有重复孩子名字的父母Xml 如何使用XSLT从子节点获取父节点,xml,xslt,Xml,Xslt,我很难找到所有重复孩子名字的父母 <NCAAScores> <levels> <level> <name>Western Conference</name> <teams> <team> <name>Dallas Stars</name> <sco
<NCAAScores>
<levels>
<level>
<name>Western Conference</name>
<teams>
<team>
<name>Dallas Stars</name>
<scorable>
<win>60</win>
<lose>35</lose>
</scorable>
</team>
<team>
<name>Chicago Blackhawks</name>
<scorable>
<win>60</win>
<lose>23</lose>
</scorable>
</team>
<team>
<name>Edmonton Oilers</name>
<scorable>
<win>55</win>
<lose>9</lose>
</scorable>
</team>
<team>
<name>Philadelphia Flyers</name>
<scorable>
<win>5</win>
<lose>9</lose>
</scorable>
</team>
</teams>
</level>
<level>
<name>Eastern Conference</name>
<teams>
<team>
<name>Dallas Stars</name>
<scorable>
<win>1</win>
<lose>34</lose>
</scorable>
</team>
<!---And so on, you get the idea-->
</teams>
</level>
</levels>
</NCAAScores>
,这没有帮助。请尝试以下模板。这将使用
祖先::
轴从当前节点上下文中查找级别/名称
<xsl:template match="level">
<xsl:for-each select="teams/team[name='Dallas Stars']">
<name>
<xsl:value-of select="ancestor::level/name" />
</name>
</xsl:for-each>
</xsl:template>
您提到的类型错误来自将节点与字符串进行比较。您必须首先从节点提取文本。试试这个:
//levels/level[teams/team/name/text()='Dallas Stars']/name
我在这里把它当作一把小提琴准备好了:怎么样/levels[level/teams/team/name='Dallas Stars']
谢谢@JoelM.Lamsen,我得到了“xsl:value of/@select在第78行第81列XPTY0019:第一个操作数的必需项类型为node();提供的值具有项类型xs:string”谢谢@fafl,然而,这很有帮助,当我从另一个模板调用它时,我总是得到子轴的上下文项的必需项类型是node();提供的值具有项目类型xs:string请查看小提琴行79谢谢@Ankit V,这确实有帮助
<xsl:value-of select="../../name" />
<name>Western Conference</name>
<name>Eastern Conference</name>
//levels/level[teams/team/name/text()='Dallas Stars']/name