使用XSLT提取和更新XML

使用XSLT提取和更新XML,xml,xslt,xslt-1.0,Xml,Xslt,Xslt 1.0,我有一个这样的XML,我想通过检查XML底部的值来替换其中一个元素 <?xml version="1.0"?> <Company> <Employee> <FirstName>Tanmay</FirstName> <LastName>Patil</LastName> <ContactNo>1234567890</ContactNo> &l

我有一个这样的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>

坦美
帕蒂尔
1234567890
tanmaypatil@xyz.com
0123321
0123321
6
阿索尔公园
华盛顿州
金
如何替换与
中的唯一标识符关联的


6
阿索尔公园
华盛顿州
金

我正在使用XSLT1.0

您可以使用//搜索整个文档和谓词[],只选择符合某些条件的元素

例如:

<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>

<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>