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
爲什麼最後一條記錄,沒有訂單/任務值,從結果中排除? –