2017-05-30 4 views
0

xsltを使用して、インポートファイルで受け取ったすべてのアドレスを出力ファイルに引き渡そうとしています。 私はxsltのアドレスタグの間に挿入したコードで最初のアドレスセットを引き抜くことができます。 ' 最初のセットに使用されたものと同じコードを使用すると、タグ名が複製されているためです。代わりに、最初のアドレスセットを再度取得します。タグの名前が同じでも、xsltを使用してアドレスを自分の出力にプルするにはどうすればよいですか?

xsltを使用してすべてのアドレスを取得して、出力にアドレスを入力できるように助けてください。

タグ名が同じであるため、出品者の住所には売り手の住所が入力されています。私はxsltの買い手アドレスを参照して出力に買い手の下に引っ張り出すが、売り手アドレスだけが引っ張る。申し訳ありませんが再現可能な例はありません。売り手アドレスはこのコード行を使って正しく引っ張ります私はそれが動作しません買い手のためのコードのこの同じラインを使用し、ちょうどバイヤーのアドレスに売り手アドレスを引っ張る


*****これは、インポートファイルのXML *****がある

<?xml version="1.0" encoding="ISO-8859-1"?> 
<UniversalInterchange xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org"> 

<Body> 
<OrgAddressGroup> 
      <OrgAddress> 
      <AddressType>Seller</AddressType> 
      <Address1>16 Far Away Place</Address1> 
      <Address2>17 Very Far Away Place</Address2> 
      <CompanyName>Test 123</CompanyName> 
      <City>Durban</City> 
      </OrgAddress> 

     <OrgAddress> 
      <AddressType>Buyer</AddressType> 
      <Address1>66 For Far Place</Address1> 
      <Address2>77 Not So Far Place</Address2> 
      <CompanyName>Test</CompanyName> 
      <Fax>+31(0)123456789</Fax> 
      <OrganizationCode>AAAbbbCCC</OrganizationCode> 
      <Phone>+31(0)12345678</Phone> 
      </OrgAddress> 

      <OrgAddress> 
      <AddressType>Sending</AddressType> 
      <Address1>123 Blue Rock Place</Address1> 
      <Address2>77 Highway Drive</Address2> 
      <CompanyName>Test</CompanyName> 
      <Fax>123456789</Fax> 
      <OrganizationCode>AABBCC</OrganizationCode> 
      <Phone>123456789</Phone> 
      </OrgAddress> 

    </OrgAddressGroup> 



</Body> 
    </UniversalInterchange> 

*************これは私のXSLTです*************

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:param name="vDate" select="xyz"/> 
    <!-- This line of code and the in the orderDate tage is used to populate the date.These two line work together--> 

    <xsl:template match ="/"> 
    <UniversalInterchange> 
<Body> 

    <OrgAddressGroup> 

     <xsl:for-each select="UniversalInterchange/Body/OrgAddressGroup"> 
     <OrgAddress> 
      <AddressType>Seller</AddressType> 
      <Address1> 
      <xsl:value-of select="OrgAddress/Address1"/> 
      <!-- <xsl:value-of select="UniversalInterchange/Body/OrgAddressGroup/OrgAddress/Address1"/>--> 
      </Address1> 
      <Address2> 
      <xsl:value-of select="OrgAddress/Address2"/> 
      </Address2> 
      <CompanyName></CompanyName> 
      <City></City> 
     </OrgAddress> 

     <OrgAddress> 
      <AddressType>Buyer</AddressType> 
      <Address1> 
      <xsl:value-of select="OrgAddress/Address1"/> 
      </Address1> 
      <Address2> 
      <xsl:value-of select="OrgAddress/Address2"/> 
      </Address2> 
      <CompanyName></CompanyName> 
      <Fax></Fax> 
      <OrganizationCode></OrganizationCode> 
      <Phone></Phone> 
     </OrgAddress> 

     <OrgAddress> 
      <AddressType>Sending</AddressType> 
      <Address1></Address1> 
      <Address2></Address2> 
      <CompanyName></CompanyName> 
      <Fax></Fax> 
      <OrganizationCode></OrganizationCode> 
      <Phone></Phone> 
     </OrgAddress> 
     </xsl:for-each> 

     </OrgAddressGroup> 



</Body> 
    </UniversalInterchange> 
    </xsl:template> 
</xsl:stylesheet> 

********* **電流出力***********

<UniversalInterchange> 
    <Body> 
     <OrgAddressGroup> 
     <OrgAddress> 
      <AddressType>Seller</AddressType> 
      <Address1>16 Far Away Place</Address1> 
      <Address2>17 Very Far Away Place</Address2> 
      <CompanyName/> 
      <City/> 
     </OrgAddress> 
     <OrgAddress> 
      <AddressType>Buyer</AddressType> 
      <Address1>16 Far Away Place</Address1> 
      <Address2>17 Very Far Away Place</Address2> 
      <CompanyName/> 
      <Fax/> 
      <OrganizationCode/> 
      <Phone/> 
     </OrgAddress> 
     <OrgAddress> 
      <AddressType>Sending</AddressType> 
      <Address1/> 
      <Address2/> 
      <CompanyName/> 
      <Fax/> 
      <OrganizationCode/> 
      <Phone/> 
     </OrgAddress> 
     </OrgAddressGroup> 
    </Body> 
</UniversalInterchange> 

********必要な出力*********

 <UniversalInterchange> 
    <Body> 
     <OrgAddressGroup> 
     <OrgAddress> 
      <AddressType>Seller</AddressType> 
      <Address1>16 Far Away Place</Address1> 
      <Address2>17 Very Far Away Place</Address2> 
      <CompanyName/> 
      <City/> 
     </OrgAddress> 
     <OrgAddress> 
      <AddressType>Buyer</AddressType> 
      <Address1>66 For Far Place</Address1> 
      <Address2>77 Not So Far Place</Address2> 
      <CompanyName/> 
      <Fax/> 
      <OrganizationCode/> 
      <Phone/> 
     </OrgAddress> 
     <OrgAddress> 
      <AddressType>Sending</AddressType> 
      <Address1/>123 Blue Rock Place</Address1> 
      <Address2/>77 Highway Drive</Address2> 
      <CompanyName/> 
      <Fax/> 
      <OrganizationCode/> 
      <Phone/> 
     </OrgAddress> 
     </OrgAddressGroup> 
    </Body> 
</UniversalInterchange> 
+0

あなたのXMLは不完全であり、XSLTは(XSLT)ではなく、出力にはXSLTコードが含まれています。 –

答えて

0

XSLT 1.0。 (あなたが使用していると思われます)、xsl:value-ofは、選択したノードセットの最初のノードの値を返します。

すべてのOrgAddress要素を処理する場合は、の代わりにxsl:for-each命令をOrgAddressにしてください。

+0

フィードバックをいただきありがとうございます。私はあなたがループで提案したことを試してみましたが、それはwork.Anyの他のアイデアは高く評価されるようには思われません。 – Zack

+0

あなたの質問を編集し、**再現可能な**例を投稿してください - [mcve]をご覧ください。 –

+0

タグ名が同じであるため、出品者の住所に売り手の住所が入力されています。 – Zack

関連する問題