私は XSLT の専門家ではないので、助けが必要です。当社は、ecomm Express Logistics から AWB ステータスを取得しています。データを提供する XML 構造は、Django でシリアル化された XML 形式です。この XML から必要なデータのみを選択したいと考えています。属性名とその値を抽出しようとしましたが、望ましい出力が得られません。
以下は入力構造です
<ecomexpress-objects version="1.0">
<object pk="1" model="awb">
<field type="BigIntegerField" name="awb_number">700054480</field>
<field type="CharField" name="orderid">5012</field>
<field type="FloatField" name="actual_weight">0.5</field>
<field type="CharField" name="origin">DELHI-DSW</field>
<field type="CharField" name="destination">DELHI-DLN</field>
<field type="CharField" name="customer">Ecom Express Private Limited - 32012</field>
<field type="CharField" name="consignee">MUKESH KUMAR GUPTA</field>
<field type="CharField" name="pickupdate">11-Feb-2013</field>
<field type="CharField" name="status">Delivered / Closed</field>
<field type="CharField" name="reason_code"/>
<field type="CharField" name="reason_code_description"/>
<field type="CharField" name="reason_code_number">999</field>
<field type="CharField" name="receiver">mukesh 9999488339</field>
<field type="CharField" name="expected_date">12-Feb-2013</field>
<field type="CharField" name="last_update_date">05-Apr-2013</field>
<field type="CharField" name="delivery_date">2013-02-17 11:26:00</field>
<field type="CharField" name="ref_awb">None</field>
<field type="CharField" name="rts_shipment"/>
<field type="CharField" name="system_delivery_update">2013-02-17 11:26:00</field>
<field type="CharField" name="rts_system_delivery_status"/>
</object>
<object pk="2" model="awb">
<field type="BigIntegerField" name="awb_number">700054482</field>
<field type="CharField" name="orderid">5014</field>
<field type="FloatField" name="actual_weight">0.5</field>
<field type="CharField" name="origin">DELHI-DSW</field>
<field type="CharField" name="destination">DELHI-DLN</field>
<field type="CharField" name="customer">Ecom Express Private Limited - 32012</field>
<field type="CharField" name="consignee">MUKESH KUMAR GUPTA</field>
<field type="CharField" name="pickupdate">11-Feb-2013</field>
<field type="CharField" name="status">Delivered / Closed</field>
<field type="CharField" name="reason_code"/>
<field type="CharField" name="reason_code_description"/>
<field type="CharField" name="reason_code_number">999</field>
<field type="CharField" name="receiver">mukesh 9999488339</field>
<field type="CharField" name="expected_date">12-Feb-2013</field>
<field type="CharField" name="last_update_date">05-Apr-2013</field>
<field type="CharField" name="delivery_date">2013-02-17 11:26:00</field>
<field type="CharField" name="ref_awb">None</field>
<field type="CharField" name="rts_shipment"/>
<field type="CharField" name="system_delivery_update">2013-02-17 11:26:00</field>
<field type="CharField" name="rts_system_delivery_status"/>
</object>
</ecomexpress-objects>
期待される出力構造は次のとおりです
<ecommexpress>
<awb>
<awb_number>700054480</awb_number>
<orderid>5012</orderid>
.
.
.
.
.
</awb>
<awb>
<awb_number>700054482</awb_number>
<orderid>5014</orderid>
.
.
.
.
.
</awb>
</ecommexpress>
AWB 番号は複数回来る可能性があります。したがって、ネストされた構造が期待されます。
私のシステムでは XSLT 1.0 のみが受け入れられます。助けてください。
よろしくお願いします。
シジ・アヌプ
------------------------
使用するコードの下
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="1.0">
<xsl:template match="ecomexpress-objects">
<ecommexpress><xsl:apply-templates/></ecommexpress>
</xsl:template>
<xsl:template match="object[@model = 'awb']">
<awb><xsl:apply-templates/></awb>
</xsl:template>
<xsl:template match="field[@name]">
<xsl:element name="{@name}"><xsl:apply-templates/></xsl:element>
</xsl:template>
</xsl:stylesheet>
https://xsltfiddle.liberty-development.net/jxDjina で変換を参照してください