Извлечение и обновление XML с использованием XSLT - PullRequest
0 голосов
/ 17 мая 2018

У меня есть такой XML, где я хочу заменить один из элементов, проверив его значение в нижней части xml.

<?xml version="1.0"?>
<Company>
  <Employee>
      <FirstName>Tanmay</FirstName>
      <LastName>Patil</LastName>
      <ContactNo>1234567890</ContactNo>
      <Email>tanmaypatil@xyz.com</Email>
      <AddressRef>0123321</AddressRef>

      <AllAddressRef>
        <AddressRef>
          <UniqueID>0123321</UniqueID>
          <Streetno>6</Streetno>
          <Street>Athol Park</Street>
          <State>WA</Street>
          <Country>AU</Street>
        </AddressRef>
      </AllAddressRef>
  </Employee>

</Company>

Как заменить <AddressRef>, связанный с его уникальным идентификатором в <AllAddressRef>

<Address>

<Streetno>6</Streetno>
  <Street>Athol Park</Street>
  <State>WA</Street>
  <Country>AU</Street>

 </Address>

Я использую XSLT 1.0.

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете использовать // для поиска по всему документу и использовать предикаты [] для выбора только элементов, соответствующих определенному условию.

Пример:

<xsl:template match="AddressRef">
  <xsl:variable name="address" select="//AllAddressRef/AddressRef[UniqueID = current()]" />
  <Address>
    <xsl:copy-of select="$address/*[not(self::UniqueID)]" />
  </Address>
</xsl:template>
...