Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Diese Dokumentation verwendet der Einfachheit halber für diese Dokumentfunktion den umgangssprachlichen, englischen Begriff "Extended Bindings".

Extended Bindings ermöglichen es, über XSLT den Dokumentaufbau zu beeinflussen. Verglichen mit der Dokumentfunktion "Skripte" sind Extended Bindings in der Lage, nebst dem Textinhalt noch weitere Attribute, wie Textfarbe, Grösse angewandter Style etc. zu verändern. Sie bieten viele Möglichkeiten, sind jedoch anspruchsvoll umzusetzen und zu pflegen und haben eine höhere Ladezeit als Dokumente ohne Extended Bindings. Deswegen sollten Extended Bindings sparsam und wenn möglich gar nicht eingesetzt werden.

Tags

...

Allgemeine Tags:For the sake of simplicity, this documentation uses the term "extended bindings" for this document function.

Extended bindings make it possible to influence the document structure via XSLT. Compared to the document function "Scripts", extended bindings are able to change not only the text content but also other attributes such as text color, size of applied style, etc. They offer many possibilities, however, they are challenging to implement and maintain and have a higher loading time than documents without extended bindings. Therefore, extended bindings should be used sparingly and if possible not at all.

...

Tags

General Tags

Tag

Funktion

<w:sdtContent></w:sdtContent>

Diese Tags umschliessen das gesamte Extended Binding im Word-DokumentThese tags enclose the entire extended binding in the Word document.

<xsl:stylesheet></xsl:stylesheet>

Diese Tags umschliessen alle VorlagenThese tags enclose all templates.

<xsl:template></xsl:template>

Diese Tags umschliessen eine VorlageThese tags enclose a template.

<xsl:param></xsl:param>

Diese Tags umschliessen einen ParameterThese tags enclose a parameter.

<xsl:variable></xsl:variable>

Diese Tags umschliessen eine VariableThese tags enclose a variable.

<xsl:value-of></xsl:value-of>

Diese Tags umschliessen eine Variable, die ausgegeben wirdThese tags enclose a variable which will be output.

<xsl:call-template></xsl:call-template>

Diese Tags umschliessen einen VorlagenaufrufThese tags enclose a template call.

<xsl:with-param></xsl:with-param>

Diese Tags umschliessen einen Parameter, der beim Vorlagenaufruf mitgegeben wirdThese tags enclose a parameter which is passed in the template call.

<w:p></w:p>

Diese Tags umschliessen einen ParagraphenThese tags enclose a paragraph.

<w:r></w:r>

Diese Tags umschliessen ein Set von WordprocessingML-KomponentenThese tags enclose a set of WordprocessingML components.

<w:t></w:t>

Diese Tags umschliessen reinen TextThese tags enclose plain text.

<w:tbl></w:tbl>

Diese Tags umschliessen eine gesamte TabelleThese tags enclose an entire table.

<w:tr></w:tr>

Diese Tags umschliessen eine TabellenzeileThese tags enclose a table row.

<w:tc></w:tc>

Diese Tags umschliessen eine TabellenzelleThese tags enclose a table cell.

Note

CAUTION

Diese Aufzählung ist nicht abschliessend.

...

This list is not exhaustive.

Formatting container tags

Tag

Funktion

Link zu Attributen

<w:pPr></w:pPr>

Innerhalb dieser Tags wird die Formatierung für Paragraphen definiertWithin these tags the formatting for paragraphs is defined.

Paragraph Properties

<w:rPr></w:rPr>

Innerhalb dieser Tags wird die Formatierung für Runs definiertWithin these tags the formatting for runs is defined.

Run Properties

<w:tblPr></w:tblPr>

Innerhalb dieser Tags wird die Formatierung für gesamte Tabellen definiertWithin these tags the formatting for entire tables is defined.

Table Properties

<w:trPr></w:trPr>

Innerhalb dieser Tags wird die Formatierung für Tabellenzeilen definiertWithin these tags the formatting for table rows is defined.

TableRow Properties

<w:tcPr></w:tcPr>

Innerhalb dieser Tags wird die Formatierung für Tabellenzellen definiertWithin these tags the formatting for table cells is defined.

TableCell Properties

<w:t></w:t>

Reiner Text hat keine Property-Tags, Text wird in den Run-Property-Tags definiertPlain text has no property tags, text is defined in the run property tags.

Text/Run Properties

...

Operators

Operator

Funktion

+

Addition

-

SubtraktionSubtraction

*

MultiplikationMultiplication

div

Division

=

GleichEqual

!=

UngleichUnequal

< / &lt;

Kleiner alsLess than

> / &gt;

Grösser alsGreater than

<= / &gt;=

Kleiner GleichLess or equal

>= / &lt;=

Grösser GleichGreater or equal

orLogisches

OderLogical OR

andLogisches

UndLogical AND

Mod

Modulus

$wird

verwendet, um eine Variable anzusprechenis used to address a variable.

//

Doppel-Slash: gibt einen Pfad an mit "Root" als AusgangspunktDouble slash: specifies a path with "root" as starting point.

/Einfacher Slash: gibt einen Pfad an mit der jetztigen Position als

AusgangspunktSingle slash: specifies a path with the current position as starting point.

.Einfacher Punkt: spricht das aktuelle Element an

Period: addresses the current element.

..Doppelpunkt: spricht das Elternelement des aktuellen Elements an

Colon: addresses the parent element of the current element.

@

spricht Attribute anaddresses attributes.

|

| -Zeichen: ist ein logisches Und; man kann mehrere Elemente miteinander logisch verbindencharacter: is a logical and; you can logically connect several elements with each other.

not()

wird für eine Negation verwendet.

Zugriff auf Daten

Mit Extended Bindings kann man, wie auch mit Skripte, auf Daten zugreifen und diese weiter verwenden. Die Daten werden dabei in einer Variable gespeichert.

...

is used for a negation.

...

Data access

Extended bindings can be used to access and use data in the same way as scripts. The data is stored in a variable.

Example of a variable:

Code Block
languagexml
  <xsl:variable name="[NAME DER VARIABLE]" select="[REFERNZIERTES OBJEKT]" />

Beispiel für den Zugriff auf ein Textfeld im Dokument-Example of accessing a text field in the Document Parameter:

Code Block
languagexml
  <xsl:variable name="Subject" select="//Text[@id='DocParam.Subject']" />

Das Präfix 'DocParam' ist nicht zwingend nötig. Die primedocs-Konventionen schreiben jedoch vor, dass Felder im Dokument-Parameter mit diesem Präfix zu versehen sind.

Beispiel für den Zugriff auf eine CheckBox im Dokument-The "DocParam" prefix is not mandatory. However, the OneOffixx conventions dictate that fields in the Document Parameter must be provided with this prefix.

Example of accessing a CheckBox in the Document Parameter:

Code Block
languagexml
  <xsl:variable name="CheckBox" select="//CheckBox[@id='DocParam.CheckBox']" />

Das Präfix 'DocParam' ist nicht zwingend nötig. Die primedocs-Konventionen schreiben jedoch vor, dass Felder im Dokument-Parameter mit diesem Präfix zu versehen sind.

Beispiel für den Zugriff auf eine The "DocParam" prefix is not mandatory. However, the OneOffixx conventions dictate that fields in the Document Parameter must be provided with this prefix.

Example of accessing a ComboBox:

Code Block
languagexml
  <xsl:variable name="ComboBox" select="//ComboBox[@id='DocParam.Combo']/@selectedValue" />

Das Präfix 'DocParam' ist nicht zwingend nötig. Die primedocs-Konventionen schreiben jedoch vor, dass Felder im Dokument-Parameter mit diesem Präfix zu versehen sind.

Beispiel für den Zugriff auf ein SkriptThe "DocParam" prefix is not mandatory. However, the OneOffixx conventions dictate that fields in the Document Parameter must be provided with this prefix.

Example of accessing a script:

Code Block
languagexml
  <xsl:variable name="ExampleSkript" select="//Text[@id='CustomElements.ExampleSkript']" />

Anders als beim Zugriff auf den Dokument-Parameter ist hier das Präfix Unlike accessing the document parameter, the prefix 'CustomElements' zwingend notwendigis mandatory here.

...

Functionalities

Normalize

...

space

The function "Normalize-Space()" bereinigt Variablen, Eingabefeldercleans up variables, input fields, etc. Das heisst, sollte in einem Feld versehentlicherweise ein Leerschlag sein, wird dieses als leer betrachtetThat means, if there should be a space in a field by mistake, it will be considered as empty.

Code Block
languagexml
  <xsl:variable name="Subject" select="normalize-space(//Text[@id='DocParam.Subject'])" />

Die obenstehende Variable enthält den Inhalt des Betrefffelds aus dem Dokument-Parameter, bereinigt von überflüssigen LeerschlägenThe above variable contains the content of the subject field from the document parameter, cleaned from redundant spaces..

...

If

Die Funktion The "If" bietet die Möglichkeit, Aktionen von Bedingungen abhängig zu machenfunction offers the possibility to make actions dependent on conditions.

Code Block
  <xsl:template name="ConditionedSubject">
    <xsl:variable name="Subject" select="//Text[@id='DocParam.Subject']">
    <xsl:if test="normalize-space($Subject) != ''">
      <w:p>
        <w:r>
          <w:t>
            <xsl:value-of select="$Subject" />
          </w:t>
        </w:r>
      </w:p>
    </xsl:if>
  </xsl:template>

Die obenstehende Vorlage prüft, ob das Betrefffeld im Dokument-Parameter nicht leer ist. Wenn das zutrifft, wird der Wert ausgegeben, ansonsten geschieht nichtsThe above template checks if the subject field in the Document Parameter is not empty. If it is, the value is output, otherwise nothing happens.

...

Choose

Die Funktion The function "Choose" ist eine Erweiterung der Funktion If. Sie bietet zusätzlich die Möglichkeit, eine Anweisung zu machen, wenn die Bedingung nicht zu trifft. Hierfür werden die Tags When und Otherwise verwendet. Was zwischen den When-Tags steht, wird ausgeführt, wenn die Bedingung zutrifft. Was zwischen den Otherwise-Tags steht, wird ausgeführt, wenn die Bedingung nicht zutrifftis an extension of the function If. It offers the additional possibility to make a statement if the condition does not apply. For this the tags When and Otherwise are used. What is between the When tags will be executed if the condition is true. What is between the Otherwise tags will be executed if the condition is not true.

Code Block
languagexml
  <xsl:template name="ConditionedSubject">
    <xsl:variable name="Subject" select="//Text[@id='DocParam.Subject']" />
    <w:p>
      <w:r>
        <w:t>
          <xsl:choose>
            <xsl:when test="normalize-space($Subject) != ''">
              <xsl:value-of select="$Subject" />
            </xsl:when>
            <xsl:otherwise>
              Subject is empty
            </xsl:otherwise>
          </xsl:choose>
        </w:t>
      </w:r>
    </w:p>
  </xsl:template>  

Die obenstehende Vorlage prüft, ob das Betrefffeld im Dokument-Parameter nicht leer ist. Wenn das zutrifft, wird der Wert ausgegeben. Falls das Betrefffeld leer ist, wir der Informationstext 'Subject is empty' ausgegeben.

Substring

Die Funktion "Substring" wird in zwei Unterfunktionen unterteilt; es gibt Substirng-before und Substring-after. Man übergibt der Vorlage einen String (Text) und einen Charakter (Zeichen), bei welchen der Text getrennt werden sollThe above template checks if the subject field in the Document Parameter is not empty. If it is, the value will be output. If the subject field is empty, the information text "Subject is empty" is output.

...

Substring

The function "Substring" is divided into two sub-functions; there are Substring-before and Substring-after. One passes to the template a string (text) and a character (character) at which the text is to be separated.

Code Block
languagexml
  <xsl:template name="SubstringBeforeEMail">
    <xsl:variable name="E-Mail" select="//Text[@id='DocParam.E-Mail']" />
    <xsl:variable name="CharakterCharacter">@</xsl:variable>
    <w:p>
      <w:r>
        <w:t>
          <xsl:value-of select="substring-before($E-Mail, $Charakter$Character)" />
        </w:t>
      </w:r>
    </w:p>
  </xsl:template>

  <xsl:template name="SubstringAfterEMail">
    <xsl:variable name="E-Mail" select="//Text[@id='DocParam.E-Mail']" />
    <xsl:variable name="CharakterCharacter">@</xsl:variable>
    <w:p>
      <w:r>
        <w:t>
          <xsl:value-of select="substring-after($E-Mail, $Charakter$Character)" />
        </w:t>
      </w:r>
    </w:p>
  </xsl:template>

*Die erste Vorlage gibt alles aus, was in der E-Mail vor dem The first template outputs everything that comes before the "@" steht. Die zweite Vorlage gibt alles aus, was nach dem in the email. The second template outputs everything after the "@" steht.

Warningnote

WARNING

Das Zeichen, das als Ausgangspunkt verwendet wird – in diesem Fall IMPORTANT
The character used as the starting point – in this case "@" – wird nicht mitausgegebenis not included in the output.

...

Concat

Die Funktion "Concat" ist das Gegenteil der Funktion "Substring": sie verbindet ZeichenkettenThe Concat function is the opposite of the Substring function: it concatenates strings.

Code Block
languagexml
<xsl:template name="ConcatEMail">
  <xsl:variable name="FirstName" select="//Text[@id='DocParam.FirstName']" />
  <xsl:variable name="LastName" select="//Text[@id='DocParam.LastName']" />
  <w:p>
    <w:r>
      <w:t>
        <xsl:value-of select="concat($FirstName, '.', $LastName, '@beispiel@example.com')" />
      </w:t>
    </w:r>
  </w:p>
</xsl:template>

Die obenstehende Vorlage erstellt aus dem Vornamen und Nachnamen eine E-Mail Adresse, zwischen Vornamen und Nachnamen wird ein Punkt gesetzt und nach dem Nachnamen wird noch "@beispiel.com" angehängt.

Beispiele

Empfänger mit Versandart

Die Versandart und der Empfänger haben unterschiedliche Style-Informationen, zudem ist die Versandart eine optionale Eingabe. Wird gewünscht, dass der Empfänger eine Zeile nachrückt, wenn die Versandart nicht ausgefüllt ist, muss das mit einem Extended Binding gelöst werden. Die üblichen Skripte können nicht verschiedene Style-Informationen in einem Skript verwenden.

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageEN Berechtigungen

...

The template above creates an email address from the first name and last name, a dot is placed between the first name and last name, and "@example.com" is added after the last name.

...

Examples

Recipient with shipping method

The shipping type and the recipient have different style information, moreover the shipping type is an optional input. If it is desired that the recipient moves up one line if the dispatch type is not filled in, this must be solved with an extended binding. The usual scripts cannot use different style information in one script.

...

Code Block
languagexml
<!-- Vorlage für Empfänger mit optionaler Versandart. -->
<xsl:template name="OptionalTransmission">
  <!-- Variable mit Inhalt der Versandart. -->
  <xsl:variable name="Transmission" select="//Text[@id='CustomElements.Versandart']" />
  <!-- Variable mit Inhalt des Empfängers. -->
  <xsl:variable name="Anschrift" select="//Text[@id='CustomElements.Anschrift']" />
  <!-- Condition bei welcher geprüft wird of die Variable für die Versandart Inhalt hat. -->
  <xsl:if test="normalize-space($Transmission) = ''">
  <!-- Aufruf der Vorlage, welche Spaces durch Umbrüche ersetzt, damit die Empfängerinformationen untereinander angezeigt werden. -->
    <xsl:call-template name="StringToList">
      <xsl:with-param name="string" select="//Text[@id='CustomElements.Anschrift']" />
    </xsl:call-template>
  </xsl:if>
  <xsl:if test="normalize-space($Transmission) != ''">
    <w:p>
      <w:pPr>
        <w:pStyle w:val="Transmission" />
      </w:pPr>
      <w:r>
        <w:t>
          <xsl:value-of select="$Transmission" />
        </w:t>
      </w:r>
    </w:p>
    <!-- Aufruf der Vorlage, welche Spaces durch Umbrüche ersetzt, damit die Empfängerinformationen untereinander angezeigt werden. -->
    <xsl:call-template name="StringToList">
      <xsl:with-param name="string" select="//Text[@id='CustomElements.Anschrift']" />
    </xsl:call-template>
  </xsl:if>
</xsl:template>

Dynamische Tabellen

Tabellen mit statischer Anzahl Zeilen und Spalten aber optionaler Anzeige der Zeilen und Spalten sind ein weiteres Beispiel für den Einsatz von Extended Bindings. Ob eine Zeile oder Spalte angezeigt wird, kann man im Dokument-Parameter mittels CheckBox definieren.

View file
nameInvalid file id - UNKNOWN_MEDIA_ID
pageEN Berechtigungen

...

Dynamic tables

Tables with static number of rows and columns but optional display of rows and columns are another example for the use of extended bindings. Whether a row or column is displayed can be defined in the document parameter using a CheckBox.

...

Code Block
languagexml
<!-- VorlageTemplate fürfor dynamischdynamically angezeigtedisplayed Tabelletable -->
<xsl:template name="DynamicTable">
  <w:p />
  <w:tbl>
    <w:tblPr>
      <w:tblStyle w:val="Tabellenraster" />
      <w:tblW w:w="0" w:type="auto" />
      <w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1" />
    </w:tblPr>
    <w:tblGrid>
      <w:gridCol w:w="1701" />
      <w:gridCol w:w="1701" />
    </w:tblGrid>
    <!-- Condition at beiwhich welcherit geprüftis wirdchecked obwhether diethe erstefirst Zeilerow angezeigtshould werdenbe solldisplayed [DocParam.Row1 = ErsteShow Zeilefirst anzeigenrow]. -->
    <xsl:if test="//CheckBox[@id='DocParam.Row1'] = 'true'">
      <w:tr>
        <!-- Condition beiat which welcherit geprüftis wirdchecked obwhether diethe erstefirst Spaltecolumn angezeigtshould werdenbe solldisplayed [DocParam.Column1 = ErsteShow Spaltefirst anzeigencolumn]. -->
        <xsl:if test="//CheckBox[@id='DocParam.Column1'] = 'true'">
          <w:tc>
            <w:tcPr>
              <w:tcW w:w="1701" w:type="dxa" />
            </w:tcPr>
            <w:p>
              <w:r>
                <w:t>
                Zeile 1 Spalte 1
                </w:t>
              </w:r>
            </w:p>
          </w:tc>
        </xsl:if>
        <!-- Condition at beiwhich welcherit geprüftis wirdchecked obwhether diethe zweitesecond Spaltecolumn angezeigtshould werdenbe solldisplayed [DocParam.Column2 = ZweiteShow Spaltesecond anzeigencolumn]. -->
        <xsl:if test="//CheckBox[@id='DocParam.Column2'] = 'true'">
          <w:tc>
            <w:tcPr>
              <w:tcW w:w="1701" w:type="dxa" />
            </w:tcPr>
            <w:p>
              <w:r>
                <w:t>
                Zeile 1 Spalte 2
                </w:t>
              </w:r>
            </w:p>
          </w:tc>
        </xsl:if>
      </w:tr>
    </xsl:if>
    <!-- Condition at beiwhich welcherit geprüftis wirdchecked obwhether diethe zweitesecond Zeilerow angezeigtshould werdenbe solldisplayed [DocParam.Row2 = ZweiteShow Zeilesecond anzeigenrow]. -->
    <xsl:if test="//CheckBox[@id='DocParam.Row2'] = 'true'">
      <w:tr>
        <!-- Condition beiat which welcherit geprüftis wirdchecked obwhether diethe erstefirst Spaltecolumn angezeigtshould werdenbe solldisplayed [DocParam.Column1 = ErsteShow Spaltefirst anzeigencolumn]. -->
        <xsl:if test="//CheckBox[@id='DocParam.Column1'] = 'true'">
          <w:tc>
            <w:tcPr>
              <w:tcW w:w="1701" w:type="dxa" />
            </w:tcPr>
            <w:p>
              <w:r>
                <w:t>
                Zeile 2 Spalte 1
                </w:t>
              </w:r>
            </w:p>
          </w:tc>
        </xsl:if> 
        <!-- Condition at beiwhich welcherit geprüftis wirdchecked obwhether diethe zweitesecond Spaltecolumn angezeigtshould werdenbe solldisplayed [DocParam.Column2 = ZweiteShow Spaltesecond anzeigencolumn]. -->
        <xsl:if test="//CheckBox[@id='DocParam.Column2'] = 'true'">
          <w:tc>
            <w:tcPr>
              <w:tcW w:w="1701" w:type="dxa" />
            </w:tcPr>
            <w:p>
              <w:r>
                <w:t>
                Zeile 2 Spalte 2
                </w:t>
              </w:r>
            </w:p>
          </w:tc>
        </xsl:if> 
      </w:tr>
    </xsl:if>
  </w:tbl>
  <w:p />
</xsl:template>

...