下面我有这样的情况:
<GetNewOrdersResponse>
<GetNewOrdersResult>
<Receipts>
<IdOrder>1</IdOrder>
<IdOrder>2</IdOrder>
<IdOrder>3</IdOrder>
</Receipts>
</GetNewOrdersResult>
</GetNewOrdersResponse>我想要转换成这个结构
<GetNewOrdersResponse>
<GetNewOrdersResult>
<Receipts>
<IdOrder>1</IdOrder>
</Receipts>
<Receipts>
<IdOrder>2</IdOrder>
</Receipts>
<Receipts>
<IdOrder>3</IdOrder>
</Receipts>
</GetNewOrdersResult>
</GetNewOrdersResponse>我试过这段代码,但没有成功:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<ns0:Test xmlns:ns0="http://test/GetNewOrders">
<GetNewOrdersResponse>
<GetNewOrdersResult>
<Receipts>
<IdOrder>
<xsl:for-each select="GetNewOrdersResponse/GetNewOrdersResult/Receipts/IdOrder">
<xsl:value-of select="IdOrder"/>
</xsl:for-each>
</IdOrder>
</Receipts>
</GetNewOrdersResult>
</GetNewOrdersResponse>
</ns0:Test>
</xsl:template>
</xsl:stylesheet>发布于 2014-10-10 01:35:37
这非常简单,使用标识转换模板作为规则和规则的几个例外:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Receipts">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="IdOrder">
<Receipts>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</Receipts>
</xsl:template>
</xsl:stylesheet>或者,如果你更愿意遵循你的尝试的逻辑:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<GetNewOrdersResponse>
<GetNewOrdersResult>
<xsl:for-each select="GetNewOrdersResponse/GetNewOrdersResult/Receipts/IdOrder">
<Receipts>
<xsl:copy-of select="."/>
</Receipts>
</xsl:for-each>
</GetNewOrdersResult>
</GetNewOrdersResponse>
</xsl:template>
</xsl:stylesheet>https://stackoverflow.com/questions/26290510
复制相似问题