XSLT kullanarak XML'yi dönüştür

UYGULANANLAR: Tüm API Management katmanları

İlke, xsl-transform istek veya yanıt gövdesinde XML'ye bir XSL dönüşümü uygular.

Not

İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<xsl-transform>
    <parameter parameter-name="...">...</parameter>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:.../>
        <xsl:.../>
    </xsl:stylesheet>
  </xsl-transform>

Öğeler

Veri Akışı Adı Açıklama Gerekli
parametre Dönüşümde kullanılan değişkenleri tanımlamak için kullanılır Hayır
xsl:stylesheet Kök stil sayfası öğesi. içinde tanımlanan tüm öğeler ve öznitelikler standart XSLT belirtimini izler. Yes

Kullanım

Kullanım notları

  • Bu ilke, ilke bölümünde yalnızca bir kez kullanılabilir.
  • Şu anda bu ilke XSLT sürüm 1.0'ı desteklemektedir.

Örnekler

Dönüştürme isteği gövdesi

<inbound>
    <base />
    <xsl-transform>
        <parameter name="User-Agent">@(context.Request.Headers.GetValueOrDefault("User-Agent","non-specified"))</parameter>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
            <xsl:output method="xml" indent="yes" />
            <xsl:param name="User-Agent" />
            <xsl:template match="* | @* | node()">
                <xsl:copy>
                    <xsl:if test="self::* and not(parent::*)">
                        <xsl:attribute name="User-Agent">
                            <xsl:value-of select="$User-Agent" />
                        </xsl:attribute>
                    </xsl:if>
                    <xsl:apply-templates select="* | @* | node()" />
                </xsl:copy>
            </xsl:template>
        </xsl:stylesheet>
      </xsl-transform>
</inbound>

Yanıt gövdesini dönüştürme

<policies>
  <inbound>
      <base />
  </inbound>
  <outbound>
      <base />
      <xsl-transform>
          <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
            <xsl:output omit-xml-declaration="yes" method="xml" indent="yes" />
            <!-- Copy all nodes directly-->
            <xsl:template match="node()| @*|*">
                <xsl:copy>
                    <xsl:apply-templates select="@* | node()|*" />
                </xsl:copy>
            </xsl:template>
          </xsl:stylesheet>
    </xsl-transform>
  </outbound>
</policies>

İlkelerle çalışma hakkında daha fazla bilgi için bkz: