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 と AppointDate が 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 に答える