初学者的XSLT问题:基于XML结构中其他位置的值选择节点
-为清晰起见进行了编辑 我有一个XML文件,看起来像这样:初学者的XSLT问题:基于XML结构中其他位置的值选择节点,xml,xslt,xpath,Xml,Xslt,Xpath,-为清晰起见进行了编辑 我有一个XML文件,看起来像这样: <questionBlock> <responses> . . . <response> <degree>1</degree> <instdegree>1</instdegree> </response> . . . </responses&g
<questionBlock>
<responses>
. . .
<response>
<degree>1</degree>
<instdegree>1</instdegree>
</response>
. . .
</responses>
<question>
<variable>degree</variable>
<text>Please select a degree or credential you have pursued.</text>
<responses>
<response>
<label>High School Diploma</label>
<value>1</value>
</response>
<response>
<label>Certificate</label>
<value>2</value>
</response>
</responses>
. . .
</question>
</questionBlock>
XSLT的一个子集如下所示:
除了选择学位1的值之外,我还希望能够基于该值选择高中文凭,但我还无法通过XPath在一般情况下实现这一点,例如,如果学位等于2
任何帮助都将不胜感激。谢谢。编辑:我想你是说这样的事吧
<xsl:for-each select="responses/response">
<xsl:variable name="degree" select="degree" />
<xsl:variable name="degree-response" select="
../question[variable = 'degree']/responses/response[value = $degree]
" />
<xsl:value-of select="$degree-response/label" />
</xsl:for-each>
或简称:
../following-sibling::responses[1]/response[1]/label
编辑:我想你是指这样的事情吧
<xsl:for-each select="responses/response">
<xsl:variable name="degree" select="degree" />
<xsl:variable name="degree-response" select="
../question[variable = 'degree']/responses/response[value = $degree]
" />
<xsl:value-of select="$degree-response/label" />
</xsl:for-each>
或简称:
../following-sibling::responses[1]/response[1]/label
xpath:../../responses[response=current]/labelxpath:../../responses[response=current]/label选择并查看是什么意思?您的意思是希望在从degree元素返回值时按label元素进行过滤吗?条件和反应的父元素是什么?很抱歉,这个问题最初是模糊的,在我写它的时候,它在我的头脑中是有意义的。我真的需要能够根据/问题/回答的价值做出决定,而不仅仅是职位。我的解决方案对你的问题不起作用?这不是基于节点位置,我认为您应该再次澄清,这仍然令人困惑。你在一个/问题栏/回答/回答中,想要选择高中文凭,因为这是一个与当前相同的文凭?你所说的选择和查看是什么意思?您的意思是希望在从degree元素返回值时按label元素进行过滤吗?条件和反应的父元素是什么?很抱歉,这个问题最初是模糊的,在我写它的时候,它在我的头脑中是有意义的。我真的需要能够根据/问题/回答的价值做出决定,而不仅仅是职位。我的解决方案对你的问题不起作用?这不是基于节点位置,我认为您应该再次澄清,这仍然令人困惑。你在一个/问题栏/回答/回答中,想要选择高中文凭,因为那是一个与当前相同的文凭?谢谢,托马拉克。当然,你说得很对,每个人都要避免。XSLT是由一名初级程序员编写的,他没有任何函数式编程经验,我需要快速修复它以解决问题。我真的需要回去重构整件事。谢谢你,托玛拉克。当然,你说得很对,每个人都要避免。XSLT是由一名初级程序员编写的,他没有任何函数式编程经验,我需要快速修复它以解决问题。我真的需要回去重构整件事。