我有一个看起来像这样的 xml:
<ShoppingList>
<MoneyIHaveToSpend>20.00</MoneyIHaveToSpend>
<Item>
<Name>Apples</Name>
<Price>1.00</Price>
</Item>
<Item>
<Name>Oranges</Name>
<Price>1.00</Price>
</Item>
<AdditionalInfo>...</AdditionalInfo>
</ShoppingList>
我想将“项目”包装到 GroceryList 中,如下所示:
<ShoppingList>
<MoneyIHaveToSpend>20.00</MoneyIHaveToSpend>
<GroceryList>
<Item>
<Name>Apples</Name>
<Price>1.00</Price>
</Item>
<Item>
<Name>Oranges</Name>
<Price>1.00</Price>
</Item>
</GroceryList>
<AdditionalInfo>...</AdditionalInfo>
</ShoppingList>
“购物清单”内只有一个子清单。我将如何使用 xslt 执行此操作?
我试图做类似以下的事情,但分裂<GroceryList>
并</GroceryList>
给我编译错误。我意识到其余的无论如何都是错误的,但是由于编译错误,我什至无法对其进行测试或弄乱它:
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ShoppingList">
<xsl:apply-templates select="/ShoppingList/Item"/>
<xsl:if test="position() = 1">
<GroceryList> <!-- Error: "XML element is not closed" -->
<xsl:apply-templates/>
</xsl:if>
<xsl:if test="???">
</GroceryList> <!-- Error: "No open tag found" -->
</xsl:if>
</xsl:template>