Xml 使用xslt将下一个子节点附加到父节点中的内容
我想将子节点附加到父节点中 下面是XML。如果order_h下的order_no等于order_h中的以下order_no,我想将order_d附加到order_h中Xml 使用xslt将下一个子节点附加到父节点中的内容,xml,xslt,Xml,Xslt,我想将子节点附加到父节点中 下面是XML。如果order_h下的order_no等于order_h中的以下order_no,我想将order_d附加到order_h中 <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <order> <order_h owner="GD" order_no="421424" profoma_po="421425"> <
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<order>
<order_h owner="GD" order_no="421424" profoma_po="421425">
<order_d owner="GD" item_no="100000014" line_no="1" order_no="421424" color_code="730" manufacturer="100783">
<Size_b assoc_id="69398" row_no="0" pct_ratio="PCT" total_pct="100" priority="0" ship_pack="BULK">
<size_d assoc_id="69398" ship_pack="BULK" ctn_sku="5602060" size_code="XS" alloc_qty="18" plan_pct_ratio="23.5" row_no="0" sort_value="5"/>
</Size_b>
</order_d>
</order_h>
<order_h owner="GD" order_no="421424" profoma_po="421425">
<order_d owner="GD" item_no="100000014" line_no="3" order_no="421424" color_code="002" manufacturer="100783">
</order_d>
</order_h>
<order_h owner="GD" order_no="421424" profoma_po="421425">
<order_d owner="GD" item_no="100000014" line_no="2" order_no="421424" color_code="257" manufacturer="100783">
</order_d>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421425" profoma_po="421426">
<order_d owner="GD" item_no="100000014" line_no="1" order_no="421425" color_code="730" manufacturer="100783">
</order_d>
</order_h>
<order_h owner="GD" order_no="421425" profoma_po="421426">
<order_d owner="GD" item_no="100000014" line_no="3" order_no="421425" color_code="002" manufacturer="100783">
</order_d>
</order_h>
<order_h owner="GD" order_no="421425" profoma_po="421426">
<order_d owner="GD" item_no="100000014" line_no="2" order_no="421425" color_code="257" manufacturer="100783">
</order_d>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421426" profoma_po="421427">
<order_d owner="GD" item_no="100000015" line_no="1" order_no="421426" color_code="000" manufacturer="100783">
</order_d>
</order_h>
<order_h owner="GD" order_no="421426" profoma_po="421427">
<order_d owner="GD" item_no="100000015" line_no="3" order_no="421426" color_code="002" manufacturer="100783">
</order_d>
</order_h>
<order_h owner="GD" order_no="421426" profoma_po="421427">
<order_d owner="GD" item_no="100000015" line_no="2" order_no="421426" color_code="450" manufacturer="100783">
</order_d>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421427" profoma_po="421428">
<order_d owner="GD" item_no="100000015" line_no="1" order_no="421427" color_code="000" manufacturer="100783">
</order_d>
</order_h>
<order_h owner="GD" order_no="421427" profoma_po="421428">
<order_d owner="GD" item_no="100000015" line_no="3" order_no="421427" color_code="002" manufacturer="100783">
</order_d>
</order_h>
<order_h owner="GD" order_no="421427" profoma_po="421428">
<order_d owner="GD" item_no="100000015" line_no="2" order_no="421427" color_code="450" manufacturer="100783">
</order_d>
</order_h>
</order>
</document>
我需要如下输出
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<order>
<order_h owner="GD" order_no="421424" profoma_po="421425">
<order_d owner="GD" item_no="100000014" line_no="1" order_no="421424" color_code="730" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="3" order_no="421424" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="2" order_no="421424" color_code="257" manufacturer="100783"/>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421425" profoma_po="421426">
<order_d owner="GD" item_no="100000014" line_no="1" order_no="421425" color_code="730" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="3" order_no="421425" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="2" order_no="421425" color_code="257" manufacturer="100783"/>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421426" profoma_po="421427">
<order_d owner="GD" item_no="100000015" line_no="1" order_no="421426" color_code="000" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="3" order_no="421426" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="2" order_no="421426" color_code="450" manufacturer="100783"/>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421427" profoma_po="421428">
<order_d owner="GD" item_no="100000015" line_no="1" order_no="421427" color_code="000" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="3" order_no="421427" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="2" order_no="421427" color_code="450" manufacturer="100783"/>
</order_h>
</order>
</document>
提前感谢这一转变:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="order_h|order_d/node()"/>
<xsl:template match="order_h[1]">
<xsl:copy>
<xsl:apply-templates select=
"@*|node()|following-sibling::*/node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时(更正为格式良好的XML文档):
生成所需的正确结果:
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<order>
<order_h owner="GD" order_no="421424" profoma_po="421425">
<order_d owner="GD" item_no="100000014" line_no="1" order_no="421424" color_code="730" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="3" order_no="421424" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="2" order_no="421424" color_code="257" manufacturer="100783"/>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421425" profoma_po="421426">
<order_d owner="GD" item_no="100000014" line_no="1" order_no="421425" color_code="730" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="3" order_no="421425" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="2" order_no="421425" color_code="257" manufacturer="100783"/>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421426" profoma_po="421427">
<order_d owner="GD" item_no="100000015" line_no="1" order_no="421426" color_code="000" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="3" order_no="421426" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="2" order_no="421426" color_code="450" manufacturer="100783"/>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421427" profoma_po="421428">
<order_d owner="GD" item_no="100000015" line_no="1" order_no="421427" color_code="000" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="3" order_no="421427" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="2" order_no="421427" color_code="450" manufacturer="100783"/>
</order_h>
</order>
</document>
说明:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="order_h|order_d/node()"/>
<xsl:template match="order_h[1]">
<xsl:copy>
<xsl:apply-templates select=
"@*|node()|following-sibling::*/node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
正确使用和覆盖此转换:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="order_h|order_d/node()"/>
<xsl:template match="order_h[1]">
<xsl:copy>
<xsl:apply-templates select=
"@*|node()|following-sibling::*/node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时(更正为格式良好的XML文档):
生成所需的正确结果:
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<order>
<order_h owner="GD" order_no="421424" profoma_po="421425">
<order_d owner="GD" item_no="100000014" line_no="1" order_no="421424" color_code="730" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="3" order_no="421424" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="2" order_no="421424" color_code="257" manufacturer="100783"/>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421425" profoma_po="421426">
<order_d owner="GD" item_no="100000014" line_no="1" order_no="421425" color_code="730" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="3" order_no="421425" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000014" line_no="2" order_no="421425" color_code="257" manufacturer="100783"/>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421426" profoma_po="421427">
<order_d owner="GD" item_no="100000015" line_no="1" order_no="421426" color_code="000" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="3" order_no="421426" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="2" order_no="421426" color_code="450" manufacturer="100783"/>
</order_h>
</order>
<order>
<order_h owner="GD" order_no="421427" profoma_po="421428">
<order_d owner="GD" item_no="100000015" line_no="1" order_no="421427" color_code="000" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="3" order_no="421427" color_code="002" manufacturer="100783"/>
<order_d owner="GD" item_no="100000015" line_no="2" order_no="421427" color_code="450" manufacturer="100783"/>
</order_h>
</order>
</document>
说明:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="order_h|order_d/node()"/>
<xsl:template match="order_h[1]">
<xsl:copy>
<xsl:apply-templates select=
"@*|node()|following-sibling::*/node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
正确使用和覆盖@Dimitre。。非常感谢您对代码进行了美化,不过我的xml在上面有了轻微的更改和更新。您能告诉我需要在xslt中修改什么才能得到输出吗?对不起,打扰您了。谢谢你的帮助。@user1760923,你的问题已经完全回答了。无论何时“更改”源XML文档,实际上都会遇到一个新问题。建议不要不断更改问题,而是提出新问题。因此,我建议您将问题恢复到原始状态,并提出一个新问题。另外,请接受此答案(通过单击答案旁边的复选标记)。A您建议我将其替换为以前的xml并标记为已回答。请对此作出回应。@Dimitre。。非常感谢您对代码进行了美化,不过我的xml在上面有了轻微的更改和更新。您能告诉我需要在xslt中修改什么才能得到输出吗?对不起,打扰您了。谢谢你的帮助。@user1760923,你的问题已经完全回答了。无论何时“更改”源XML文档,实际上都会遇到一个新问题。建议不要不断更改问题,而是提出新问题。因此,我建议您将问题恢复到原始状态,并提出一个新问题。另外,请接受此答案(通过单击答案旁边的复选标记)。A您建议我将其替换为以前的xml并标记为已回答。请对此作出回应。