Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何使用XSLT从子节点获取父节点_Xml_Xslt - Fatal编程技术网

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