好吧,例如我有一个 XML:
<ProcessPurchaseOrder >
    <PurchaseOrderLine>
        <DocumentReference type="sendersReference2">
            <DocumentID>
                <ID>100</ID>
            </DocumentID>
        </DocumentReference>
        <DocumentReference type="sendersReference3">
            <DocumentID>
                <ID>ru</ID>
            </DocumentID>
        </DocumentReference>
        <Item>
            <CustomerItemID>
                <ID>00126</ID>
            </CustomerItemID>
        </Item>
    </PurchaseOrderLine>
    <PurchaseOrderLine>
        <DocumentReference type="sendersReference2">
            <DocumentID>
                <ID>200</ID>
            </DocumentID>
        </DocumentReference>
        <DocumentReference type="sendersReference3">
            <DocumentID>
                <ID>ru</ID>
            </DocumentID>
        </DocumentReference>
        <Item>
            <CustomerItemID>
                <ID>123122</ID>
            </CustomerItemID>
        </Item>
    </PurchaseOrderLine>
</ProcessPurchaseOrder>
和 XSLT 的一部分:
 <xsl:for-each select="*:PurchaseOrderLine">
    <xsl:variable name="ArtNr" select="*:Item/*:CustomerItemID/*:ID"/>
    <xsl:variable name="WepNr" select="/*/DbResponse/ResultSet/Row[Cell[@name='ARTNR']=$ArtNr][Cell[@name='WEANR']=$WeaNr]/Cell[@name='WEPNR']"/>
    <xsl:copy>
        <xsl:if test="$WepNr!=''">
            <xsl:for-each select="$WepNr">
                <LineNumber><xsl:value-of select="$WepNr/current()"/></LineNumber>
            </xsl:for-each>
        </xsl:if>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:for-each>
对于$WepNr我想复制整个值<PurchaseOrderLine>并插入<LineNumber>当前值的每个WepNr值。
因此,例如:如果$WepNr第一个 PurchaseOrderLine 返回:16;26 结果将是:
<ProcessPurchaseOrder >
    <PurchaseOrderLine>
    <!-- wepnr[1] = 16 -->
    <LineNumber>16</LineNumber>
        <DocumentReference type="sendersReference2">
            <DocumentID>
                <ID>100</ID>
            </DocumentID>
        </DocumentReference>
        <DocumentReference type="sendersReference3">
            <DocumentID>
                <ID>ru</ID>
            </DocumentID>
        </DocumentReference>
        <Item>
            <CustomerItemID>
                <ID>00126</ID>
            </CustomerItemID>
        </Item>
    </PurchaseOrderLine>
    <PurchaseOrderLine>
    <!-- copied PurchaseOrderLine with wepnr[2]=26 -->
    <LineNumber>26</LineNumber>
        <DocumentReference type="sendersReference2">
            <DocumentID>
                <ID>100</ID>
            </DocumentID>
        </DocumentReference>
        <DocumentReference type="sendersReference3">
            <DocumentID>
                <ID>ru</ID>
            </DocumentID>
        </DocumentReference>
        <Item>
            <CustomerItemID>
                <ID>00126</ID>
            </CustomerItemID>
        </Item>
    </PurchaseOrderLine>
    <!-- here is 2nd PurchaseOrderLine>
    <!-- ... -->
</ProcessPurchaseOrder>
是否可以?
UPD:DBresponse XML 部分
<DbResponse>
   <ResultSet>
      <Row>
         <Cell name="WEANR" type="VARCHAR2">1909123</Cell>
         <Cell name="ARTNR" type="VARCHAR2">00126</Cell>
         <Cell name="WEPNR" type="VARCHAR2">1</Cell>
      </Row>
      <Row>
         <Cell name="WEANR" type="VARCHAR2">1909123</Cell>
         <Cell name="ARTNR" type="VARCHAR2">00126</Cell>
         <Cell name="WEPNR" type="VARCHAR2">16</Cell>
      </Row>
   </ResultSet>
</DbResponse>
这只是意味着WepNr可以返回多个值:1 16在这种情况下,例如“”