你能帮我在这。 我想插入一个节点,每个节点。 此节点包含该节点的“OriIndex”和前一节点“OriIndex”(只有一个在此之前)之间的差异。 写我的XSLT时,我有一个编译错误。
我输入的是:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
<Test>
<TestPhase>1</TestPhase>
<TestFlow>1</TestFlow>
<TestParameter>1</TestParameter>
<OriIndex>0</OriIndex>
</Test>
<Test>
<TestPhase>1</TestPhase>
<TestFlow>1</TestFlow>
<TestParameter>2</TestParameter>
<OriIndex>1</OriIndex>
</Test>
<Test>
<TestPhase>1</TestPhase>
<TestFlow>3</TestFlow>
<TestParameter>1</TestParameter>
<OriIndex>2</OriIndex>
</Test>
<Test>
<TestPhase>1</TestPhase>
<TestFlow>2</TestFlow>
<TestParameter>2</TestParameter>
<OriIndex>3</OriIndex>
</Test>
我的XML输出(这个是错误的,因为第二个项目的差异应该是1 =当前OriIndex(1) - 以前OriIndex(0)其实我不知道如何做到这一点。):
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
<Test>
<TestPhase>1</TestPhase>
<TestFlow>1</TestFlow>
<TestParameter>1</TestParameter>
<OriIndex>0</OriIndex>
<SortedIndex>0</SortedIndex>
<Diff>1</Diff>
</Test>
<Test>
<TestPhase>1</TestPhase>
<TestFlow>1</TestFlow>
<TestParameter>2</TestParameter>
<OriIndex>1</OriIndex>
<SortedIndex>1</SortedIndex>
<Diff>0</Diff>
</Test>
.
.
.
.
我的XSLT是:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding = "UTF-8" indent="yes" omit-xml-declaration="no" standalone="yes" />
<xsl:template match="Root">
<xsl:copy>
<xsl:apply-templates select="Test">
<xsl:sort select="TestPhase" data-type="number" order="ascending"/>
<xsl:sort select="TestFlow" data-type="number" order="ascending"/>
<xsl:sort select="TestParameter" data-type="number" order="ascending"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Test">
<xsl:copy>
<xsl:apply-templates select="@* | *"/>
<SortedIndex><xsl:value-of select="position() - 1"/></SortedIndex>
<Diff><xsl:value-of select="OriIndex - OriIndex[position() - 1]" /></Diff>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
请帮忙。
非常感谢你。 你的努力是非常赞赏。
干杯!