XSLT:How 维护 XML 中标签的顺序
XSLT:How to Maintain Sequential Order of tag in XML
我们有输入 XML.In,我们无法维护标签的顺序。
基本上,我们在 XSLT.Then 中写了转换,它也损害了 2 Looping 标签的顺序。
我们想使用 <UserDefined>
标签维护顺序。
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<SalesOrders xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORTOIDOC.XSD">
<Orders>
<OrderHeader>
<CustomerPoNumber>AB-54354</CustomerPoNumber>
<OrderActionType>A</OrderActionType>
</OrderHeader>
<OrderDetails>
<CommentLine>
<Comment>Ensure saddle is color coded</Comment>
<OrderLineID>OR-1810127</OrderLineID>
<UserDefined>10</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-001</Comment>
<OrderLineID>OR-1810128</OrderLineID>
<UserDefined>11</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-PREVIOUS</Comment>
<OrderLineID>OR-1810129</OrderLineID>
<UserDefined>12</UserDefined>
</CommentLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>ACSH-NHH-12OZ-12</StockCode>
<StockDescription>NHH ABYSS CHIA SHAMPOO 12OZ CS</StockDescription>
<OrderUom>CS</OrderUom>
<Price>0.0</Price>
<PriceUom>CS</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>13</UserDefined>
<OrderLineID>OR-1810130</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>PAD-DISPLAY-SMH-26</StockCode>
<StockDescription>PAD TARGET ASSORTMENT 2</StockDescription>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>14</UserDefined>
<OrderLineID>OR-1810131</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>LADO-SMO-4OZ-01</StockCode>
<StockDescription>SMO LAVENDER DRY OIL 4OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>7.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>1</UserDefined>
<OrderLineID>OR-1634834</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>WSSB-SMS-6OZ-01</StockCode>
<StockDescription>SMW COCONUT SHAVE BUTTER 6OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>7.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>2</UserDefined>
<OrderLineID>OR-1636755</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHCM-SMH-8OZ-01</StockCode>
<StockDescription>SMH COCONUT MILK 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>6</UserDefined>
<OrderLineID>OR-1641836</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHWS-SMO-03</StockCode>
<StockDescription>SPECIAL2 COCONUT HM/CM/CC</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>25.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>4</UserDefined>
<OrderLineID>OR-1642378</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHHM-SMH-8OZ-01</StockCode>
<StockDescription>SMH COCONUT HAIR MIST 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>7</UserDefined>
<OrderLineID>OR-1642587</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHCC-SMH-8OZ-01</StockCode>
<StockDescription>SMH CH COWASH CLEANSER 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>5</UserDefined>
<OrderLineID>OR-1652357</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>ABSH-SMH-12OZ-01</StockCode>
<StockDescription>SMH ABS BALANCE SHAMPOO 12OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>10.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>3</UserDefined>
<OrderLineID>OR-1659227</OrderLineID>
</StockLine>
<CommentLine>
<Comment>This is for test purpose</Comment>
<OrderLineID>OR-1810124</OrderLineID>
<UserDefined>8</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-SAVE</Comment>
<OrderLineID>OR-1810125</OrderLineID>
<UserDefined>9</UserDefined>
</CommentLine>
</OrderDetails>
</Orders>
</SalesOrders>
我们在上面尝试了 XSLT。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="Windows-1252" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="StockLine[not(StockCodeDescription) and not (OrderQty) and not(Price)]">
<CommentLine>
<Comment>
<xsl:value-of select="StockCode" />
</Comment>
<xsl:copy-of select="OrderLineID" />
<xsl:copy-of select="UserDefined" />
</CommentLine>
</xsl:template>
<xsl:template match="CommentLine">
<CommentLine>
<xsl:for-each-group select="CommentLine" group-by="CommentLine">
<xsl:apply-templates select="current-group()" />
</xsl:for-each-group>
</CommentLine>
</xsl:template>
<xsl:template match="CommentLine[OrderLineID = preceding-sibling::StockLine/OrderLineID and not(Comment)]" />
<xsl:template match="CommentLine[some $sib in preceding-sibling::CommentLine satisfies deep-equal(., $sib)]" />
</xsl:stylesheet>
预期输出:
<?xml version="1.0" encoding="UTF-8"?>
<SalesOrders xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORTOIDOC.XSD">
<Orders>
<OrderHeader>
<CustomerPoNumber>AB-54354</CustomerPoNumber>
<OrderActionType>A</OrderActionType>
</OrderHeader>
<OrderDetails>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>LADO-SMO-4OZ-01</StockCode>
<StockDescription>SMO LAVENDER DRY OIL 4OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>7.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>1</UserDefined>
<OrderLineID>OR-1634834</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>WSSB-SMS-6OZ-01</StockCode>
<StockDescription>SMW COCONUT SHAVE BUTTER 6OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>7.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>2</UserDefined>
<OrderLineID>OR-1636755</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>ABSH-SMH-12OZ-01</StockCode>
<StockDescription>SMH ABS BALANCE SHAMPOO 12OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>10.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>3</UserDefined>
<OrderLineID>OR-1659227</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHWS-SMO-03</StockCode>
<StockDescription>SPECIAL2 COCONUT HM/CM/CC</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>25.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>4</UserDefined>
<OrderLineID>OR-1642378</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHCC-SMH-8OZ-01</StockCode>
<StockDescription>SMH CH COWASH CLEANSER 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>5</UserDefined>
<OrderLineID>OR-1652357</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHCM-SMH-8OZ-01</StockCode>
<StockDescription>SMH COCONUT MILK 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>6</UserDefined>
<OrderLineID>OR-1641836</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHHM-SMH-8OZ-01</StockCode>
<StockDescription>SMH COCONUT HAIR MIST 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>7</UserDefined>
<OrderLineID>OR-1642587</OrderLineID>
</StockLine>
<CommentLine>
<Comment>This is for test purpose</Comment>
<OrderLineID>OR-1810124</OrderLineID>
<UserDefined>8</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-SAVE</Comment>
<OrderLineID>OR-1810125</OrderLineID>
<UserDefined>9</UserDefined>
</CommentLine>
<CommentLine>
<Comment>Ensure saddle is color coded</Comment>
<OrderLineID>OR-1810127</OrderLineID>
<UserDefined>10</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-001</Comment>
<OrderLineID>OR-1810128</OrderLineID>
<UserDefined>11</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-PREVIOUS</Comment>
<OrderLineID>OR-1810129</OrderLineID>
<UserDefined>12</UserDefined>
</CommentLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>ACSH-NHH-12OZ-12</StockCode>
<StockDescription>NHH ABYSS CHIA SHAMPOO 12OZ CS</StockDescription>
<OrderUom>CS</OrderUom>
<Price>0.0</Price>
<PriceUom>CS</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>13</UserDefined>
<OrderLineID>OR-1810130</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>PAD-DISPLAY-SMH-26</StockCode>
<StockDescription>PAD TARGET ASSORTMENT 2</StockDescription>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>14</UserDefined>
<OrderLineID>OR-1810131</OrderLineID>
</StockLine>
</OrderDetails>
</Orders>
</SalesOrders>
如果您只想按 UserDefined
元素值对 OrderDetails
元素的子元素进行排序,则
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="OrderDetails">
<xsl:copy>
<xsl:apply-templates select="*">
<xsl:sort select="xs:integer(UserDefined)"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:transform>
就足够了(在线 http://xsltransform.net/jyRYYjt)。但是,我不确定为什么要包括所有那些看起来无关的其他模板。
我们有输入 XML.In,我们无法维护标签的顺序。 基本上,我们在 XSLT.Then 中写了转换,它也损害了 2 Looping 标签的顺序。
我们想使用 <UserDefined>
标签维护顺序。
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<SalesOrders xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORTOIDOC.XSD">
<Orders>
<OrderHeader>
<CustomerPoNumber>AB-54354</CustomerPoNumber>
<OrderActionType>A</OrderActionType>
</OrderHeader>
<OrderDetails>
<CommentLine>
<Comment>Ensure saddle is color coded</Comment>
<OrderLineID>OR-1810127</OrderLineID>
<UserDefined>10</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-001</Comment>
<OrderLineID>OR-1810128</OrderLineID>
<UserDefined>11</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-PREVIOUS</Comment>
<OrderLineID>OR-1810129</OrderLineID>
<UserDefined>12</UserDefined>
</CommentLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>ACSH-NHH-12OZ-12</StockCode>
<StockDescription>NHH ABYSS CHIA SHAMPOO 12OZ CS</StockDescription>
<OrderUom>CS</OrderUom>
<Price>0.0</Price>
<PriceUom>CS</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>13</UserDefined>
<OrderLineID>OR-1810130</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>PAD-DISPLAY-SMH-26</StockCode>
<StockDescription>PAD TARGET ASSORTMENT 2</StockDescription>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>14</UserDefined>
<OrderLineID>OR-1810131</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>LADO-SMO-4OZ-01</StockCode>
<StockDescription>SMO LAVENDER DRY OIL 4OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>7.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>1</UserDefined>
<OrderLineID>OR-1634834</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>WSSB-SMS-6OZ-01</StockCode>
<StockDescription>SMW COCONUT SHAVE BUTTER 6OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>7.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>2</UserDefined>
<OrderLineID>OR-1636755</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHCM-SMH-8OZ-01</StockCode>
<StockDescription>SMH COCONUT MILK 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>6</UserDefined>
<OrderLineID>OR-1641836</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHWS-SMO-03</StockCode>
<StockDescription>SPECIAL2 COCONUT HM/CM/CC</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>25.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>4</UserDefined>
<OrderLineID>OR-1642378</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHHM-SMH-8OZ-01</StockCode>
<StockDescription>SMH COCONUT HAIR MIST 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>7</UserDefined>
<OrderLineID>OR-1642587</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHCC-SMH-8OZ-01</StockCode>
<StockDescription>SMH CH COWASH CLEANSER 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>5</UserDefined>
<OrderLineID>OR-1652357</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>ABSH-SMH-12OZ-01</StockCode>
<StockDescription>SMH ABS BALANCE SHAMPOO 12OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>10.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>3</UserDefined>
<OrderLineID>OR-1659227</OrderLineID>
</StockLine>
<CommentLine>
<Comment>This is for test purpose</Comment>
<OrderLineID>OR-1810124</OrderLineID>
<UserDefined>8</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-SAVE</Comment>
<OrderLineID>OR-1810125</OrderLineID>
<UserDefined>9</UserDefined>
</CommentLine>
</OrderDetails>
</Orders>
</SalesOrders>
我们在上面尝试了 XSLT。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="Windows-1252" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="StockLine[not(StockCodeDescription) and not (OrderQty) and not(Price)]">
<CommentLine>
<Comment>
<xsl:value-of select="StockCode" />
</Comment>
<xsl:copy-of select="OrderLineID" />
<xsl:copy-of select="UserDefined" />
</CommentLine>
</xsl:template>
<xsl:template match="CommentLine">
<CommentLine>
<xsl:for-each-group select="CommentLine" group-by="CommentLine">
<xsl:apply-templates select="current-group()" />
</xsl:for-each-group>
</CommentLine>
</xsl:template>
<xsl:template match="CommentLine[OrderLineID = preceding-sibling::StockLine/OrderLineID and not(Comment)]" />
<xsl:template match="CommentLine[some $sib in preceding-sibling::CommentLine satisfies deep-equal(., $sib)]" />
</xsl:stylesheet>
预期输出:
<?xml version="1.0" encoding="UTF-8"?>
<SalesOrders xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORTOIDOC.XSD">
<Orders>
<OrderHeader>
<CustomerPoNumber>AB-54354</CustomerPoNumber>
<OrderActionType>A</OrderActionType>
</OrderHeader>
<OrderDetails>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>LADO-SMO-4OZ-01</StockCode>
<StockDescription>SMO LAVENDER DRY OIL 4OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>7.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>1</UserDefined>
<OrderLineID>OR-1634834</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>WSSB-SMS-6OZ-01</StockCode>
<StockDescription>SMW COCONUT SHAVE BUTTER 6OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>7.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>2</UserDefined>
<OrderLineID>OR-1636755</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>ABSH-SMH-12OZ-01</StockCode>
<StockDescription>SMH ABS BALANCE SHAMPOO 12OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>10.99</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>3</UserDefined>
<OrderLineID>OR-1659227</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHWS-SMO-03</StockCode>
<StockDescription>SPECIAL2 COCONUT HM/CM/CC</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>25.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>4</UserDefined>
<OrderLineID>OR-1642378</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHCC-SMH-8OZ-01</StockCode>
<StockDescription>SMH CH COWASH CLEANSER 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>5</UserDefined>
<OrderLineID>OR-1652357</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHCM-SMH-8OZ-01</StockCode>
<StockDescription>SMH COCONUT MILK 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>6</UserDefined>
<OrderLineID>OR-1641836</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>CHHM-SMH-8OZ-01</StockCode>
<StockDescription>SMH COCONUT HAIR MIST 8OZ</StockDescription>
<OrderQty>1.0</OrderQty>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>7</UserDefined>
<OrderLineID>OR-1642587</OrderLineID>
</StockLine>
<CommentLine>
<Comment>This is for test purpose</Comment>
<OrderLineID>OR-1810124</OrderLineID>
<UserDefined>8</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-SAVE</Comment>
<OrderLineID>OR-1810125</OrderLineID>
<UserDefined>9</UserDefined>
</CommentLine>
<CommentLine>
<Comment>Ensure saddle is color coded</Comment>
<OrderLineID>OR-1810127</OrderLineID>
<UserDefined>10</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-001</Comment>
<OrderLineID>OR-1810128</OrderLineID>
<UserDefined>11</UserDefined>
</CommentLine>
<CommentLine>
<Comment>EDI-PREVIOUS</Comment>
<OrderLineID>OR-1810129</OrderLineID>
<UserDefined>12</UserDefined>
</CommentLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>ACSH-NHH-12OZ-12</StockCode>
<StockDescription>NHH ABYSS CHIA SHAMPOO 12OZ CS</StockDescription>
<OrderUom>CS</OrderUom>
<Price>0.0</Price>
<PriceUom>CS</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>13</UserDefined>
<OrderLineID>OR-1810130</OrderLineID>
</StockLine>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<StockCode>PAD-DISPLAY-SMH-26</StockCode>
<StockDescription>PAD TARGET ASSORTMENT 2</StockDescription>
<OrderUom>EA</OrderUom>
<Price>0.0</Price>
<PriceUom>EA</PriceUom>
<AlwaysUsePriceEntered>Y</AlwaysUsePriceEntered>
<UserDefined>14</UserDefined>
<OrderLineID>OR-1810131</OrderLineID>
</StockLine>
</OrderDetails>
</Orders>
</SalesOrders>
如果您只想按 UserDefined
元素值对 OrderDetails
元素的子元素进行排序,则
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="OrderDetails">
<xsl:copy>
<xsl:apply-templates select="*">
<xsl:sort select="xs:integer(UserDefined)"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:transform>
就足够了(在线 http://xsltransform.net/jyRYYjt)。但是,我不确定为什么要包括所有那些看起来无关的其他模板。