尝试通过此代码块使用for-each循环将所有3个值返回到一个输出中。如何只选择其中一个元素,比如Elise的数据呢?
<A>
<B>
<C>
<Name>Jonathan</Name>
<Age>56</Age>
<Sex>Male</Sex>
</C>
<C>
<Name>Elise</Name>
<Age>50</Age>
<Sex>Female</Sex>
</C>
<C>
<Name>Adam</Name>
<Age>47</Age>
<Sex>Male</Sex>
</C>
</B>
</A>
答案 0 :(得分:1)
如果要为Elise
选择节点集,则可以相应地匹配模板。
<xsl:template match="C[Name='Elise']">
<xsl:copy>
<xsl:copy-of select="*" />
</xsl:copy>
</xsl:template>
上述模板将选择具有子节点C
的节点Name
,其值为Elise
。然后,它将复制节点C
和所有子节点,以提供如下输出。
<C>
<Name>Elise</Name>
<Age>50</Age>
<Sex>Female</Sex>
</C>
P.S。请更正结束标记的共享XML,因为它看起来像是复制粘贴问题。 XML不是一个格式良好的。
答案 1 :(得分:0)
Using Anikets' respose I figured that my solution was to call the subnode from its 'hidden' index:
<xsl:for-each select="($A/B/C/Name)[2]">
<print>
<xsl:value-of select="."/>
</print>
</xsl:for-each>
以上只返回值'Elise'