XSLT выберите значение, если значение в узле существует - PullRequest
0 голосов
/ 26 марта 2012

Я хотел бы знать, возможно ли выбрать значение с помощью XLST, если найдено значение в узле. У меня нет опыта работы с XSLT, но мне это нужно для процесса в Microsoft BizTalk.

Вот пример того, что я хотел бы сделать:

<STF_11_OfficeHomeAddress>
     <AD_0_StreetAddress>Street 1</AD_0_StreetAddress>
     <AD_1_OtherDesignation>AD_1_OtherDesignation_0</AD_1_OtherDesignation>
     <AD_2_City>City 1</AD_2_City>
     <AD_3_StateOrProvince>Provence 1</AD_3_StateOrProvince>
     <AD_4_ZipOrPostalCode>ZIP 1</AD_4_ZipOrPostalCode>
     <AD_5_Country>Country 1</AD_5_Country>
     <AD_6_AddressType>TYPE 1</AD_6_AddressType>
    <AD_7_OtherGeographicDesignation>OtherGeographicDesignation 1</AD_7_OtherGeographicDesignation>
</STF_11_OfficeHomeAddress>
<STF_11_OfficeHomeAddress>
    <AD_0_StreetAddress>Street 2</AD_0_StreetAddress>
    <AD_1_OtherDesignation>OtherDesignation 2</AD_1_OtherDesignation>
    <AD_2_City>City 2</AD_2_City>
    <AD_3_StateOrProvince>Province 2</AD_3_StateOrProvince>
    <AD_4_ZipOrPostalCode>Zip 2</AD_4_ZipOrPostalCode>
    <AD_5_Country>Country 2</AD_5_Country>
    <AD_6_AddressType>AddressType 2</AD_6_AddressType>
    <AD_7_OtherGeographicDesignation>OtherGeographicDesignation 2</AD_7_OtherGeographicDesignation>
</STF_11_OfficeHomeAddress>

Если значение <AD_7_OtherGeographicDesignation>OtherGeographicDesignation 2</AD_7_OtherGeographicDesignation> существует, выберите <AD_0_StreetAddress>Street 2</AD_0_StreetAddress>. Единственное, последовательность не всегда одинакова, и узел <STF_11_OfficeHomeAddress> может встречаться 11 раз в одном файле.

Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 26 марта 2012
//STF_11_OfficeHomeAddress[
  AD_7_OtherGeographicDesignation = 'OtherGeographicDesignation 2'
]/AD_0_StreetAddress

Читается как

  • любого офиса / домашнего адреса ... (//STF_11_OfficeHomeAddress)
  • ... которое имеет другое географическое обозначение с определенным значением ... ([AD_7_OtherGeographicDesignation = 'OtherGeographicDesignation 2'])
  • ... выберите адрес . (/AD_0_StreetAddress)
1 голос
/ 26 марта 2012

Сначала пройдите хотя бы основную часть страниц учебника по XSLT Джени Теннисон . Затем вы сможете сделать это самостоятельно, выполнив режим push (вместо режима pull) и используя предикат справило соответствия, такое как:

<xsl:template match="AD_0_StreetAddress[../AD_7_OtherGeographicDesignation]">
  <xsl:value-of select="."/>
...