如何使用 xslt 对文档进行排序?
下面是 document_1.xml
<products>
<product>
<name>Pen</name>
<Quantity>30</Quantity>
</product>
<product>
<name>Pencil</name>
<Quantity>20</Quantity>
</product>
<product>
<name>Bag</name>
<Quantity>25</Quantity>
</product>
</products>
和 document_2.xml
<products>
<product>
<name>Pen</name>
<Quantity>10</Quantity>
</product>
<product>
<name>Pencil</name>
<Quantity>5</Quantity>
</product>
<product>
<name>Bag</name>
<Quantity>2</Quantity>
</product>
</products>
以及 document.xml
<products>
</products>
下面是我的 xsl,我曾经加入 document_1 .xml
和 document_2.xml
到 document.xml
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/products">
<xsl:copy>
<xsl:apply-templates select="document('document_1.xml')/*/product"/>
<xsl:apply-templates select="document('document_2.xml')/*/product"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()">
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我需要如下输出
按数量 ASC 排序
<前><代码><产品>; <产品> <名称>包 <数量>2 <产品> <名称>铅笔 <数量>5 <产品> <名称>笔 <数量>10 <产品> <名称>铅笔 <数量>20 <产品> <名称>包 <数量>25 <产品> <名称>笔 <数量>30
below is the document_1.xml
<products>
<product>
<name>Pen</name>
<Quantity>30</Quantity>
</product>
<product>
<name>Pencil</name>
<Quantity>20</Quantity>
</product>
<product>
<name>Bag</name>
<Quantity>25</Quantity>
</product>
</products>
and document_2.xml
is
<products>
<product>
<name>Pen</name>
<Quantity>10</Quantity>
</product>
<product>
<name>Pencil</name>
<Quantity>5</Quantity>
</product>
<product>
<name>Bag</name>
<Quantity>2</Quantity>
</product>
</products>
and document.xml
is
<products>
</products>
Below is my xsl, i used to join document_1.xml
and document_2.xml
to the document.xml
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/products">
<xsl:copy>
<xsl:apply-templates select="document('document_1.xml')/*/product"/>
<xsl:apply-templates select="document('document_2.xml')/*/product"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()">
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
I need output like below
Sort by Quantity ASC
<products> <product> <name>Bag</name> <Quantity>2</Quantity> </product> <product> <name>Pencil</name> <Quantity>5</Quantity> </product> <product> <name>Pen</name> <Quantity>10</Quantity> </product> <product> <name>Pencil</name> <Quantity>20</Quantity> </product> <product> <name>Bag</name> <Quantity>25</Quantity> </product> <product> <name>Pen</name> <Quantity>30</Quantity> </product>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有
xsl:sort
标签,但它只能在xsl:for-each
循环内使用 - 例如。there is
xsl:sort
tag , but it can be used only insidexsl:for-each
loop - eg.