Ich habe Eingabe XML wie unten und erwartet Ausgabe wie folgt.Kopiere partielle xml mit XSLT
Eingang xml:
<GetItemResponse xmlns="urn:api:pis:BaseComponents">
<Ack>Success</Ack>
<Item>
<AutoPay>false</AutoPay>
<ListingDetails>
<Adult>false</Adult>
<EndingReason>NotAvailable</EndingReason>
</ListingDetails>
<Duration>35</Duration>
<ShippingDetails>
<ApplyShippingDiscount>false</ApplyShippingDiscount>
<CalculatedShippingRate>
<WeightMajor measurementSystem="English" unit="lbs">0</WeightMajor>
<WeightMinor measurementSystem="English" unit="oz">0</WeightMinor>
</CalculatedShippingRate>
<SalesTax>
<SalesTaxPercent>0.0</SalesTaxPercent>
<ShippingIncludedInTax>false</ShippingIncludedInTax>
</SalesTax>
<ShippingServiceOptions>
<ShippingService>ShippingMethodStandard</ShippingService>
<ShippingServiceCost currencyID="USD">0.0</ShippingServiceCost>
<ShippingServiceAdditionalCost currencyID="USD">0.0</ShippingServiceAdditionalCost>
<ShippingServicePriority>1</ShippingServicePriority>
<ExpeditedService>false</ExpeditedService>
<ShippingTimeMin>1</ShippingTimeMin>
<ShippingTimeMax>6</ShippingTimeMax>
<FreeShipping>true</FreeShipping>
</ShippingServiceOptions>
<ExcludeShipToLocation>PO Box</ExcludeShipToLocation>
<SellerExcludeShipToLocationsPreference>true</SellerExcludeShipToLocationsPreference>
</ShippingDetails>
<ShipToLocations>US</ShipToLocations>
<HideFromSearch>false</HideFromSearch>
</Item>
</GetItemResponse>
Die Ausgabe xml sollte aussehen wie:
<ShippingDetails>
<ApplyShippingDiscount>false</ApplyShippingDiscount>
<CalculatedShippingRate>
<WeightMajor measurementSystem="English" unit="lbs">0</WeightMajor>
<WeightMinor measurementSystem="English" unit="oz">0</WeightMinor>
</CalculatedShippingRate>
<SalesTax>
<SalesTaxPercent>0.0</SalesTaxPercent>
<ShippingIncludedInTax>false</ShippingIncludedInTax>
</SalesTax>
<ShippingServiceOptions>
<ShippingService>ShippingMethodStandard</ShippingService>
<ShippingServiceCost currencyID="USD">0.0</ShippingServiceCost>
<ShippingServiceAdditionalCost currencyID="USD">0.0</ShippingServiceAdditionalCost>
<ShippingServicePriority>1</ShippingServicePriority>
<ExpeditedService>false</ExpeditedService>
<ShippingTimeMin>1</ShippingTimeMin>
<ShippingTimeMax>6</ShippingTimeMax>
<FreeShipping>true</FreeShipping>
</ShippingServiceOptions>
<ExcludeShipToLocation>PO Box</ExcludeShipToLocation>
<SellerExcludeShipToLocationsPreference>true</SellerExcludeShipToLocationsPreference>
</ShippingDetails>
Daher habe ich Schreib Xslt soetwas wie, unter dem nicht funktioniert. Ich benutze xslt 2.0. Bitte hilf mir mit dieser XSLT-Transformation.
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="urn:ebay:apis:eBLBaseComponents">
<xsl:output indent="yes" method="xml" encoding="utf-8" omit-xml-declaration="yes" />
<xsl:template match="/">
<ItemFee>
<product_id></product_id>
<Details>
<xsl:choose>
<xsl:when test="/ns:GetItemResponse/ns:Ack = 'Failure'">
<Ack>Failure</Ack>
<itemid>0</itemid>
<ebay_listing_status>-3</ebay_listing_status>
<status>FALSE</status>
<listed_timestamp>now</listed_timestamp>
<listing_reason>
<xsl:value-of select="/ns:GetItemResponse/ns:Errors[position()=last()]/ns:LongMessage"/>
</listing_reason>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</Details>
</ItemFee>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="ShippingDetails">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Bitte erläutern Sie die erforderliche Logik der Transformation ** in Worten **, nicht (nur) als Beispiel. –