获取当前节点的本地名
问题描述:
这里是我的XML获取当前节点的本地名
<FileRoot>
<UserSet1>
<User>
<FirstName></FirstName>
<LastName></LastName>
</User>
<User>
<FirstName></FirstName>
<LastName></LastName>
</User>
...
</UserSet1>
<InactiveUsers>
<User>
<FirstName></FirstName>
<LastName></LastName>
</User>
<User>
<FirstName></FirstName>
<LastName></LastName>
</User>
...
</InactiveUsers>
</FileRoot>
的结构。在我的XSL模板
<xsl:template match="/*/*">
<File>
<xsl attribute name="Name">
<xsl:value-of select="local-name(/*/*)"/>
</xsl:attribute>
</File>
</xsl>
转化后,两个UserSet1和InactiveUsers,给我“UserSet1 ”。 UserSet1的预期结果应该是“UserSet1”,InactiveUsers的预期结果应该是“InactiveUsers”。我如何正确检索值?
感谢
答
/*/*
是绝对路径,所以local-name(/*/*)
将总是相匹配的绝对路径整个文档中的第一个节点返回本地名称。它看起来像你想要的当前节点的本地名称。在这种情况下,请改用local-name()
。如果未指定参数,则使用当前上下文节点。
此外,您还可以使用属性值模板,而不是xsl:attribute
,如下:
<xsl:template match="/*/*">
<File Name="{local-name()}"/>
</xsl>
正是我需要的。谢谢!! – fishiefishie 2010-05-13 22:11:46