0
XML 노드 이름을 변경하려고하지만이를 허용하지 않습니다. 아래 코드에서는 두 개의 템플릿이 있습니다. 1. 노드 이름 변경 2. DocumentReference의 부모 노드를 만듭니다. 내 XML 및 XSLT를 참조하십시오.XSLT를 사용하여 XML 요소 이름 변경
내 XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DataArea>
<PurchaseOrder>
<PurchaseOrderLine>
<DocumentReference>
<DocumentID>
<ID>23423</ID>
</DocumentID>
</DocumentReference>
<DocumentReference>
<DocumentID>
<ID>23424</ID>
</DocumentID>
</DocumentReference>
<Item>
<CustomerItemID>
<!-- ArtNr -->
<ID>444</ID>
</CustomerItemID>
</Item>
<Quantity unitCode="PCE">17.3</Quantity>
</PurchaseOrderLine>
</PurchaseOrder>
</DataArea>
예상 결과
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DataArea>
<PurchaseOrder>
<POL>
<DocumentReference>
<DocumentID>
<ID>23423</ID>
</DocumentID>
</DocumentReference>
<DocumentReference>
<DocumentID>
<ID>23424</ID>
</DocumentID>
</DocumentReference>
<Item>
<CustomerItemID>
<!-- ArtNr -->
<ID>444</ID>
</CustomerItemID>
</Item>
<Quantity unitCode="PCE">17.3</Quantity>
</POL>
</PurchaseOrder>
</DataArea>
내 XSLT
다음<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="PurchaseOrderLine">
<POL>
<xsl:apply-templates />
</POL>
</xsl:template>
<xsl:template match="PurchaseOrderLine">
<xsl:copy>
<Kiran>
<xsl:apply-templates select="@*|DocumentReference"/>
</Kiran>
<xsl:apply-templates select="@*|Item|Quantity"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
'match = "PurchaseOrderLine"'이있는 두 개의 템플릿을 가질 수 없습니다. 또한 자식 노드를 만든 후에는 특성을 만들 수 없습니다. –
두 목표를 모두 달성하려면 어떻게해야합니까? 어떤 제안 –
하나의 템플릿에서 문자 그대로의 결과 엘리먼트 인'Kiran'을 가지고 있습니다. 나는 당신이 원하는 결과를 어디서나 볼 수 없으므로 당신이 원하는 것을 말하기 어렵습니다. 명확히하십시오. –