2017-11-13 9 views
-1

ソースXMLからコピー要素をコピーし、最後のXMLを生成して最終XMLを生成する2番目のXMLから要素を置き換えます。それは動作しますが、要素がコピー要素empty()より2番目のxmlに存在しないとき。 2番目のxmlには存在しないコピー元の要素が必要です。例えばxsl 2番目のxmlでソースxmlを置き換え、2番目のxmlに存在しない手つかずの要素で

:今

<SHOP> 
    <SHOPITEM> 
    <zbozi_FEED_DATA> 
    <CATEGORYTEXT>Heureka.cz | Auto-moto | Autodíly | Ramena řízení</CATEGORYTEXT> 
    <PRODUKT_ID>80002158</PRODUKT_ID> 
    <PRODUCT>Zvedák - panenka 5t</PRODUCT> 
    <PRODUCTNAME>Zvedák - panenka 5t</PRODUCTNAME> 
    <ZBOZI_PRODUCTNO>t2</ZBOZI_PRODUCTNO> 
    <OZNACENO>0</OZNACENO> 
    </SHOPITEM> 
    <SHOPITEM> 
    <CATEGORYTEXT>VÝPRODEJ</CATEGORYTEXT> 
    <PRODUKT_ID>80002419</PRODUKT_ID> 
    <PRODUCT>3d Dochucovací sada Renga</PRODUCT> 
    <PRODUCTNAME>3d Dochucovací sada Renga</PRODUCTNAME> 
    <ZBOZI_PRODUCTNO>vv61</ZBOZI_PRODUCTNO> 
    <OZNACENO>0</OZNACENO> 
    </SHOPITEM> 
</SHOP> 

しかし、間違った出力です:

まずXMLは...

<dataroot> 
<zbozi_FEED_DATA> 
    <ZBOZI_CELA_CESTA>Heureka.cz | Auto-moto | Autodíly | Ramena řízení</ZBOZI_CELA_CESTA> 
    <PRODUKT_ID>80002158</PRODUKT_ID> 
    <ZBOZI_PRODUCT>Zvedák - panenka 5t</ZBOZI_PRODUCT> 
    <ZBOZI_PRODUCTNAME>Zvedák - panenka 5t</ZBOZI_PRODUCTNAME> 
    <ZBOZI_PRODUCTNO>t2</ZBOZI_PRODUCTNO> 
    <OZNACENO>0</OZNACENO> 
</zbozi_FEED_DATA> 
</dataroot> 

と欲望の出力XMLが含ま

<SHOP> 
<SHOPITEM> 
    <CATEGORYTEXT>some ways</CATEGORYTEXT> 
    <PRODUKT_ID>80002158</PRODUKT_ID> 
    <PRODUCT>Zvedák 5t</PRODUCT> 
    <PRODUCTNAME>Zvedák 5t</PRODUCTNAME> 
    <ZBOZI_PRODUCTNO>t2</ZBOZI_PRODUCTNO> 
    <OZNACENO>0</OZNACENO> 
</SHOPITEM> 
<SHOPITEM> 
    <CATEGORYTEXT>VÝPRODEJ</CATEGORYTEXT> 
    <PRODUKT_ID>80002419</PRODUKT_ID> 
    <PRODUCT>3d Dochucovací sada Renga</ZPRODUCT> 
    <PRODUCTNAME>3d Dochucovací sada Renga</PRODUCTNAME> 
    <ZBOZI_PRODUCTNO>vv61</ZBOZI_PRODUCTNO> 
    <OZNACENO>0</OZNACENO> 
</SHOPITEM> 
</SHOP> 

2番目のXMLが含まれてい

<SHOP> 
    <SHOPITEM> 
    <zbozi_FEED_DATA> 
    <CATEGORYTEXT>Heureka.cz | Auto-moto | Autodíly | Ramena řízení</CATEGORYTEXT> 
    <ITEM_IDD>80002158</ITEM_ID> 
    <PRODUCT>Zvedák - panenka 5t</PRODUCT> 
    <PRODUCTNAME>Zvedák - panenka 5t</PRODUCTNAME> 
    <ZBOZI_PRODUCTNO>t2</ZBOZI_PRODUCTNO> 
    <OZNACENO>0</OZNACENO> 
    </SHOPITEM> 
    <SHOPITEM> 
    **<CATEGORYTEXT/>** 
    <ITEM_ID>80002419</ITEM_ID> 
    **<PRODUCT/>** 
    **<PRODUCTNAME/>** 
    <ZBOZI_PRODUCTNO>vv61</ZBOZI_PRODUCTNO> 
    <OZNACENO>0</OZNACENO> 
    </SHOPITEM> 
</SHOP> 

そして、私のXSLの形質転換のがあります:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xhtml"> 
<xsl:output method="xml" indent="yes" encoding="utf-8" /> 
<xsl:strip-space elements="ZBOZI_CELA_CESTA" /> 
<xsl:param name="clientXml" select="'FEED_DATA.xml'" /> 
<xsl:variable name="client" select="document(`$`clientXml)//zbozi_FEED_DATA" /> 
<xsl:template match="SHOPITEM/CATEGORYTEXT"> 
    <CATEGORYTEXT> 
    <xsl:value-of select="$client[PRODUKT_ID=current()/../ITEM_ID]/ZBOZI_CELA_CESTA" /> 
    </CATEGORYTEXT> 
</xsl:template> 
<xsl:template match="SHOPITEM/PRODUCT"> 
<PRODUCT> 
<xsl:value-of select="$client[PRODUKT_ID=current()/../ITEM_ID]/ZBOZI_PRODUCT" /> 
</PRODUCT> 
</xsl:template> 
<xsl:template match="SHOPITEM/PRODUCTNAME"> 
<PRODUCTNAME> 
<xsl:value-of select="$client[PRODUKT_ID=current()/../ITEM_ID]/ZBOZI_PRODUCTNAME" /> 
</PRODUCTNAME> 
</xsl:template> 
<xsl:template match="@*|node()"> 
<xsl:copy> 
<xsl:apply-templates select="@*|node()"/> 
</xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 

、誰でも助けることができるしてください?

+1

ようこそ。特定の質問をして、何かをコーディングして、どこに失敗したかを教えてください。幅広い質問をしたり、宿題を完了するように私たちに依頼したりしないでください。 – alexisdevarennes

+0

こんにちはアレクシス、私は2ヶ月以上が私はこのxslの異なる設定を試していますが、まだ動作していないので、右そこに失敗しています。そして、まだこの要素がトランスフォーム後のXMLよりも2番目のXMLで欠けていれば、最終的なXMLでは要素が空になります。そして、空の要素は毎日チェックし、マニュアルを追加する必要があります。したがって、私はどのようにそれを行うのか分かりません。 –

答えて

0

あなたが探しているものは完全ではありませんが、あなたのノードにZBOZI_CELA_CESTAまたはCATEGORYTEXTのいずれかを取得したいと思っているようです。これは次のように実行されます。

<xsl:template match="SHOPITEM/CATEGORYTEXT"> 
    <CATEGORYTEXT> 
    <xsl:value-of select="$client[PRODUKT_ID=current()/../ITEM_ID]/ZBOZI_CELA_CESTA | $client[PRODUKT_ID=current()/../ITEM_ID]/CATEGORYTEXT"/> 
    </CATEGORYTEXT> 
</xsl:template> 
+0

こんにちはクリスチャン、ありがとうございますが、私が探しているものではありません。私の場合、ZBOZI_CELA_CESTAがない場合はCATEGORYTEXTをコピーする必要があります。ほとんどの場合、ソースフィードと第2フィードの製品は遅れて手動で作成されます。したがって、要素またはノードが見つからない場合は、ソースフィードの元の要素を使用する必要があります。最終的なフィードには空の要素はありません。 –

関連する問題