[英]Use multiple namespaces in single XML element through ABAP Simple Transformation
目前,對於我們提到命名空間前綴“etd”的所有元素,都會為它們打印鏈接(突出顯示為綠色)。 輸出 XML 文件如下所示:
我希望輸出看起來像:
而不是打印所有元素的鏈接,我希望它只打印一次 - 在標題處(在元素“JPK”中,突出顯示為綠色),就像默認命名空間一樣。
您能否向我提供您寶貴的意見以糾正問題?
請找到我通過事務代碼XSLT_TOOL
創建的簡單轉換的代碼:
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:def="http://www.sap.com/abapxml/types/defined">
<tt:root name="ROOT" type="?"/>
<tt:root name="VAT_DATA" type="ddic:ZZCVAT_DECLARATION_MAIN"/>
<tt:template>
<JPK xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03094/"
xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/">
<NAGLOWEK>
<KODFORMULARZA kodSystemowy="JPK_VAT (2)" tt:value-ref=".VAT_DATA.JPK.NAGLOWEK.KODFORMULARZA" wersjaSchemy="1-0"/>
<WARIANTFORMULARZA tt:value-ref=".VAT_DATA.JPK.NAGLOWEK.WARIANTFORMULARZA"/>
<CELZLOZENIA tt:value-ref=".VAT_DATA.JPK.NAGLOWEK.CELZLOZENIA"/>
<DATAWYTWORZENIAJPK tt:value-ref=".VAT_DATA.JPK.NAGLOWEK.DATAWYTWORZENIAJPK"/>
<DATAOD tt:value-ref=".VAT_DATA.JPK.NAGLOWEK.DATAOD"/>
<DATADO tt:value-ref=".VAT_DATA.JPK.NAGLOWEK.DATADO"/>
<DOMYSLNYKODWALUTY tt:value-ref=".VAT_DATA.JPK.NAGLOWEK.DOMYSLNYKODWALUTY"/>
<KODURZEDU tt:value-ref=".VAT_DATA.JPK.NAGLOWEK.KODURZEDU"/>
</NAGLOWEK>
<PODMIOT1>
<IDENTYFIKATORPODMIOTU>
<etd:NIP tt:value-ref=".VAT_DATA.JPK.PODMIOT1.IDENTYFIKATORPODMIOTU.NIP"/>
<etd:PELNANAZWA tt:value-ref=".VAT_DATA.JPK.PODMIOT1.IDENTYFIKATORPODMIOTU.PELNANAZWA"/>
<etd:REGON tt:value-ref=".VAT_DATA.JPK.PODMIOT1.IDENTYFIKATORPODMIOTU.REGON"/>
</IDENTYFIKATORPODMIOTU>
<ADRESPODMIOTU>
<etd:KODKRAJU tt:value-ref=".VAT_DATA.JPK.PODMIOT1.ADRESPODMIOTU.KODKRAJU"/>
<etd:WOJEWODZTWO tt:value-ref=".VAT_DATA.JPK.PODMIOT1.ADRESPODMIOTU.WOJEWODZTWO"/>
<etd:POWIAT tt:value-ref=".VAT_DATA.JPK.PODMIOT1.ADRESPODMIOTU.POWIAT"/>
<etd:GMINA tt:value-ref=".VAT_DATA.JPK.PODMIOT1.ADRESPODMIOTU.GMINA"/>
<etd:ULICA tt:value-ref=".VAT_DATA.JPK.PODMIOT1.ADRESPODMIOTU.ULICA"/>
<etd:NRDOMU tt:value-ref=".VAT_DATA.JPK.PODMIOT1.ADRESPODMIOTU.NRDOMU"/>
<etd:MIEJSCOWOSC tt:value-ref=".VAT_DATA.JPK.PODMIOT1.ADRESPODMIOTU.MIEJSCOWOSC"/>
<etd:KODPOCZTOWY tt:value-ref=".VAT_DATA.JPK.PODMIOT1.ADRESPODMIOTU.KODPOCZTOWY"/>
<etd:POCZTA tt:value-ref=".VAT_DATA.JPK.PODMIOT1.ADRESPODMIOTU.POCZTA"/>
</ADRESPODMIOTU>
</PODMIOT1>
<tt:loop ref=".VAT_DATA.JPK.SPRZEDAZWIERSZ">
<SPRZEDAZWIERSZ typ="G">
<LPSPRZEDAZY tt:value-ref="LPSPRZEDAZY"/>
<NRKONTRAHENTA tt:value-ref="NRKONTRAHENTA"/>
<NAZWAKONTRAHENTA tt:value-ref="NAZWAKONTRAHENTA"/>
<ADRESKONTRAHENTA tt:value-ref="ADRESKONTRAHENTA"/>
<DOWODSPRZEDAZY tt:value-ref="DOWODSPRZEDAZY"/>
<DATAWYSTAWIENIA tt:value-ref="DATAWYSTAWIENIA"/>
<DATASPRZEDAZY tt:value-ref="DATASPRZEDAZY"/>
<K_10 tt:value-ref="K_10"/>
<K_11 tt:value-ref="K_11"/>
<K_12 tt:value-ref="K_12"/>
<K_13 tt:value-ref="K_13"/>
<K_14 tt:value-ref="K_14"/>
<K_15 tt:value-ref="INNER_STR_31.K_15"/>
<K_16 tt:value-ref="INNER_STR_31.K_16"/>
<K_17 tt:value-ref="INNER_STR_32.K_17"/>
<K_18 tt:value-ref="INNER_STR_32.K_18"/>
<K_19 tt:value-ref="INNER_STR_33.K_19"/>
<K_20 tt:value-ref="INNER_STR_33.K_20"/>
<K_21 tt:value-ref="K_21"/>
<K_22 tt:value-ref="K_22"/>
<K_23 tt:value-ref="INNER_STR_34.K_23"/>
<K_24 tt:value-ref="INNER_STR_34.K_24"/>
<K_25 tt:value-ref="INNER_STR_35.K_25"/>
<K_26 tt:value-ref="INNER_STR_35.K_26"/>
<K_27 tt:value-ref="INNER_STR_36.K_27"/>
<K_28 tt:value-ref="INNER_STR_36.K_28"/>
<K_29 tt:value-ref="INNER_STR_37.K_29"/>
<K_30 tt:value-ref="INNER_STR_37.K_30"/>
<K_31 tt:value-ref="K_31"/>
<K_32 tt:value-ref="INNER_STR_38.K_32"/>
<K_33 tt:value-ref="INNER_STR_38.K_33"/>
<K_34 tt:value-ref="INNER_STR_39.K_34"/>
<K_35 tt:value-ref="INNER_STR_39.K_35"/>
<K_36 tt:value-ref="K_36"/>
<K_38 tt:value-ref="K_38"/>
<K_39 tt:value-ref="K_39"/>
</SPRZEDAZWIERSZ>
</tt:loop>
<SPRZEDAZCTRL>
<LICZBAWIERSZYSPRZEDAZY tt:value-ref=".VAT_DATA.JPK.SPRZEDAZCTRL.LICZBAWIERSZYSPRZEDAZY"/>
<PODATEKNALEZNY tt:value-ref=".VAT_DATA.JPK.SPRZEDAZCTRL.PODATEKNALEZNY"/>
</SPRZEDAZCTRL>
<tt:loop ref=".VAT_DATA.JPK.ZAKUPWIERSZ">
<ZAKUPWIERSZ typ="G">
<LPZAKUPU tt:value-ref="LPZAKUPU"/>
<NRDOSTAWCY tt:value-ref="NRDOSTAWCY"/>
<NAZWADOSTAWCY tt:value-ref="NAZWADOSTAWCY"/>
<ADRESDOSTAWCY tt:value-ref="ADRESDOSTAWCY"/>
<DOWODZAKUPU tt:value-ref="DOWODZAKUPU"/>
<DATAZAKUPU tt:value-ref="DATAZAKUPU"/>
<DATAWPLYWU tt:value-ref="DATAWPLYWU"/>
<K_43 tt:value-ref="INNER_STR_51.K_43"/>
<K_44 tt:value-ref="INNER_STR_51.K_44"/>
<K_45 tt:value-ref="INNER_STR_52.K_45"/>
<K_46 tt:value-ref="INNER_STR_52.K_46"/>
<K_47 tt:value-ref="K_47"/>
<K_48 tt:value-ref="K_48"/>
<K_49 tt:value-ref="K_49"/>
<K_50 tt:value-ref="K_50"/>
</ZAKUPWIERSZ>
</tt:loop>
<ZAKUPCTRL>
<LICZBAWIERSZYZAKUPOW tt:value-ref=".VAT_DATA.JPK.ZAKUPCTRL.LICZBAWIERSZYZAKUPOW"/>
<PODATEKNALICZONY tt:value-ref=".VAT_DATA.JPK.ZAKUPCTRL.PODATEKNALICZONY"/>
</ZAKUPCTRL>
</JPK>
</tt:template>
</tt:transform>
如果您希望命名空間聲明出現在根元素而不是重復的子元素上,只需確保根元素(在創建它時)在范圍內具有該命名空間。
如果您使用文字結果元素創建元素,只需向 LRE 添加一個命名空間聲明,它就會被復制到輸出中。
如果您使用 xsl:element 創建元素(並且如果您不能切換到使用 LRE),那么它會有點棘手。 在 XSLT 2.0 中,您可以使用 xsl:namespace 來完成。
如需更多建議,我們確實需要查看您的代碼。
根據文檔,您可以通過在 JPK 標簽后添加<tt:namespace name="etd" />
來實現這一點。
標准行為是為每個標簽添加命名空間,從鏈接頁面引用:
命名空間聲明完全寫入需要它的元素中。
用一個虛擬示例試了一下:
簡單的轉換代碼:
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:def="http://www.sap.com/abapxml/types/defined">
<tt:root line-type="ddic:ANLA" name="ROOT"/>
<tt:template>
<ROOT xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03094/" xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/">
<tt:namespace name="etd" />
<tt:loop ref=".ROOT">
<ANLA>
<etd:BUKRS tt:value-ref="BUKRS"/>
<ANLN1 tt:value-ref="ANLN1"/>
<ANLN2 tt:value-ref="ANLN2"/>
</ANLA>
</tt:loop>
</ROOT>
</tt:template>
</tt:transform>
XML 結果:
<?xml version="1.0" encoding="UTF-8"?>
-<ROOT xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/" xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03094/">
-<ANLA>
<etd:BUKRS>1000</etd:BUKRS>
<ANLN1>131234246</ANLN1>
<ANLN2>0000</ANLN2>
</ANLA>
</ROOT>
否則(如果您不使用提到的標簽)結果是:
<?xml version="1.0" encoding="UTF-8"?>
-<ROOT xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03094/">
-<ANLA>
<etd:BUKRS xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/">1000</etd:BUKRS>
<ANLN1>131234245</ANLN1>
<ANLN2>0000</ANLN2>
</ANLA>
</ROOT>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.