Как удалить пространство имен Soap, связанное с атрибутом - PullRequest
0 голосов
/ 07 февраля 2019

Я должен удалить пространство имен мыла, связанное с ConfigR (атрибут).

Внутри XSLT Я использую XSL Copy и, следовательно, исключить префикс не работает.

Я пробовал ниже, но не работает. Пожалуйста, кто-нибудь может предложить.

     <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >
     <xsl:output indent="yes"/>
     <xsl:template match="@* | node()">
    <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
     </xsl:template>
      <xsl:template match="soapenv:*">
   <xsl:apply-templates select="@* | node()"/>
       </xsl:template>
       </xsl:stylesheet>

Ввод -

              <soapenv:Envelope 
           xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soapenv:Body>
      <ConfigR>
        Inside I have some more input.
      </ConfigR>
        </soapenv:Body>
         </soapenv:Envelope>   




     Now in Output I am getting:
         <ConfigR xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 

1 Ответ

0 голосов
/ 07 февраля 2019

Вы можете заменить существующий шаблон:

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

следующим:

<xsl:template match="*">
    <xsl:element name="{local-name(.)}">
        <xsl:apply-templates select="@* | node()" />
    </xsl:element>
</xsl:template>
<xsl:template match="@*">
    <xsl:attribute name="{local-name(.)}">
        <xsl:value-of select="." />
    </xsl:attribute>
</xsl:template>

Вы можете найти его здесь

...