Может кто-нибудь, пожалуйста, помогите мне получить логику XSLT здесь. Я объяснил это требование как комментарии в output.please, чтобы найти ниже - вывод и ввод.нужна помощь по логике XSLT
вход:
<OutputParameters>
<OUT_SHIPMENT_TBL>
<OUT_SHIPMENT_TBL_ITEM>
<SLevel1>1</SLevel1>
<SLevel1>S</SLevel1>
<DELIVERY_ID>2334356776</DELIVERY_ID>
<ORDER_SHIP_CODE_EXT>3467</ORDER_SHIP_CODE_EXT>
<CUSTOMER_NUMBER>4838</CUSTOMER_NUMBER>
<OEH_POSTAL_CODE xsi:nil="true"/>
<OEH_COUNTRY xsi:nil="true"/>
<ORDER_TBL_TYPE>
<ORDER_TBL_TYPE_ITEM>
<OLevel1>2333</OLevel1>
<OLevel2>344</OLevel2>
<OLevel3>O</OLevel3>
<PURCHASE_ORDER_NUMBER>95678</PURCHASE_ORDER_NUMBER>
<TOTAL_ORDER_GROSSWEIGHT>345</TOTAL_ORDER_GROSSWEIGHT>
<TOTAL_ORDER_SHIPQTY>32</TOTAL_ORDER_SHIPQTY>
<ORDER_LINES_TBL_TYPE>
<ORDER_LINES_TBL_TYPE_ITEM>
<!-- unbounded -->
<ILevel1>2333</ILevel1>
<ILevel2>2333</ILevel2>
<ILevel3>2333</ILevel3>
<PALLET_NUMBER>4546</PALLET_NUMBER>
<CARTON_NUMBER>344235</CARTON_NUMBER>
<WEB_TRANSACTION_ID>346788</WEB_TRANSACTION_ID>
<FREIGHT_TERMS_CODE_INT>243546</FREIGHT_TERMS_CODE_INT>
<VENDOR_NUM>344677</VENDOR_NUM>
<ITEM>50116</ITEM>
<CROSS_REFERENCE_UPC>034138102008</CROSS_REFERENCE_UPC>
</ORDER_LINES_TBL_TYPE_ITEM>
<ORDER_LINES_TBL_TYPE_ITEM>
<ILevel1>2333</ILevel1>
<ILevel2>2333</ILevel2>
<ILevel3>2333</ILevel3>
<PALLET_NUMBER>4546</PALLET_NUMBER>
<CARTON_NUMBER>344235</CARTON_NUMBER>
<WEB_TRANSACTION_ID>346788</WEB_TRANSACTION_ID>
<FREIGHT_TERMS_CODE_INT>243546</FREIGHT_TERMS_CODE_INT>
<VENDOR_NUM>344677</VENDOR_NUM>
<ITEM>50116</ITEM>
<CROSS_REFERENCE_UPC>034138102008</CROSS_REFERENCE_UPC>
</ORDER_LINES_TBL_TYPE_ITEM>
</ORDER_LINES_TBL_TYPE>
</ORDER_TBL_TYPE_ITEM>
<!-- 2 nd Order -->
</ORDER_TBL_TYPE>
</OUT_SHIPMENT_TBL_ITEM>
</OUT_SHIPMENT_TBL>
</OutputParameters>
1) Существует кратно <ORDER_TBL_TYPE_ITEM>
.
2) Внутри <ORDER_TBL_TYPE_ITEM>
несколько <ORDER_LINES_TBL_TYPE_ITEM>
присутствуют.
3) для каждой итерации нам нужна последовательность чисел, присвоенная приведенным ниже элементам, и условие также существует, если предыдущий = текущий игнорировать уровень1,2,3 элементов и непосредственно передать значение ITEM.
выход:
<OutputParameters>
<OUT_SHIPMENT_TBL>
<OUT_SHIPMENT_TBL_ITEM>
<SLevel1>1</SLevel1>
<SLevel1>S</SLevel1>
<DELIVERY_ID>3335</DELIVERY_ID>
<ORDER_SHIP_CODE_EXT>445</ORDER_SHIP_CODE_EXT>
<CUSTOMER_NUMBER>4838</CUSTOMER_NUMBER>
<OEH_POSTAL_CODE xsi:nil="true"/>
<OEH_COUNTRY xsi:nil="true"/>
<ORDER_TBL_TYPE>
<ORDER_TBL_TYPE_ITEM>
<!-- unbounded -->
<OLevel1>2</OLevel1>
<OLevel2>1</OLevel2>
<OLevel3>O</OLevel3>
<PURCHASE_ORDER_NUMBER>44342</PURCHASE_ORDER_NUMBER>
<!-- assign sequnce number starts from 2 -->
<DELIVERY_ID>133232</DELIVERY_ID>
<!-- hard code value as 1 -->
<TOTAL_ORDER_GROSSWEIGHT>42323C</TOTAL_ORDER_GROSSWEIGHT>
<!-- hard code value as C -->
<TOTAL_ORDER_SHIPQTY>32</TOTAL_ORDER_SHIPQTY>
<ORDER_LINES_TBL_TYPE>
<!-- unbounded -->
<!-- The UniqueID is the temporary variable.PALLET_NUMBER is coming from input.
if PALLET_NUMBER!=NULL then
UniqueID=substring (PALLET_NUMBER, 10)
if PALLET_NUMBER =NULL then
UniqueID=substring (CARTON_NUMBER, 7) -->
<!-- Condition here If previous UniqueID != current UniqueID and PALLET_NUMBER!=NULL then-->IF TRUE
<ORDER_LINES_TBL_TYPE_ITEM>
<ILevel1>3</ILevel1>
<!-- assign sequnce number starts from 3 -->
<ILevel2>2</ILevel2>
<!-- assign sequnce number of <Olevel1> -->
<ILevel3>T</ILevel3>
<!-- hard code value as T-->
<PALLET_NUMBER>45463456788899432445</PALLET_NUMBER>
<CARTON_NUMBER>344235</CARTON_NUMBER>
<WEB_TRANSACTION_ID>3y4</WEB_TRANSACTION_ID>
<FREIGHT_TERMS_CODE_INT>442</FREIGHT_TERMS_CODE_INT>
<VENDOR_NUM>C4466I</VENDOR_NUM>
<ITEM>50116</ITEM>
<CROSS_REFERENCE_UPC>034138102008</CROSS_REFERENCE_UPC>
</ORDER_LINES_TBL_TYPE_ITEM>
<!-- Condition here If previous UniqueID != current UniqueID and PALLET_NUMBER =NULL then-->iF TRUE
<ORDER_LINES_TBL_TYPE_ITEM>
<ILevel1>4</ILevel1>
<!-- assign sequnce number increment -->
<ILevel2>2</ILevel2>
<!-- assign sequnce number of <Olevel1> -->
<ILevel3>P</ILevel3>
<!-- hard code value as T-->
<PALLET_NUMBER></PALLET_NUMBER>
<CARTON_NUMBER>344235</CARTON_NUMBER>
<WEB_TRANSACTION_ID>3y4</WEB_TRANSACTION_ID>
<FREIGHT_TERMS_CODE_INT>442</FREIGHT_TERMS_CODE_INT>
<VENDOR_NUM>C4466I</VENDOR_NUM>
<ITEM>50116</ITEM>
<CROSS_REFERENCE_UPC>034138102008</CROSS_REFERENCE_UPC>
</ORDER_LINES_TBL_TYPE_ITEM>
<ORDER_LINES_TBL_TYPE_ITEM>
<ILevel1>5</ILevel1>
<!-- assign sequnce number increment -->
<ILevel2>4</ILevel2>
<!-- if T Level is true then <ILevel2> of T level
if P Level is true then <ILevel2> of P level
-->
<ILevel3>I</ILevel3>
<!-- hard code value as I-->
<PALLET_NUMBER></PALLET_NUMBER>
<CARTON_NUMBER>344235</CARTON_NUMBER>
<WEB_TRANSACTION_ID>3y4</WEB_TRANSACTION_ID>
<FREIGHT_TERMS_CODE_INT>442</FREIGHT_TERMS_CODE_INT>
<VENDOR_NUM>C4466I</VENDOR_NUM>
<ITEM>50116</ITEM>
<CROSS_REFERENCE_UPC>034138102008</CROSS_REFERENCE_UPC>
</ORDER_LINES_TBL_TYPE_ITEM>
<!-- Condition here If previous UniqueID != current UniqueID and PALLET_NUMBER!=NULL then-->IF FALSE
< NO LOOP HERE FOR T LEVEL>
<!-- Condition here If previous UniqueID != current UniqueID and PALLET_NUMBER =NULL then-->iF TRUE
<ORDER_LINES_TBL_TYPE_ITEM>
<ILevel1>6</ILevel1>
<ILevel2>2</ILevel2>
<ILevel3>P</ILevel3>
<WEB_TRANSACTION_ID>685858</WEB_TRANSACTION_ID>
<FREIGHT_TERMS_CODE_INT>87899</FREIGHT_TERMS_CODE_INT>
<VENDOR_NUM>457482</VENDOR_NUM>
<ITEM>50119</ITEM>
<CROSS_REFERENCE_UPC>034138102008</CROSS_REFERENCE_UPC>
</ORDER_LINES_TBL_TYPE_ITEM>
<ORDER_LINES_TBL_TYPE_ITEM>
<ILevel1>7</ILevel1>
<ILevel2>6</ILevel2>
<ILevel3>I</ILevel3>
<WEB_TRANSACTION_ID>685858</WEB_TRANSACTION_ID>
<FREIGHT_TERMS_CODE_INT>87899</FREIGHT_TERMS_CODE_INT>
<VENDOR_NUM>457482</VENDOR_NUM>
<ITEM>50119</ITEM>
<CROSS_REFERENCE_UPC>034138102008</CROSS_REFERENCE_UPC>
</ORDER_LINES_TBL_TYPE_ITEM>
</ORDER_LINES_TBL_TYPE>
</ORDER_TBL_TYPE_ITEM>
<!-- 2 nd Order -->
</ORDER_TBL_TYPE>
</OUT_SHIPMENT_TBL_ITEM>
</OUT_SHIPMENT_TB
L>
Требование # 3 трудно понять. Кроме того, вы попросили о помощи по логике. Вы просите кого-нибудь написать код для вас? Что XSLT вы пробовали, и каков был результат? – LarsH
Благодарим вас за то, что вы полностью выяснили вопрос на этот раз. Не могли бы вы рассказать нам, какой XSLT-процессор вы используете? – JLRishe