合并XML节XSLT
我是XSLT新手,在转换xml文件时遇到了一些问题 我需要知道XSLT代码,我有一个序列化的xml(XMLA),我想转换成XMLB 我不知道如何将客户部分合并为一个部分 提前谢谢 XML A合并XML节XSLT,xml,xslt,Xml,Xslt,我是XSLT新手,在转换xml文件时遇到了一些问题 我需要知道XSLT代码,我有一个序列化的xml(XMLA),我想转换成XMLB 我不知道如何将客户部分合并为一个部分 提前谢谢 XML A <Customers> <Customer> <Policy> <diaPolicyId>8B71E21FEFF546A680DFE9DA40EC0711</diaPolicyId> <diaCustome
<Customers>
<Customer>
<Policy>
<diaPolicyId>8B71E21FEFF546A680DFE9DA40EC0711</diaPolicyId>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
</Policy>
<PolicyAddtional>
<diaPolicyId>8B71E21FEFF546A680DFE9DA40EC0711</diaPolicyId>
</PolicyAddtional>
<Customer>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
<Title>003</Title>
</Customer>
<CustomerAddtional>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
<IsBirthday>false</IsBirthday>
</CustomerAddtional>
</Customer>
<Customer>
<Policy>
<diaPolicyId>E835E227EA8F44F1BDCF346CE63541F3</diaPolicyId>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
</Policy>
<PolicyAddtional>
<diaPolicyId>E835E227EA8F44F1BDCF346CE63541F3</diaPolicyId>
</PolicyAddtional>
<Customer>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
</Customer>
<CustomerAddtional>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
<IsBirthday>false</IsBirthday>
</CustomerAddtional>
</Customer>
</Customers>
8B71E21EFF546A680DFE9DA40EC0711
STE/WIL/19650420
8B71E21EFF546A680DFE9DA40EC0711
STE/WIL/19650420
003
STE/WIL/19650420
假的
E835E227EA8F44F1BDCF346CE63541F3
STE/WIL/19650420
E835E227EA8F44F1BDCF346CE63541F3
STE/WIL/19650420
STE/WIL/19650420
假的
XML B
<Customers>
<Customer>
<diaPolicyId>8B71E21FEFF546A680DFE9DA40EC0711</diaPolicyId>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
<diaPolicyId>8B71E21FEFF546A680DFE9DA40EC0711</diaPolicyId>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
<Title>003</Title>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
<IsBirthday>false</IsBirthday>
</Customer>
<Customer>
<diaPolicyId>E835E227EA8F44F1BDCF346CE63541F3</diaPolicyId>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
<diaPolicyId>E835E227EA8F44F1BDCF346CE63541F3</diaPolicyId>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
<diaCustomerId>STE/WIL/19650420</diaCustomerId>
<IsBirthday>false</IsBirthday>
</Customer>
</Customers>
8B71E21EFF546A680DFE9DA40EC0711
STE/WIL/19650420
8B71E21EFF546A680DFE9DA40EC0711
STE/WIL/19650420
003
STE/WIL/19650420
假的
E835E227EA8F44F1BDCF346CE63541F3
STE/WIL/19650420
E835E227EA8F44F1BDCF346CE63541F3
STE/WIL/19650420
STE/WIL/19650420
假的
更新:添加了迄今为止完成的XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Customers">
<combined>
<xsl:copy-of select="@* | Customer/@*" />
</combined>
</xsl:template>
</xsl:stylesheet>
您首先需要了解
它自己按原样复制所有元素,这意味着您只需要为实际希望更改的节点编写模板
看起来您希望删除客户元素的子元素(尽管保留这些子元素的子元素)。在这种情况下,您只需添加此模板即可处理此问题
<xsl:template match="Customers/Customer/*">
<xsl:apply-templates />
</xsl:template>
因此,“Customers/Customer/*”匹配您要删除的元素(或者更确切地说,不复制到输出),然后
将继续处理它们的子元素(将由标识转换匹配)
试试这个XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Customers/Customer/*">
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
请包括您迄今为止提出的XSLT样式表,即使它不起作用。然后,确定有问题且需要帮助的部分。如果您对XSLT总体不确定,请删除此问题并了解XSLT的基础知识。抱歉,添加了我使用过的XSLT,我现在不输出任何内容。“然后,确定有问题的部分以及您需要帮助的部分。”请不要误会,但我对这方面还很陌生,所以如果你能给我指出正确的方向,那就太好了。谢谢你的帮助。最后,我使用C sharp中的dynamics将不同的类合并在一起,然后序列化
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Customers/Customer/*">
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>