Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于展平xml节点子节点和孙子节点的xslt_Xml_Xslt - Fatal编程技术网

用于展平xml节点子节点和孙子节点的xslt

用于展平xml节点子节点和孙子节点的xslt,xml,xslt,Xml,Xslt,我开始学习xslt来操作xml,并尝试扁平化具有许多不同子节点和孙子节点的xml。是否有任何简单的xslt将输入xml转换为生成output.xml input.xml: <Addresses> <Address__c> <Id>a0H20000002uhsyEAA</Id> <R00N20000001XA10EAG> <Customer_Installation_Address__c>

我开始学习xslt来操作xml,并尝试扁平化具有许多不同子节点和孙子节点的xml。是否有任何简单的xslt将输入xml转换为生成output.xml

input.xml:

<Addresses>
  <Address__c>
    <Id>a0H20000002uhsyEAA</Id>
    <R00N20000001XA10EAG>
        <Customer_Installation_Address__c>
            <Id>a0L2000000DDpOCEA1</Id>
        </Customer_Installation_Address__c>
        <Customer_Installation_Address__c>
            <Id>a0L2000000DDpOCEB2</Id>
        </Customer_Installation_Address__c>
    </R00N20000001XA10EAG>
    <Customers__r>
        <Account>
            <Id>001M000000FOEiHIAX</Id>
        </Account>
        <Account>
            <Id>001M000000FOAAbIAP</Id>
        </Account>
    </Customers__r>
    <Cases__r>
        <Case>
            <Id>500D000000G7drpIAB</Id>
        </Case>
    </Cases__r>
   </Address__c>
   <Address__c>
    <Id>a0H20000003JjyzEAC</Id>
    <Cases__r>
        <Case>
            <Id>500D000000G7drpIAB</Id>
        </Case>
    </Cases__r>
   </Address__c>
   <Address__c>
    <Id>a0HD0000007wQ0EMAU</Id>
    <Customers__r>
        <Account>
            <Id>001M000000FOEiHIAX</Id>
        </Account>
        <Account>
            <Id>001M000000FOAAbIAP</Id>
        </Account>
    </Customers__r>
   </Address__c>
</Addresses>

a0H20000002uhsyEAA
A0L200000DDPOCEA1
A0L200000DDPOCEB2
001M000000FOEiHIAX
001M000000FOAAbIAP
500D000000G7drpIAB
a0H20000003JjyzEAC
500D000000G7drpIAB
a0HD0000007wQ0EMAU
001M000000FOEiHIAX
001M000000FOAAbIAP
并希望生成以下xml输出

output.xml

<Addresses>
  <Address__c>
    <AddrId>a0H20000002uhsyEAA</AddrId>
    <CIAddressId>a0L2000000DDpOCEA1</CIAddressId>
    <CIAddressId>a0L2000000DDpOCEB2</CIAddressId>
    <AccountId>001M000000FOEiHIAX</AccountId>
    <AccountId>001M000000FOAAbIAP</AccountId>
    <CaseId>500D000000G7drpIAB</CaseId>
  </Address__c>
  <Address__c>
    <AddrId>a0H20000003JjyzEAC</AddrId>
    <CaseId>500D000000G7drpIAB</CaseId>
  </Address__c>
  <Address__c>
    <AddrId>a0HD0000007wQ0EMAU</AddrId>
    <AccountId>001M000000FOEiHIAX</AccountId>
    <AccountId>001M000000FOAAbIAP</AccountId>
   </Address__c>
</Addresses>

a0H20000002uhsyEAA
A0L200000DDPOCEA1
A0L200000DDPOCEB2
001M000000FOEiHIAX
001M000000FOAAbIAP
500D000000G7drpIAB
a0H20000003JjyzEAC
500D000000G7drpIAB
a0HD0000007wQ0EMAU
001M000000FOEiHIAX
001M000000FOAAbIAP
类似的内容(有更简洁的表达方式):

等等

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <Addresses>
      <xsl:apply-templates select="Addresses/Address__c" />
    </Addresses>
  </xsl:template>

  <xsl:template match="Address__c">
    <Address__c>
      <xsl:apply-templates select="descendant::Id" />
    </Address__c>
  </xsl:template>

  <xsl:template match="Id">
    <Id><xsl:value-of select="." /></Id>
  </xsl:template>
</xsl:stylesheet>
<Addresses>
<Address__c>
    <Id>a0H20000002uhsyEAA</Id>
    <Id>a0L2000000DDpOCEA1</Id>
    <Id>a0L2000000DDpOCEB2</Id>
    <!-- ... -->
<xsl:template match="Address__c/Id">
  <AddrId><xsl:value-of select="." /></AddrId>
</xsl:template>

<xsl:template match="Customer_Installation_Address__c/Id">
  <CIAddressId><xsl:value-of select="." /></CIAddressId>
</xsl:template>