Xml XSLT基于属性值从两个同名节点中选择一个
我有一些XML标记,如下所示:Xml XSLT基于属性值从两个同名节点中选择一个,xml,xslt,Xml,Xslt,我有一些XML标记,如下所示: <pet type="dog" id="76"> </pet> <pet type="cat" id="79"> </pet> 我想试试这样的 <xsl:variable name="cat_id"><xsl:value-of select="pet[@type='cat']/@id "/ ></xsl:variable> 但这也取决于您在输入xml中的实际位置。如果您想要
<pet type="dog" id="76">
</pet>
<pet type="cat" id="79">
</pet>
我想试试这样的
<xsl:variable name="cat_id"><xsl:value-of select="pet[@type='cat']/@id "/ ></xsl:variable>
但这也取决于您在输入xml中的实际位置。如果您想要高效访问,那么定义一个键是最直接的方法
<xsl:key name="pet-by-type" match="pet" use="@type"/>
然后使用
<xsl:variable name="cat_id" select="key('pet-by-type', 'cat')/@id"/>
.不是答案,只是需要注意的是,通常应避免
元素只包含一个值
——只使用
更有效,因为这样可以避免创建文本节点和树片段。
<xsl:variable name="cat_id" select="key('pet-by-type', 'cat')/@id"/>