Zum Inhalt

Element <property>

Zweck: Überschreibt eine Property im Scope eines eingebundenen XML-Descriptors.

Warum: Verwende dieses Element, um einen lokalen Literalwert oder ausgewerteten Override an einen eingebundenen Descriptor zu übergeben.

Beispiel

1
<property name="scheme" constant="test"/>

Entscheidungshilfe

Fachlicher Nutzen: Konfiguriert ein Include, ohne das eingebundene Fragment zu verändern oder zu duplizieren.

  • Verwenden, wenn

    • Beim Übergeben eines literalen oder berechneten Werts an ein XML-Fragment.
  • Anderen Ansatz wählen, wenn

    • Beim Deklarieren der Fragment-Schnittstelle oder Ändern globaler Laufzeitkonfiguration.
  • Voraussetzungen

    • Platziere property in include und verwende einen vom Fragment erwarteten param-Namen.
  • Alternativen

    • Verwende param im Fragment, um den akzeptierten Eingang zu deklarieren. (Siehe: <param>)

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

Eine property erfordert constant oder script.

Attribute: constant, script

Warum: Das Include muss entweder einen Literalwert oder einen im Aufruferkontext auszuwertenden Ausdruck erhalten.

Gültige Kombination
1
<property name="channel" constant="WEB"/>
Ungültige Kombination
1
<property name="channel"/>
Wähle constant oder script, niemals beides.

Attribute: constant, script

Warum: Literale und ausgewertete Werte haben unterschiedliche Validierungszeitpunkte und können nicht gemeinsam eine property besitzen.

Gültige Kombination
1
<property name="channel" script="requested_channel"/>
Ungültige Kombination
1
<property name="channel" constant="WEB" script="requested_channel"/>
constant lehnt Ausdrucksklammern ab.

Attribute: constant, script

Warum: Verwende script für die Auswertung im Aufruferkontext; constant bleibt bewusst ein Parse-Zeit-Literal.

Gültige Kombination
1
<property name="channel" constant="WEB"/>
Ungültige Kombination
1
<property name="channel" constant="{requested_channel}"/>

Erlaubte Elternelemente / Erlaubte Kindelemente

Erlaubte Elternelemente: else, else-if, if, include, 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 3 Attribute anzeigen

constant

Literal value injected into the child include scope. {expr} is forbidden.

optional; string; Standardwert: null.

name

Property key injected into the included descriptor scope.

erforderlich; string.

script

Expression evaluated in the direct caller context when the include executes.

optional; string; Standardwert: null.