使用XSLT对XML元素和一组元素的数据进行排序
我有以下示例xml数据。我需要在多个级别对元素和数据进行排序。 1.排序必须在根级别的正下方进行,如使用XSLT对XML元素和一组元素的数据进行排序,xml,xslt,Xml,Xslt,我有以下示例xml数据。我需要在多个级别对元素和数据进行排序。 1.排序必须在根级别的正下方进行,如 2.必须对名称字段上每个或或中的所有元素进行排序 3.无论记录集类型如何,都必须对每个记录集中字段中的数据进行排序。 这里重要的是,对于某些记录,元素可能不可用。 在这种情况下,排序应该只对值进行 <root> <SellOutRecord> <FILE_TYPE>STOSO</FILE_TYPE> <RECORD_TYPE&
2.必须对名称字段上每个
或
或
中的所有元素进行排序
3.无论记录集类型如何,都必须对每个记录集中
字段中的数据进行排序。
这里重要的是,对于某些记录,
元素可能不可用。
在这种情况下,排序应该只对
值进行
<root>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<RECORD_TYPE>VALID</RECORD_TYPE>
<RECORD_NO>1</RECORD_NO>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
</SellOutRecord>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<RECORD_TYPE>ERROR</RECORD_TYPE>
<RECORD_NO>2</RECORD_NO>
<LOCATION_NAME>XYZ ABC</LOCATION_NAME>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
</SellOutRecord>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<RECORD_TYPE>WARNING</RECORD_TYPE>
<RECORD_NO>3</RECORD_NO>
<LOCATION_ID>2-3LG-2450</LOCATION_ID>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
</SellOutRecord>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<RECORD_TYPE>ERROR</RECORD_TYPE>
<RECORD_NO>4</RECORD_NO>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
</SellOutRecord>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<RECORD_TYPE>ERROR</RECORD_TYPE>
<RECORD_NO>6</RECORD_NO>
<LOCATION_NAME>XYZ ABC</LOCATION_NAME>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
</SellOutRecord>
<InventoryRecord>
<FILE_TYPE>STOIV</FILE_TYPE>
<RECORD_TYPE>ERROR</RECORD_TYPE>
<RECORD_NO>2</RECORD_NO>
<LOCATION_ID>2-3LG-2450</LOCATION_ID>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
</InventoryRecord>
<InventoryRecord>
<FILE_TYPE>STOIV</FILE_TYPE>
<RECORD_TYPE>VALID</RECORD_TYPE>
<RECORD_NO>4</RECORD_NO>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
</InventoryRecord>
<InventoryRecord>
<FILE_TYPE>STOIV</FILE_TYPE>
<RECORD_TYPE>VALID</RECORD_TYPE>
<RECORD_NO>5</RECORD_NO>
<LOCATION_NAME>XYZ ABC</LOCATION_NAME>>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
</InventoryRecord>
<InventoryRecord>
<FILE_TYPE>STOIV</FILE_TYPE>
<RECORD_TYPE>ERROR</RECORD_TYPE>
<RECORD_NO>8</RECORD_NO>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
</InventoryRecord>
<SalesInRecord>
<FILE_TYPE>STOSI</FILE_TYPE>
<RECORD_TYPE>VALID</RECORD_TYPE>
<RECORD_NO>3</RECORD_NO>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
</SalesInRecord>
<SalesInRecord>
<FILE_TYPE>STOSI</FILE_TYPE>
<RECORD_TYPE>WARNING</RECORD_TYPE>
<RECORD_NO>3</RECORD_NO>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
</SalesInRecord>
<SalesInRecord>
<FILE_TYPE>STOSI</FILE_TYPE>
<RECORD_TYPE>ERROR</RECORD_TYPE>
<RECORD_NO>4</RECORD_NO>
<LOCATION_ID>2-3LG-2450</LOCATION_ID>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
</SalesInRecord>
<SalesInRecord>
<FILE_TYPE>STOSI</FILE_TYPE>
<RECORD_TYPE>ERROR</RECORD_TYPE>
<RECORD_NO>7</RECORD_NO>
<LOCATION_NAME>XYZ ABC</LOCATION_NAME>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
</SalesInRecord>
</root>
斯托索
有效的
1.
2-3LG-2456
XYZ XYZ
2-3LG-2456
斯托索
错误
2.
XYZ ABC
-1
斯托索
警告
3.
2-3LG-2450
XYZ XYZ
-1
斯托索
错误
4.
2-3LG-2456
XYZ XYZ
2-3LG-2456
斯托索
错误
6.
XYZ ABC
-1
斯托夫
错误
2.
2-3LG-2450
XYZ XYZ
-1
斯托夫
有效的
4.
2-3LG-2456
XYZ XYZ
2-3LG-2456
斯托夫
有效的
5.
XYZ ABC>
-1
斯托夫
错误
8.
2-3LG-2456
XYZ XYZ
2-3LG-2456
斯托西
有效的
3.
2-3LG-2456
XYZ XYZ
2-3LG-2456
斯托西
警告
3.
2-3LG-2456
XYZ XYZ
2-3LG-2456
斯托西
错误
4.
2-3LG-2450
XYZ XYZ
-1
斯托西
错误
7.
XYZ ABC
-1
预期的产出将是
<root>
<InventoryRecord>
<FILE_TYPE>STOIV</FILE_TYPE>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
<LOCATION_NAME>XYZ ABC</LOCATION_NAME>
<RECORD_NO>5</RECORD_NO>
<RECORD_TYPE>VALID</RECORD_TYPE>
</InventoryRecord>
<InventoryRecord>
<FILE_TYPE>STOIV</FILE_TYPE>
<LOCATION_ID>2-3LG-2450</LOCATION_ID>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<RECORD_NO>2</RECORD_NO>
<RECORD_TYPE>ERROR</RECORD_TYPE>
</InventoryRecord>
<InventoryRecord>
<FILE_TYPE>STOIV</FILE_TYPE>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<RECORD_NO>4</RECORD_NO>
<RECORD_TYPE>VALID</RECORD_TYPE>
</InventoryRecord>
<InventoryRecord>
<FILE_TYPE>STOIV</FILE_TYPE>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<RECORD_NO>8</RECORD_NO>
<RECORD_TYPE>ERROR</RECORD_TYPE>
</InventoryRecord>
<SalesInRecord>
<FILE_TYPE>STOSI</FILE_TYPE>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
<LOCATION_NAME>XYZ ABC</LOCATION_NAME>
<RECORD_NO>7</RECORD_NO>
<RECORD_TYPE>ERROR</RECORD_TYPE>
</SalesInRecord>
<SalesInRecord>
<FILE_TYPE>STOSI</FILE_TYPE>
<LOCATION_ID>2-3LG-2450</LOCATION_ID>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<RECORD_NO>4</RECORD_NO>
<RECORD_TYPE>ERROR</RECORD_TYPE>
</SalesInRecord>
<SalesInRecord>
<FILE_TYPE>STOSI</FILE_TYPE>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<RECORD_NO>3</RECORD_NO>
<RECORD_TYPE>VALID</RECORD_TYPE>
</SalesInRecord>
<SalesInRecord>
<FILE_TYPE>STOSI</FILE_TYPE>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<RECORD_NO>3</RECORD_NO>
<RECORD_TYPE>WARNING</RECORD_TYPE>
</SalesInRecord>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
<LOCATION_NAME>XYZ ABC</LOCATION_NAME>
<RECORD_NO>2</RECORD_NO>
<RECORD_TYPE>ERROR</RECORD_TYPE>
</SellOutRecord>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
<LOCATION_NAME>XYZ ABC</LOCATION_NAME>
<RECORD_NO>6</RECORD_NO>
<RECORD_TYPE>ERROR</RECORD_TYPE>
</SellOutRecord>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<LOCATION_ID>2-3LG-2450</LOCATION_ID>
<LOCATION_ID_DB>-1</LOCATION_ID_DB>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<RECORD_NO>3</RECORD_NO>
<RECORD_TYPE>WARNING</RECORD_TYPE>
</SellOutRecord>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<RECORD_NO>1</RECORD_NO>
<RECORD_TYPE>VALID</RECORD_TYPE>
</SellOutRecord>
<SellOutRecord>
<FILE_TYPE>STOSO</FILE_TYPE>
<LOCATION_ID>2-3LG-2456</LOCATION_ID>
<LOCATION_ID_DB>2-3LG-2456</LOCATION_ID_DB>
<LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
<RECORD_NO>4</RECORD_NO>
<RECORD_TYPE>ERROR</RECORD_TYPE>
</SellOutRecord>
</root>
斯托夫
-1
XYZ ABC
5.
有效的
斯托夫
2-3LG-2450
-1
XYZ XYZ
2.
错误
斯托夫
2-3LG-2456
2-3LG-2456
XYZ XYZ
4.
有效的
斯托夫
2-3LG-2456
2-3LG-2456
XYZ XYZ
8.
错误
斯托西
-1
XYZ ABC
7.
错误
斯托西
2-3LG-2450
-1
XYZ XYZ
4.
错误
斯托西
2-3LG-2456
2-3LG-2456
XYZ XYZ
3.
有效的
斯托西
2-3LG-2456
2-3LG-2456
XYZ XYZ
3.
警告
斯托索
-1
XYZ ABC
2.
错误
斯托索
-1
XYZ ABC
6.
错误
斯托索
2-3LG-2450
-1
XYZ XYZ
3.
警告
斯托索
2-3LG-2456
2-3LG-2456
XYZ XYZ
1.
有效的
斯托索
2-3LG-2456
2-3LG-2456
XYZ XYZ
4.
错误
有
你想怎么做?我认为它为您发布的输入生成您发布的输出
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:strip-space elements="*"/>
<xsl:output indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="root">
<xsl:copy>
<xsl:apply-templates select="*">
<xsl:sort select="local-name()"/>
<xsl:sort select="LOCATION_ID"/>
<xsl:sort select="LOCATION_ID_DB"/>
<xsl:sort select="LOCATION_NAME"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="SalesInRecord | SellOutRecord | InventoryRecord">
<xsl:copy>
<xsl:apply-templates select="*">
<xsl:sort select="local-name()"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>