[XSLT难题 No.4]如何动态地用变量指明一个属性

CrazyJavar 2003-08-21 11:09:21
现有个xslt文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes" media-type="text/xml" omit-xml-declaration="yes"/>
<xsl:variable name="key">pk</xsl:variable>
<xsl:template match="/">
<xsl:apply-templates select="node()"/>
</xsl:template>
<xsl:template match="node()">
<xsl:if test="如果存在名为$key的属性">
<xsl:value-of select="列出$key属性的值"/>
</xsl:if>
<xsl:apply-templates select="node()"/>
</xsl:template>
</xsl:stylesheet>

上面中的两个中文部分如何写,才能动态的用变量$key来指定属性的名字呢

谢谢指点

源xml如下
<?xml version="1.0" encoding="UTF-8"?>

<root>
<A abcpk="123">
<B defpk="456"/>
<C ghipkjk="789"/>
<D pklmn="101112"/>
<E abc="123"/>
<F pk="4inlove"/>
</A>
</root>
...全文
57 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2003-08-21
  • 打赏
  • 举报
回复
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes" media-type="text/xml" omit-xml-declaration="yes"/>
<xsl:variable name="key">pk</xsl:variable>
<xsl:template match="node()">
<xsl:if test="@*[name() = $key]">
<xsl:value-of select="@*[name() = $key]"/>
</xsl:if>
<xsl:apply-templates select="node()"/>
</xsl:template>
</xsl:stylesheet>
月光易水 2003-08-21
  • 打赏
  • 举报
回复

<xsl:template match="node()">
<xsl:if test="如果存在名为$key的属性">
<xsl:value-of select="列出$key属性的值"/>
</xsl:if>
<xsl:apply-templates select="node()"/>
</xsl:template>

==>

<xsl:template match="node()">
<xsl:for-each select="@*">
<xsl:if test="name() = $key">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
<xsl:apply-templates select="node()"/>
</xsl:template>

建议:
前面你所提问过的问题其实已经包含这个问题的答案
有时,对于问题答案研究一下,对于类似的问题都触类旁通了


:_)
CrazyJavar 2003-08-21
  • 打赏
  • 举报
回复
晕倒

属性的名字我一定要在外部用变量动态指定的
aierong 2003-08-21
  • 打赏
  • 举报
回复

修改如下:
<xsl:template match="node()">
<xsl:if test="@key">
<xsl:value-of select="@key"/>
</xsl:if>


xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml:stylesheet type="text/xsl" href="aa.xsl"?>

<root>
<A abcpk="123">
<B defpk="456"/>
<C ghipkjk="789"/>
<D pklmn="101112"/>
<E abc="123"/>
<F key="4inlove"/>
</A>
</root>
CrazyJavar 2003-08-21
  • 打赏
  • 举报
回复
name() = $key"

"@*[name() = $key]"

谢谢啦

刚写XSLT不久

很多地方还不熟

所以问得有点重复

谢谢指点

8,906

社区成员

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

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