XML输入:XSLT选择最低值的ID匹配
<Root>
<output>
<queries>
<query name="Test">
<parameters>
<parameter>298674,298673,298675,298676</parameter>
</parameters>
<queryResults>
<record id="1">
<column name="Order">272334</column>
<column name="Task">272093</column>
<column name="FirstAction">2709305</column>
</record>
<record id="2">
<column name="Order">272334</column>
<column name="Task">272093</column>
<column name="FirstAction">2709301</column>
</record>
<record id="3">
<column name="Order">272334</column>
<column name="Task">272093</column>
<column name="FirstAction">2709306</column>
</record>
<record id="4">
<column name="Order">268997</column>
<column name="Task">268756</column>
<column name="FirstAction">2709307</column>
</record>
<record id="5">
<column name="Order"/>
<column name="Task"/>
<column name="FirstAction">2709307</column>
</record>
</queryResults>
</query>
</queries>
</output>
</Root>
所需的输出:
<Tag1>
<Tag2>
<parameters>
<order id="272334"/>
<order id="268997"/>
<task id="272093">
<grt>
<action id="2709301"/>
</grt>
</task>
<task id="268756">
<grt>
<action id="2709307"/>
</grt>
</task>
</parameters>
</Tag2>
</Tag1>
我想每列名=“订购”具有相同的ID展示在<grt>
中标记了列名'FirstAction'的最低值。如果列名'订单'不重复,则在<grt>
中显示标记当前<record>
标记中'FirstAction'的值。 基本上,如果相同的订单号码重复自己采取最低的第一个行动号码,如果不是,那么只需要从第一个行动节点的值。 我似乎无法使其工作。
我的XSL当前显示了所有不同的顺序值,没有重复,但不知道如何为FirstAction节点做。
我的XSL:
<xsl:template match="/">
<Tag1>
<Tag2>
<parameters>
<xsl:for-each select="//record/column[@name='Order'][not(.=preceding::*)]">
<order>
<xsl:attribute name="id"><xsl:value-of select="."/></xsl:attribute>
</order>
</xsl:for-each>
<xsl:for-each select="//record/column[@name='Task'][not(.=preceding::*)]">
<task>
<xsl:attribute name="id"><xsl:value-of select="."/></xsl:attribute>
<grt>
<action>
<xsl:attribute name="id"><xsl:value-of select="current()/@column[@name='FirstAction']"/></xsl:attribute>
</action>
</grt>
</task>
</xsl:for-each>
</parameters>
</Tag2>
</Tag1>
</xsl:template>
</xsl:stylesheet>
非常感谢您!
您可以使用XSLT 2.0吗? –
否:(只有1.0可悲 – user3529643
为什么最后一条记录,没有订单/任务值,从结果中排除? –