如何定义nodeset变量,并且在变量上使用XPATH

苏丹-陈 2003-09-09 09:06:24
定义nodeset变量
<xsl:variable name="v_record" select="//rowset/row[1]" />
<xsl:for-each select="$v_record/*[local-name=$nodename]"> ...
$v_record无法处理
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssm1226 2003-09-09
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="csdn0041.xsl"?>
<root>
<user>
<name>ssm1226</name>
<nickname>雨中人</nickname>
</user>
<user>
<name>cgh_chen</name>
<nickname>愚懒者</nickname>
</user>
<user>
<name>cgh_chen</name>
<nickname>愚懒者(2)</nickname>
</user>
</root>

csdn0041.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:template match="/">
<xsl:variable name="user_tf">
<xsl:for-each select="root/user">
<xsl:if test="name='cgh_chen'">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>

<xsl:variable name="user" select="msxsl:node-set($user_tf)"/>

<xsl:for-each select="$user/user">
ID:<xsl:value-of select="name"/>
Nick:<xsl:value-of select="nickname"/>
<hr/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
ssm1226 2003-09-09
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="csdn0041.xsl"?>
<root>
<user>
<name>ssm1226</name>
<nickname>雨中人</nickname>
</user>
<user>
<name>cgh_chen</name>
<nickname>愚懒者</nickname>
</user>
<user>
<name>cgh_chen</name>
<nickname>愚懒者(2)</nickname>
</user>
</root>

csdn0041.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:template match="/">
<xsl:variable name="user_tf">
<xsl:for-each select="root/user">
<xsl:if test="name='cgh_chen'">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>

<xsl:variable name="user" select="msxsl:node-set($user_tf)"/>

<xsl:for-each select="$user/user">
ID:<xsl:value-of select="name"/>
Nick:<xsl:value-of select="nickname"/>
<hr/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
saucer 2003-09-09
  • 打赏
  • 举报
回复
actually, your code should work, what are the nodes under row? try

<xsl:for-each select="$v_record/*[local-name()=$nodename]"> ...

saucer 2003-09-09
  • 打赏
  • 举报
回复
if you are using MSXML, use msxsl:node-set, there are similar extensions in other libraries

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/xsl_advanced2_0703.asp

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧