使用 XSLT 反转 XML 数据标签?
例如,在下面的 XML 文件中:
<person>
<name>John</name>
<id>1</id>
<name>Diane</name>
<id>2</id>
<name>Chris</name>
<id>3</id>
</person>
在 XSLT 中,我编码:
<xsl:template match="person">
<xsl:apply-templates/>
</xsl:template>
因此在 HTML 文件中它会呈现
约翰1黛安2克里斯3
。
但, 我需要以下输出: Diane2John1Chris3
我需要颠倒前 2 个数据标签的顺序。 下面是前 2 个标签,
<name>John</name>
<id>1</id>
<name>Diane</name>
<id>2</id>
大家有什么想法吗?
For example, in the below XML file:
<person>
<name>John</name>
<id>1</id>
<name>Diane</name>
<id>2</id>
<name>Chris</name>
<id>3</id>
</person>
In XSLT I code:
<xsl:template match="person">
<xsl:apply-templates/>
</xsl:template>
So that in the HTML file It renders
John1Diane2Chris3
.
But,
I need following output:
Diane2John1Chris3
I need to reverse order of first 2 data tags.
Here below first 2 tags
<name>John</name>
<id>1</id>
<name>Diane</name>
<id>2</id>
Any Idea folks ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
嗯,抱歉,这是为了完全扭转它们,我看得出来你并不是真的想扭转一切。
在这种情况下,最简单的方法是在 ` select 属性中手动编码顺序:(
顺便说一句,这不是一个很好的存储数据的格式,您应该将每个人包装在
< person>
标签,因为只是一个接一个地写它们,然后摆弄顺序,就会发生意外。)Erm, sorry, this is for reversing them completely, I can see you don't really want to reverse everything.
In that case the easiest way is to just hand-code the order in the ` select attribute:
(By the way, this isn't a very good format to store your data, you should wrap each person in a
<person>
tag, as just writing them one after the other and then fiddling with the order is an accident waiting to happen.)如果您总是只需要交换前 2 个人,那么您可以这样做:
如果您为每个“name”和“name”都有单独的
元素,这会更容易。 “id”对。If you always just need to swap the first 2 people then you can do this:
This would be easier if you had separate
<person>
elements for each "name" & "id" pair.