0

xslt 2.0 を使用しています。値の選択を使用しており、要素が重複しているため、連結された文字列が返されます。previous-sibling と generate-id を試しましたが、どちらも文字列の 2 番目の部分を削除しませんでした。どうすればこれを達成できますか?

出力

2 11 Kenneth Street 3755 Peachtree Road NE (削除される 2 番目の要素の太字部分)

    <xsl:value-of select="wd:Personal_Data/wd:Contact_Data/wd:Address_Data/wd:Address_Line_Data[@wd:Type='ADDRESS_LINE_1']"/>

xml

    <wd:Contact_Data>
                    <wd:Address_Data wd:Effective_Date="2000-01-01-08:00" wd:Address_Format_Type="Extended" wd:Formatted_Address="Av Cmte Júlio Moura, 900&amp;#xa;Barra de Tijuca&amp;#xa;Rio de Janeiro- RJ&amp;#xa;22621-252&amp;#xa;Brazil" wd:Defaulted_Business_Site_Address="0">
                       <wd:Country_Reference wd:Descriptor="Brazil">
                          <wd:ID wd:type="WID">1a29bb1357b240ab99a2fa755cc87c0e</wd:ID>
                          <wd:ID wd:type="ISO_3166-1_Alpha-2_Code">BR</wd:ID>
                          <wd:ID wd:type="ISO_3166-1_Alpha-3_Code">BRA</wd:ID>
                          <wd:ID wd:type="ISO_3166-1_Numeric-3_Code">76</wd:ID>
                       </wd:Country_Reference>
                       <wd:Last_Modified>2009-06-06T20:07:49.246-07:00</wd:Last_Modified>
                       <wd:Address_Line_Data wd:Type="ADDRESS_LINE_1" wd:Descriptor="Street Name">Av Cmte Júlio Moura</wd:Address_Line_Data>
                       <wd:Address_Line_Data wd:Type="ADDRESS_LINE_3" wd:Descriptor="House Number">900</wd:Address_Line_Data>
                       <wd:Municipality>Rio de Janeiro</wd:Municipality>
                       <wd:Submunicipality_Data>Barra de Tijuca</wd:Submunicipality_Data>
                       <wd:Country_Region_Reference wd:Descriptor="Rio de Janeiro">
                          <wd:ID wd:type="WID">e88c3d7cdb2b4a8b8120ede0b16e2186</wd:ID>
                          <wd:ID wd:type="Country_Region_ID">BRA-RJ</wd:ID>
                       </wd:Country_Region_Reference>
                       <wd:Postal_Code>22621-252</wd:Postal_Code>
                       <wd:Usage_Data wd:Public="0">
                          <wd:Type_Data wd:Primary="1">
                             <wd:Type_Reference wd:Descriptor="Home">
                                <wd:ID wd:type="WID">836cf00ef5974ac08b786079866c946f</wd:ID>
                                <wd:ID wd:type="Communication_Usage_Type_ID">HOME</wd:ID>
                             </wd:Type_Reference>
                          </wd:Type_Data>
                          <wd:Use_For_Reference wd:Descriptor="Street Address">
                             <wd:ID wd:type="WID">f785430145674364a613cd56086942c4</wd:ID>
                             <wd:ID wd:type="Communication_Usage_Behavior_ID">STREET</wd:ID>
                          </wd:Use_For_Reference>
                          <wd:Use_For_Reference wd:Descriptor="Mailing">
                             <wd:ID wd:type="WID">9385649a0c4b4ddea7fb0d823c2f1bcd</wd:ID>
                             <wd:ID wd:type="Communication_Usage_Behavior_ID">MAILING</wd:ID>
                          </wd:Use_For_Reference>
                       </wd:Usage_Data>
                    </wd:Address_Data>
                    <wd:Address_Data wd:Effective_Date="2000-01-01-08:00" wd:Address_Format_Type="Basic" wd:Formatted_Address="3755 Peachtree Road NE&amp;#xa;Atlanta, GA 30305&amp;#xa;United States of America" wd:Defaulted_Business_Site_Address="1">
                       <wd:Country_Reference wd:Descriptor="United States of America">
                          <wd:ID wd:type="WID">bc33aa3152ec42d4995f4791a106ed09</wd:ID>
                          <wd:ID wd:type="ISO_3166-1_Alpha-2_Code">US</wd:ID>
                          <wd:ID wd:type="ISO_3166-1_Alpha-3_Code">USA</wd:ID>
                          <wd:ID wd:type="ISO_3166-1_Numeric-3_Code">840</wd:ID>
                       </wd:Country_Reference>
                       <wd:Last_Modified>2011-06-20T13:54:02.466-07:00</wd:Last_Modified>
                       <wd:Address_Line_Data wd:Type="ADDRESS_LINE_1" wd:Descriptor="Address Line 1">3755 Peachtree Road NE</wd:Address_Line_Data>
4

1 に答える 1

0

最初に選択した要素のみを出力したい場合は、 を使用します<xsl:value-of select="(wd:Personal_Data/wd:Contact_Data/wd:Address_Data/wd:Address_Line_Data[@wd:Type='ADDRESS_LINE_1'])[1]"/>

または、あなたが示した入力に基づいて、私<xsl:value-of select="wd:Personal_Data/wd:Contact_Data/wd:Address_Data[1]/wd:Address_Line_Data[@wd:Type='ADDRESS_LINE_1']"/>もうまくいくと思います。

version="1.0"また、スタイルシートで XSLT 2.0 プロセッサを使用して を使用して、XSLT 1.0 を 2.0 に移行しているが、現在は XSLT 1.0 の下位互換処理が必要であることを示すことができることにも注意してください (最初に選択したノードのみを で出力するなどxsl:value-of)。そうすれば、コードを徐々に適応させることができます。

于 2013-03-26T13:41:53.597 に答える