Zum Inhalt

Element <param>

Zweck: Deklariert den Vertrag für einen Fragmentparameter.

Warum: Verwende dieses Element in einem eingebundenen Fragment, um einen erforderlichen oder vorbelegten Eingang zu deklarieren und zu validieren.

Beispiel

1
<param name="channel"/>

Entscheidungshilfe

Fachlicher Nutzen: Macht erforderliche Eingaben und Defaults eines wiederverwendbaren Fragments für Menschen und Tools sichtbar.

  • Verwenden, wenn

    • Wenn ein Fragment einen Caller-Wert benötigt oder einen dokumentierten Default anbietet.
  • Anderen Ansatz wählen, wenn

    • Beim Liefern des Caller-Werts oder Definieren einer unabhängigen Setup-Property.
  • Voraussetzungen

    • Platziere param im eingebundenen Fragment und gib ihm einen stabilen Namen.
  • Alternativen

    • Verwende property am Include, um den deklarierten Parameter zu liefern. (Siehe: <property>)

Vollständige Beispiele

Ein typisiertes Descriptor-Fragment mit lokalen Parametern aufrufen

Verwende einen param-Vertrag und include-lokale Properties, wenn mehrere fachliche Produkte dieselbe Modellform mit unterschiedlichen begrenzten Werten nutzen.

parameterized-fragment/fragments/payment.xml
1
2
3
4
5
6
7
8
9
<setup>
    <param name="entity_name" description="Product emitted by this fragment."/>
    <param name="scheme" type="enum" values="SEPA SWIFT"/>
    <param name="count" type="int" default="2"/>
    <generate name="{entity_name}" count="{count}" target="LogExporter">
        <id name="id" generator="IncrementGenerator"/>
        <key name="scheme" constant="{scheme}"/>
    </generate>
</setup>
parameterized-fragment/datamimic.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<setup>
    <include uri="fragments/payment.xml">
        <property name="entity_name" constant="sepa_payments"/>
        <property name="scheme" constant="SEPA"/>
        <property name="count" constant="3"/>
    </include>
    <include uri="fragments/payment.xml">
        <property name="entity_name" constant="swift_payments"/>
        <property name="scheme" constant="SWIFT"/>
    </include>
</setup>

Regeln und ungültige Kombinationen

type='enum' erfordert eine nicht leere values-Liste.

Attribute: type, values

Warum: Der Fragmentvertrag benötigt das erlaubte Vokabular, um Include-Properties zu validieren.

Gültige Kombination
1
<param name="channel" type="enum" values="WEB STORE"/>
Ungültige Kombination
1
<param name="channel" type="enum"/>
Ein param-default darf keinen Ausdruck enthalten.

Attribute: default

Warum: Defaults werden zur Parse-Zeit validiert; dynamische Werte gehören in den script-Modus der aufrufenden property.

Gültige Kombination
1
<param name="count" type="int" default="10"/>
Ungültige Kombination
1
<param name="count" type="int" default="{base_count}"/>
Ein literaler default muss dem deklarierten param-type entsprechen.

Attribute: default, type, values

Warum: Der Include-Vertrag muss einen ungültigen Fallback ablehnen, bevor das Fragment ausgeführt wird.

Gültige Kombination
1
<param name="count" type="int" default="10"/>
Ungültige Kombination
1
<param name="count" type="int" default="ten"/>
I618 — Parser Include Param Missing

Fragment contract violation for

{contract_table}

{missing_summary}

Warum: The included fragment declares required params that were not supplied by the caller.

Lösung: Supply the missing values or define defaults on the fragment declarations.

Vollständige Regel

I619 — Parser Include Param Invalid Value

Invalid value for param '{param_name}' in . Expected {expected_detail}; provided '{provided_value}'

Warum: The include caller supplied a literal value that does not satisfy the fragment param contract.

Lösung: Update the value to match the declared param type or enum values.

Vollständige Regel

I620 — Parser Param In Top Level Descriptor

declarations have no effect in top-level descriptors

Warum: Fragment param declarations are only consumed when a descriptor is used as an included XML fragment.

Lösung: Move the declarations into a fragment descriptor or remove them from the top-level descriptor.

Vollständige Regel

Erlaubte Elternelemente / Erlaubte Kindelemente

Erlaubte Elternelemente: else, else-if, if, setup, while

Erlaubte Kindelemente:

Keine

  • Dynamische Includes und Fragmentparameter — Explains URI interpolation, scoped include properties, typed fragment params, runtime caller context, nesting, conditions, and cataloged failures for reusable XML composition.

Attribute

Alle 5 Attribute anzeigen

default

Optional literal default injected into the child include scope when omitted by the caller.

optional; string; Standardwert: null.

description

Human-readable explanation surfaced by static schema consumers.

optional; string; Standardwert: null.

name

Fragment param name delivered by .

erforderlich; string.

type

Param type used for parse-time validation of literal property values.

optional; string; Standardwert: "string"; Werte: string, int, enum, path.

values

Whitespace-separated enum values when type='enum'.

optional; string; Standardwert: null.