3

我有一个输入 xml

<Request xmlns="http://hgkg.ghg.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

   <AppointmentInfo xmlns="">

      <AppointmentId/>

      <CountryCode>US</CountryCode>

      <Division>A</Division>
    </AppointmentInfo>
  <AppointDate xmlns="">
   <Day>Monday</Day>
    <Date>April 2</Date>
  <AppointDate>

</Request>

我需要这样的输出

<Request xmlns="http://hgkg.ghg.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

   <AppointmentInfo>

      <AppointmentId/>

      <CountryCode>US</CountryCode>

      <Division>A</Division>
    </AppointmentInfo>
    <AppointDate>
       <Day>Monday</Day>
        <Date>April 2</Date>
      <AppointDate>
</Request>

我只想删除其中的 xmlns="" 并假设响应 AppointmentInfo 和 ApppointDate 在 hgkg 命名空间中。我想转换为它..请帮助我

4

1 回答 1

3

基于JLRishe 之前的回答,你可以试试这个:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*/*">
    <xsl:element name="{name()}" namespace="{namespace-uri(/*)}">
      <xsl:apply-templates select="@* | node()"/>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

这意味着,每个不是最外层元素 ( match="*/*") 的元素都被复制到具有相同名称但具有最外层元素 ( namespace-uri(/*)) 的命名空间的输出元素。

看看有没有效果...

于 2013-04-12T20:45:04.287 回答