Omvandlingsprinciper för API Management

Det här avsnittet innehåller en referens för följande API Management principer. Information om hur du lägger till och konfigurerar principer finns i Principer i API Management.

Transformeringsprinciper

Konvertera JSON till XML

Principen json-to-xml konverterar en begäran eller svarstext från JSON till XML.

Principutdrag

<json-to-xml apply="always | content-type-json" consider-accept-header="true | false" parse-date="true | false"/>

Exempel

<policies>
    <inbound>
        <base />
    </inbound>
    <outbound>
        <base />
        <json-to-xml apply="always" consider-accept-header="false" parse-date="false"/>
    </outbound>
</policies>

Element

Namn Beskrivning Krävs
json-to-xml Rotelementet. Yes

Attribut

Name Beskrivning Krävs Standardvärde
apply Attributet måste anges till något av följande värden.

- alltid – tillämpa alltid konvertering.
– content-type-json – konvertera endast om svaret Content-Type-huvud indikerar förekomst av JSON.
Yes Ej tillämpligt
consider-accept-header Attributet måste anges till något av följande värden.

- true – tillämpa konvertering om XML begärs i begärans accept-huvud.
- false – tillämpa alltid konvertering.
No true
parse-date När det är false inställt på datumvärden kopieras de helt enkelt under omvandlingen No true

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande, utgående, vid fel

  • Principomfång: alla omfång

Konvertera XML till JSON

Principen xml-to-json konverterar en begäran eller svarstext från XML till JSON. Den här principen kan användas för att modernisera API:er baserat på XML-baserade backend-webbtjänster.

Principutdrag

<xml-to-json kind="javascript-friendly | direct" apply="always | content-type-xml" consider-accept-header="true | false"/>

Exempel

<policies>
    <inbound>
        <base />
    </inbound>
    <outbound>
        <base />
        <xml-to-json kind="direct" apply="always" consider-accept-header="false" />
    </outbound>
</policies>

Element

Namn Beskrivning Krävs
xml-to-json Rotelementet. Yes

Attribut

Name Beskrivning Krävs Standardvärde
Typ Attributet måste anges till något av följande värden.

– javascript-vänligt – den konverterade JSON-filen har ett formulär som är användarvänligt för JavaScript-utvecklare.
– direkt – den konverterade JSON-filen återspeglar det ursprungliga XML-dokumentets struktur.
Yes Ej tillämpligt
apply Attributet måste anges till något av följande värden.

– alltid – konvertera alltid.
– content-type-xml – konvertera endast om svaret Content-Type-rubrik indikerar förekomst av XML.
Yes Ej tillämpligt
consider-accept-header Attributet måste anges till något av följande värden.

– sant – tillämpa konvertering om JSON begärs i begärans accept-huvud.
- false – tillämpa alltid konvertering.
No true

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande, utgående, vid fel

  • Principomfång: alla omfång

Hitta och ersätta sträng i brödtext

Principen find-and-replace hittar en understräng för begäran eller svar och ersätter den med en annan delsträng.

Principutdrag

<find-and-replace from="what to replace" to="replacement" />

Exempel

<find-and-replace from="notebook" to="laptop" />

Element

Namn Beskrivning Krävs
find-and-replace Rotelementet. Yes

Attribut

Name Beskrivning Krävs Standardvärde
Från Strängen att söka efter. Yes Ej tillämpligt
Ersättningssträngen. Ange en ersättningssträng utan längd för att ta bort söksträngen. Yes Ej tillämpligt

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande, utgående, backend, vid fel

  • Principomfång: alla omfång

Maskera URL:er i innehåll

Principen redirect-content-urls skriver om (maskerar) länkar i svarstexten så att de pekar på motsvarande länk via gatewayen. Använd i avsnittet utgående för att skriva om svarstextlänkar så att de pekar på gatewayen. Använd i avsnittet inkommande för en motsatt effekt.

Anteckning

Den här principen ändrar inte några huvudvärden, till Location exempel rubriker. Om du vill ändra rubrikvärden använder du principen set-header.

Principutdrag

<redirect-content-urls />

Exempel

<redirect-content-urls />

Element

Namn Beskrivning Krävs
redirect-content-urls Rotelementet. Yes

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande, utgående

  • Principomfång: alla omfång

Ange backend-tjänst

Använd principen set-backend-service för att omdirigera en inkommande begäran till en annan server än den som anges i API-inställningarna för åtgärden. Den här principen ändrar serverdelstjänstens bas-URL för den inkommande begäran till den som anges i principen.

Principutdrag

<set-backend-service base-url="base URL of the backend service" />

eller

<set-backend-service backend-id="identifier of the backend entity specifying base URL of the backend service" />

Anteckning

Backend-entiteter kan hanteras via Azure Portal, hanterings-APIoch PowerShell.

Exempel

<policies>
    <inbound>
        <choose>
            <when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2013-05")">
                <set-backend-service base-url="http://contoso.com/api/8.2/" />
            </when>
            <when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2014-03")">
                <set-backend-service base-url="http://contoso.com/api/9.1/" />
            </when>
        </choose>
        <base />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

I det här exemplet dirigerar den angivna principen för backend-tjänsten begäranden baserat på versionsvärdet som skickas i frågesträngen till en annan backend-tjänst än den som anges i API:et.

Ursprungligen härleds bas-URL:en för backend-tjänsten från API-inställningarna. Så url:en https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef för begäran blir där är den url för http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdef http://contoso.com/api/10.4/ backend-tjänsten som anges i API-inställningarna.

När <> väljer principsatsen tillämpas kan den grundläggande URL:en för backend-tjänsten ändras antingen till eller , beroende på värdet för frågeparametern för http://contoso.com/api/8.2 http://contoso.com/api/9.1 versionsbegäran. Om värdet till exempel är den slutliga "2013-15" begärande-URL:en blir http://contoso.com/api/8.2/partners/15?version=2013-05&subscription-key=abcdef .

Om ytterligare omvandling av begäran önskas kan andra transformeringsprinciper användas. Om du till exempel vill ta bort frågeparametern för versionen nu när begäran dirigeras till en versionsspecifik backend kan du använda principen Ange frågesträngsparameter för att ta bort attributet för den nu redundanta versionen.

Exempel

<policies>
    <inbound>
        <set-backend-service backend-id="my-sf-service" sf-partition-key="@(context.Request.Url.Query.GetValueOrDefault("userId","")" sf-replica-type="primary" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

I det här exemplet dirigerar principen begäran till en Service Fabric-backend med hjälp av userId-frågesträngen som partitionsnyckel och använder den primära repliken av partitionen.

Element

Namn Beskrivning Krävs
set-backend-service Rotelementet. Yes

Attribut

Name Beskrivning Krävs Standardvärde
base-url Ny bas-URL för backend-tjänsten. En av base-url eller backend-id måste finnas. Ej tillämpligt
backend-id Identifierare för den backend som vägen ska dirigeras till. (Backend-entiteter hanteras via Azure Portal, APIoch PowerShell.) En av base-url eller backend-id måste finnas. Ej tillämpligt
sf-partition-key Gäller endast när backend är en Service Fabric tjänst och anges med hjälp av "backend-id". Används för att lösa en specifik partition från namnmatchningstjänsten. No Ej tillämpligt
sf-replica-type Gäller endast när backend är en Service Fabric tjänst och anges med hjälp av "backend-id". Styr om begäran ska gå till den primära eller sekundära repliken av en partition. No Ej tillämpligt
sf-resolve-condition Gäller endast när backend är en Service Fabric tjänst. Villkor som identifierar om anropet till Service Fabric-backend måste upprepas med en ny lösning. No Ej tillämpligt
sf-service-instance-name Gäller endast när backend är en Service Fabric tjänst. Tillåter att tjänstinstanser ändras vid körning. No Ej tillämpligt
sf-listener-name Gäller endast när backend är en Service Fabric tjänst och anges med hjälp av "backend-id". Service Fabric Reliable Services kan du skapa flera lyssnare i en tjänst. Det här attributet används för att välja en specifik lyssnare när en Reliable Service i backend har fler än en lyssnare. Om det här attributet inte API Management försöker använda en lyssnare utan ett namn. En lyssnare utan namn är typisk för Reliable Services som bara har en lyssnare. No Ej tillämpligt

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande, backend

  • Principomfång: alla omfång

Ange brödtext

Använd principen set-body för att ange meddelandetexten för inkommande och utgående begäranden. Om du vill komma åt meddelandetexten kan du använda egenskapen eller , beroende på om principen finns i context.Request.Body context.Response.Body avsnittet inkommande eller utgående.

Viktigt

Observera att som standard när du kommer åt meddelandetexten med hjälp av eller så går den ursprungliga meddelandetexten förlorad och måste anges genom att brödtexten context.Request.Body context.Response.Body returneras i uttrycket. Om du vill bevara innehållet i brödtexten anger preserveContent du true parametern till när du kommer åt meddelandet. Om preserveContent är inställt true på och en annan brödtext returneras av uttrycket används den returnerade brödtexten.

Tänk på följande när du använder set-body principen.

  • Om du använder principen för att returnera en ny eller uppdaterad brödtext behöver du inte ange till eftersom du uttryckligen anger set-body preserveContent det nya true brödtextinnehållet.
    • Att bevara innehållet i ett svar i den inkommande pipelinen är inte meningsfullt eftersom det inte finns något svar ännu.
    • Det är inte meningsfullt att bevara innehållet i en begäran i den utgående pipelinen eftersom begäran redan har skickats till backend i det här läget.
    • Om den här principen används när det inte finns någon meddelandetext, till exempel i en inkommande GET, utlöstes ett undantag.

Mer information finns i context.Request.Body avsnitten context.Response.Body , och i IMessage tabellen Kontextvariabel.

Principutdrag

<set-body>new body value as text</set-body>

Exempel

Exempel på literal text

<set-body>Hello world!</set-body>

Exempel på hur du kommer åt brödtexten som en sträng. Observera att vi bevarar den ursprungliga begärandetexten så att vi kan komma åt den senare i pipelinen.

<set-body>
@{ 
    string inBody = context.Request.Body.As<string>(preserveContent: true); 
    if (inBody[0] =='c') { 
        inBody[0] = 'm'; 
    } 
    return inBody; 
}
</set-body>

Exempel på åtkomst till brödtexten som ett JObject. Observera att eftersom vi inte reserverar den ursprungliga begärandetexten resulterar åtkomst till den senare i pipelinen i ett undantag.

<set-body> 
@{ 
    JObject inBody = context.Request.Body.As<JObject>(); 
    if (inBody.attribute == <tag>) { 
        inBody[0] = 'm'; 
    } 
    return inBody.ToString(); 
} 
</set-body>

Filtrera svar baserat på produkt

Det här exemplet visar hur du utför innehållsfiltrering genom att ta bort dataelement från svaret från backend-tjänsten när du använder Starter produkten. En demonstration av hur du konfigurerar och använder den här principen finns i Cloud CoverAvsnitt 177: Fler API Management-funktioner med Vlad Vinogradsky och fast-forward till 34:30. Börja kl. 31:50 för att se en översikt över DARK Sky Forecast-API:et som används för den här demonstrationen.

<!-- Copy this snippet into the outbound section to remove a number of data elements from the response received from the backend service based on the name of the api product -->
<choose>
  <when condition="@(context.Response.StatusCode == 200 && context.Product.Name.Equals("Starter"))">
    <set-body>@{
        var response = context.Response.Body.As<JObject>();
        foreach (var key in new [] {"minutely", "hourly", "daily", "flags"}) {
          response.Property (key).Remove ();
        }
        return response.ToString();
      }
    </set-body>
  </when>
</choose>

Använda Liquid-mallar med uppsättningstext

Principen set-body kan konfigureras att använda mallspråket Liquid för att transformera brödtexten i en begäran eller ett svar. Detta kan vara mycket effektivt om du behöver omforma formatet för ditt meddelande helt.

Viktigt

Implementeringen av Liquid som används i set-body principen konfigureras i "C#-läge". Detta är särskilt viktigt när du gör saker som filtrering. Till exempel kräver användning av ett datumfilter användning av Pascal-hölje och C#-datumformatering, t.ex.:

{{body.foo.startDateTime| Datum:"yyyyMMddTHH:mm:ssZ"}}

Viktigt

För att korrekt binda till en XML-brödtext med hjälp av mallen Liquid använder du en princip för att ange Content-Type till antingen application/xml, text/xml (eller någon typ som slutar med +xml). För en JSON-brödtext måste det vara set-header application/json, text/json (eller någon typ som slutar med +json).

Konvertera JSON till SOAP med hjälp av en Liquid-mall

<set-body template="liquid">
    <soap:Envelope xmlns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <GetOpenOrders>
                <cust>{{body.getOpenOrders.cust}}</cust>
            </GetOpenOrders>
        </soap:Body>
    </soap:Envelope>
</set-body>

Transformera JSON med en Liquid-mall

{
"order": {
    "id": "{{body.customer.purchase.identifier}}",
    "summary": "{{body.customer.purchase.orderShortDesc}}"
    }
}

Element

Namn Beskrivning Krävs
set-body Rotelementet. Innehåller brödtexten eller ett uttryck som returnerar en brödtext. Yes

Egenskaper

Name Beskrivning Krävs Standardvärde
mall Används för att ändra mallläget som den konfigurerade brödtextprincipen ska köras i. För närvarande är det enda värde som stöds:

– liquid – den inställda brödtextprincipen använder flytande mallmotor
No

Mallen Liquid kan binda till ett kontextobjekt med följande egenskaper för att komma åt information om begäran och svaret:

context.
    Request.
        Url
        Method
        OriginalMethod
        OriginalUrl
        IpAddress
        MatchedParameters
        HasBody
        ClientCertificates
        Headers

    Response.
        StatusCode
        Method
        Headers
Url.
    Scheme
    Host
    Port
    Path
    Query
    QueryString
    ToUri
    ToString

OriginalUrl.
    Scheme
    Host
    Port
    Path
    Query
    QueryString
    ToUri
    ToString

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande, utgående, backend

  • Principomfång: alla omfång

Ange HTTP-huvud

Principen set-header tilldelar ett värde till ett befintligt svar och/eller begärandehuvud eller lägger till ett nytt svars- och/eller begärandehuvud.

Infogar en lista med HTTP-huvuden i ett HTTP-meddelande. När den placeras i en inkommande pipeline anger den här principen HTTP-huvudena för begäran som skickas till måltjänsten. När den placeras i en utgående pipeline anger den här principen HTTP-huvudena för svaret som skickas till gatewayens klient.

Principutdrag

<set-header name="header name" exists-action="override | skip | append | delete">
    <value>value</value> <!--for multiple headers with the same name add additional value elements-->
</set-header>

Exempel

Exempel – lägga till rubrik, åsidosätt befintlig

<set-header name="some header name" exists-action="override">
    <value>20</value>
</set-header>

Exempel – ta bort sidhuvud

 <set-header name="some header name" exists-action="delete" />

Vidarebefordra kontextinformation till backend-tjänsten

Det här exemplet visar hur du tillämpar en princip på API-nivå för att ange kontextinformation till backend-tjänsten. En demonstration av hur du konfigurerar och använder den här principen finns i Cloud CoverAvsnitt 177: Fler API Management-funktioner med Vlad Vinogradsky och fast-forward till 10:30. Kl. 12:10 finns en demonstration av hur du anropar en åtgärd i utvecklarportalen där du kan se principen på jobbet.

<!-- Copy this snippet into the inbound element to forward some context information, user id and the region the gateway is hosted in, to the backend service for logging or evaluation -->
<set-header name="x-request-context-data" exists-action="override">
  <value>@(context.User.Id)</value>
  <value>@(context.Deployment.Region)</value>
</set-header>

Mer information finns i Principuttryck och Kontextvariabel.

Anteckning

Flera värden i en rubrik sammanfogas till en CSV-sträng, till exempel: headerName: value1,value2,value3

Undantag omfattar standardiserade huvuden, vilka värden:

  • kan innehålla kommatecken ( User-Agent , WWW-Authenticate , Proxy-Authenticate ),
  • kan innehålla datum ( Cookie , Set-Cookie , Warning ),
  • contain date ( Date , , , , , Expires If-Modified-Since If-Unmodified-Since Last-Modified Retry-After ).

Om det gäller dessa undantag sammanfogas inte flera huvudvärden till en sträng och skickas som separata huvuden, till exempel: User-Agent: value1 User-Agent: value2 User-Agent: value3

Element

Namn Beskrivning Krävs
set-header Rotelementet. Yes
värde Anger värdet för huvudet som ska ställas in. Lägg till ytterligare element för flera rubriker med samma value namn. No

Egenskaper

Name Beskrivning Krävs Standardvärde
exists-action Anger vilken åtgärd som ska vidtas när rubriken redan har angetts. Det här attributet måste ha något av följande värden.

– åsidosättning – ersätter värdet för det befintliga huvudet.
– hoppa över – ersätter inte det befintliga rubrikvärdet.
- append – lägger till värdet i det befintliga rubrikvärdet.
– ta bort – tar bort -huvudet från begäran.

När det här är inställt på att registrera flera poster med samma namn resulterar det i att rubriken anges enligt alla poster (som visas flera gånger). Endast listade värden anges i override resultatet.
No Åsidosätta
name Anger namnet på rubriken som ska anges. Yes Ej tillämpligt

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande, utgående, backend, on-error

  • Principomfång: alla omfång

Ange frågesträngsparameter

Principen set-query-parameter lägger till, ersätter värdet för eller tar bort frågesträngparametern för förfrågningar. Kan användas för att skicka frågeparametrar som förväntas av backend-tjänsten som är valfria eller aldrig finns i begäran.

Principsats

<set-query-parameter name="param name" exists-action="override | skip | append | delete">
    <value>value</value> <!--for multiple parameters with the same name add additional value elements-->
</set-query-parameter>

Exempel


<set-query-parameter name="api-key" exists-action="skip">
  <value>12345678901</value>
</set-query-parameter>

Vidarebefordra kontextinformation till backend-tjänsten

Det här exemplet visar hur du tillämpar en princip på API-nivå för att ange kontextinformation till backend-tjänsten. En demonstration av hur du konfigurerar och använder den här principen finns i Cloud CoverAvsnitt 177: Fler API Management-funktioner med Vlad Vinogradsky och fast-forward till 10:30. Kl. 12:10 finns det en demonstration av att anropa en åtgärd i utvecklarportalen där du kan se principen på jobbet.

<!-- Copy this snippet into the inbound element to forward a piece of context, product name in this example, to the backend service for logging or evaluation -->
<set-query-parameter name="x-product-name" exists-action="override">
  <value>@(context.Product.Name)</value>
</set-query-parameter>

Mer information finns i Principuttryck och Kontextvariabel.

Element

Namn Beskrivning Krävs
set-query-parameter Rotelementet. Yes
värde Anger värdet på frågeparametern som ska ställas in. För flera frågeparametrar med samma namn lägger du till ytterligare value element. Yes

Egenskaper

Name Beskrivning Krävs Standardvärde
exists-action Anger vilken åtgärd som ska vidtas när frågeparametern redan är angiven. Det här attributet måste ha något av följande värden.

– åsidosättning – ersätter värdet för den befintliga parametern.
– hoppa över – ersätter inte det befintliga frågeparametervärdet.
- append – lägger till värdet i det befintliga frågeparametervärdet.
– ta bort – tar bort frågeparametern från begäran.

När värdet är inställt på att lista flera poster med samma namn resulterar det i att frågeparametern anges enligt alla poster (som visas flera gånger). Endast listade värden anges i override resultatet.
No Åsidosätta
name Anger namnet på frågeparametern som ska anges. Yes Ej tillämpligt

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande, backend

  • Principomfång: alla omfång

Skriva om URL

Principen konverterar en begärande-URL från dess offentliga formulär till det formulär som förväntas av rewrite-uri webbtjänsten, som du ser i följande exempel.

  • Offentlig URL – http://api.example.com/storenumber/ordernumber

  • Begärande-URL – http://api.example.com/v2/US/hardware/storenumber&ordernumber?City&State

    Den här principen kan användas när en mänsklig och/eller webbläsarvänlig URL ska omvandlas till det URL-format som förväntas av webbtjänsten. Den här principen behöver bara tillämpas när du exponerar ett alternativt URL-format, till exempel rena URL:er, RESTful-URL:er, användarvänliga URL:er eller SEO-användarvänliga URL:er som är rent strukturella URL:er som inte innehåller en frågesträng och i stället bara innehåller resursens sökväg (efter schemat och behörigheten). Detta görs ofta för estetiskt syfte, användbarhet eller sökmotoroptimering (SEO).

Anteckning

Du kan bara lägga till frågesträngsparametrar med hjälp av principen. Du kan inte lägga till extra parametrar för mallsökvägen i omskrivnings-URL:en.

Principsats

<rewrite-uri template="uri template" copy-unmatched-params="true | false" />

Exempel

<policies>
    <inbound>
        <base />
        <rewrite-uri template="/v2/US/hardware/{storenumber}&{ordernumber}?City=city&State=state" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>
<!-- Assuming incoming request is /get?a=b&c=d and operation template is set to /get?a={b} -->
<policies>
    <inbound>
        <base />
        <rewrite-uri template="/put" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>
<!-- Resulting URL will be /put?c=d -->
<!-- Assuming incoming request is /get?a=b&c=d and operation template is set to /get?a={b} -->
<policies>
    <inbound>
        <base />
        <rewrite-uri template="/put" copy-unmatched-params="false" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>
<!-- Resulting URL will be /put -->

Element

Namn Beskrivning Krävs
rewrite-uri Rotelementet. Yes

Attribut

Attribut Beskrivning Krävs Standardvärde
mall Den faktiska webbtjänst-URL:en med eventuella frågesträngsparametrar. När du använder uttryck måste hela värdet vara ett uttryck. Yes Ej tillämpligt
copy-unmatched-params Anger om frågeparametrar i den inkommande begäran som inte finns i den ursprungliga URL-mallen läggs till i den URL som definieras av mallen för omskrivning No true

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande

  • Principomfång: alla omfång

Transformera XML med hjälp av en XSLT

Principen Transform XML using an XSLT tillämpar en XSL-transformering på XML i begäran eller svarstexten.

Principutdrag

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

Exempel

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

Element

Namn Beskrivning Krävs
xsl-transform Rotelementet. Yes
parameter Används för att definiera variabler som används i transformeringen No
xsl:stylesheet Rotformatmallelement. Alla element och attribut som definieras i följer XSLT-standardspecifikationen Yes

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande, utgående

  • Principomfång: alla omfång

Nästa steg

Mer information finns i följande avsnitt: