给定以下结构,如何基于XSLT中的谓词从文档中复制第一个和第二个节点及其所有元素:
<list>
<slot>xx</slot>
<data>
<name>xxx</name>
<age>xxx</age>
</data>
<data>
<name>xxx</name>
<age>xxx</age>
</data>
<data>
<name>xxx</name>
<age>xxx</age>
</data>
</list>
<list>
<slot>xx</slot>
<data>
<name>xxx</name>
<age>xxx</age>
</data>
<data>
<name>xxx</name>
<age>xxx</age>
</data>
<data>
<name>xxx</name>
<age>xxx</age>
</data>
</list>
Run Code Online (Sandbox Code Playgroud)
如何从列表中选择第一个和第二个数据(没有数据元素本身,只有名称,年龄),其中插槽等于不同的变量,即第一个列表具有slot=02,但我需要来自第二个清单,在哪里slot=01.但是只要一个插槽列表的顺序并不重要slot=$slotvariable.
我尝试了以下声明,但它没有产生任何结果:
<xsl:element name="{'Lastdata'}">
<xsl:copy-of select="list/data[position()=1 and slot = $slotvariable]" />
</xsl:element>
<xsl:element name="{'prevdata'}">
<xsl:copy-of select="list/data[position()=2 and slot = $slotvariable]" />
</xsl:element>
Run Code Online (Sandbox Code Playgroud)
任何工作建议将不胜感激
如果我理解你的问题,那么:
<Lastdata>
<xsl:copy-of select="list[slot=$slotvariable]/data[1]/*" />
</Lastdata>
<prevdata>
<xsl:copy-of select="list[slot=$slotvariable]/data[2]/*" />
<prevdata>
Run Code Online (Sandbox Code Playgroud)
提示:
<xsl:element>除非您具有基于表达式的动态名称,否则请勿使用.[1] 是一个简写 [position() = 1]