我有这种格式的xml:
<xml>
<cases total="3">
<case>
<ref>3</ref>
</case>
<case>
<ref>1</ref>
</case>
<case>
<ref>2</ref>
</case>
</cases>
</xml>
现在,我希望xsl将打印<cases total="value">
,然后根据每种情况的参考进行排序。
所需的输出:
<xml>
<cases total="3">
<case>
<ref>1</ref>
</case>
<case>
<ref>2</ref>
</case>
<case>
<ref>2</ref>
</case>
</cases>
</xml>
我当前的xslt看起来像这样-
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- identity template -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="cases">
<xsl:copy>
<xsl:apply-templates select="case">
<xsl:sort select="ref" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
这完成了工作,但是没有显示案例标签的“ TOTAL”值。
答案 0 :(得分:0)
假设输入的XML没有total
的属性<cases>
,并且XML根据注释包含以下数据
<xml>
<cases>
<case>
<ref>3.10</ref>
</case>
<case>
<ref>3.1</ref>
</case>
<case>
<ref>1</ref>
</case>
<case>
<ref>1.0</ref>
</case>
<case>
<ref>2.1</ref>
</case>
<case>
<ref>2</ref>
</case>
</cases>
</xml>
您需要对模板进行以下更改以添加属性total
<xsl:template match="cases">
<xsl:copy>
<xsl:attribute name="total">
<xsl:value-of select="count(case)" />
</xsl:attribute>
<xsl:apply-templates select="case">
<xsl:sort select="ref" datatype="text" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
这将输出显示为
<xml>
<cases total="6">
<case>
<ref>1</ref>
</case>
<case>
<ref>1.0</ref>
</case>
<case>
<ref>2</ref>
</case>
<case>
<ref>2.1</ref>
</case>
<case>
<ref>3.1</ref>
</case>
<case>
<ref>3.10</ref>
</case>
</cases>
</xml>