我正在尝试使用XSLT转换来转换XML文档,并且想知道是否有可能获得具有另一个属性值的XML元素。
<Question>
<text id="154014">Email</text>
<answer>123@gmail.com</answer>
</Question>
<Question>
<text id="154015">Phone</text>
<answer>123456</answer>
</Question>
所以我的问题是,如果我的 text / @ id 值为 154014 ,我需要获取答案 123@gmail.com < / p>
我不能使用<xsl:value-of select="text[@id='154014']" />
,因为它将使用不需要的xml元素。
谢谢
答案 0 :(得分:3)
实现此目标的另一种方法是使用key。像这样定义一个键,以通过Question
text/@id
元素
<xsl:key name="questions" match="Question" use="text/@id" />
然后要获取ID的相关答案,请执行此操作...
<xsl:value-of select="key('questions', '15184')/answer" />
或者,使用参数代替硬编码值
<xsl:value-of select="key('questions', $id)/answer" />
答案 1 :(得分:2)
它将为您提供所需的输出:
//text[@id = '154014']/following-sibling::answer
要么
//Question[text[@id = '154014']]/answer
要么
//text[@id = '154014']/../answer
答案 2 :(得分:0)
尝试一下。
<xsl:for-each select="Question">
<xsl:variable name="id" select="text/@id"/>
<xsl:choose>
<xsl:when test="$id='154014'">
<xsl:value-of select="answer"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>