<commit_before>---
layout: page
title: Extended Binding
permalink: "docfunc/de/df/extendedbinding"
language: de
---

Die Dokumentfunktion Extended Binding ermöglicht es über XSLT den Dokumentaufbau zu beeinflussen. Verglichen mit der Dokumentfunktion Skripts ist das Extended Binding in der Lage nebst dem Textinhalt noch weitere Attribute, wie Textfarbe, Grösse angwenadter Style etc. zu verändern.<br><br>
Das Extended Binding bietet viele Möglichkeiten, hat aber auch einige Tücken. Dokumente mit Extended Binding haben zum Beispiel eine viel höhere Ladezeit als Dokumente ohne Extended Binding. Des Weiteren ist das Pflegen von Dokumenten mit Extended Binding sehr aufwändig. - Man kann zusammenfassend sagen, wenn möglich sollte man Extended Binding nicht verwenden.

## Übersicht

- [Übersicht](#übersicht)
- [Tags](#tags)
- [Operatoren](#operatoren)
- [Zugriff auf Daten](#zugriffaufdaten)
- [Funktionalitäten](#funktionalitäten)
- [Beispiele](#beispiele)

## Tags

__Allgemeine Tags:__

{:.table .table-striped}
| Tag | Funktion |
| --- | --- |
| ``` <w:sdtContent></w:sdtContent> ``` | Diese Tags umschliessen das gesamte Extended Binding im Word-Dokument |
| ``` <xsl:stylesheet></xsl:stylesheet> ``` | Diese Tags umschliessen alle Templates |
| ``` <xsl:template></xsl:template> ``` | Diese Tags umschliessen ein Template |
| ``` <xsl:param></xsl:param> ``` | Diese Tags umschliessen einen Parameter |
| ``` <xsl:variable></xsl:variable> ``` | Diese Tags umschliessen eine Variable |
| ``` <xsl:value-of></xsl:value-of> ``` | Diese Tags umschliessen eine Variable, welche ausgegeben wird |
| ``` <xsl:call-template></xsl:call-template> ``` | Diese Tags umschliessen einen Templateaufruf |
| ``` <xsl:with-param></xsl:with-param> ``` | Diese Tags umschliessen einen Parameter, welcher beim Templateaufruf mitgegeben wird |
| ``` <w:p></w:p> ``` | Diese Tags umschliessen einen Paragraphen |
| ``` <w:r></w:r> ``` | Diese Tags umschliessen ein Set von WordprocessingML-Komponenten |
| ``` <w:t></w:t> ``` | Diese Tags umschliessen reinen Text |
| ``` <w:tbl></w:tbl> ``` | Diese Tags umschliessen eine gesamte Tabelle |
| ``` <w:tr></w:tr> ``` | Diese Tags umschliessene eine Tabellenzeile |
| ``` <w:tc></w:tc> ``` | Diese Tags umschliessene eine Tabellenzelle |
| <sub>**Diese Aufzählung ist nicht abschliessend*</sub> |


__Formatierungs-Container Tags:__

{:.table .table-striped}
| Tag | Funktion | Link zu Attributen |
| --- | ---- | --- |
| ```<w:pPr></w:pPr> ``` | Innerhalb dieser Tags wird die Formatierung für Paragraphen definiert | [Paragraph Properties](http://officeopenxml.com/WPparagraphProperties.php){:target="_blank"} |
| ```<w:rPr></w:rPr> ``` | Innerhalb dieser Tags wird die Formatierung für Runs definiert | [Run Properties](http://officeopenxml.com/WPtextFormatting.php){:target="_blank"} |
| ```<w:tblPr></w:tblPr> ``` | Innerhalb dieser Tags wird die Formatierung für gesamte Tabellen definiert | [Table Properties](http://officeopenxml.com/WPtableProperties.php){:target="_blank"} |
| ```<w:trPr></w:trPr> ``` | Innerhalb dieser Tags wird die Formatierung für Tabellenzeilen definiert | [TableRow Properties](http://officeopenxml.com/WPtableRowProperties.php){:target="_blank"} |
| ```<w:tcPr></w:tcPr> ``` | Innerhalb dieser Tags wird die Formatierung für Tabellenzellen definiert | [TableCell Properties](http://officeopenxml.com/WPtableCellProperties.php){:target="_blank"} |
| ```<w:t></w:t> ``` | Reiner Text hat keine Property-Tags, Text wird in den Run-Property-Tags definiert | [Text/Run Properties](http://officeopenxml.com/WPtextFormatting.php){:target="_blank"} |

## Operatoren

{:.table .table-striped}
| Operator | Funktion |
| --- | - |
| ``` + ``` | Addition |
| ``` - ``` | Subtraktion |
| ``` * ``` | Multiplikation |
| ``` div ``` | Division |
| ```=``` | Gleich |
| ``` != ``` | Ungleich |
| ``` < / &lt; ``` | Kleiner als |
| ``` > / &gt; ``` | Grösesr als |
| ``` <= / &gt;= ``` | Kleiner Gleich |
| ``` >= / &lt;= ``` | Grösser Gleich |
| ``` or ``` | Logisches Oder |
| ``` and ``` | Logisches Und |
| ``` Mod ``` | Modulus |
| ``` $ ``` | Wird verwendet um eine Variable anzusprechen |
| ``` // ``` | Der Doppel-Slash gibt einen Pfad an mit Root als Ausgangspunkt |
| ``` / ``` | Der Einfache-Slash gibt einen Pfad an mit der jetztigen Position als Ausgangspunkt |
| ``` . ``` | Der Einfache-Punkt spricht das aktuelle Element an |
| ``` .. ``` | Der Doppel-Punkt spricht das Elternelement des aktuellen Elemnts an |
| ``` @ ``` | Das @ spricht Attribute an |
| ``` | ``` | Das &#124;-Zeichen ist ein logisches Und, man kann mehrere Elemente miteinander logisch verbinden |
| ``` not() ``` | Das wird für eine Negation verwendet |

## Zugriff auf Daten

Mit dem Extended Binding kann man wie auch mit den Skripten auf Daten zugreifen und diese weiter verwenden. Die Daten werden dabei in einer Variable gespeichert.

__Beispiel für eine Variable:__
```xml
  <xsl:variable name="[NAME DER VARIABLE]" select="[REFERNZIERTES OBJEKT]" />
```

__Beispiel für den Zugriff auf ein Textfeld im Dokumenten-Parameter:__
```xml
  <xsl:variable name="Subject" select="//Text[@id='DocParam.Subject']" />
```
<sub>**Der Präfix 'DocParam' ist nicht zwingend nötig die OneOffixx-Konventionen schreiben jedoch vor, dass Felder im Dokumenten-Parameter mit diesem Präfix zu versehen sind.*</sub>

__Beispiel für den Zugriff auf eine CheckBox im Dokumenten-Parameter:__
```xml
  <xsl:variable name="CheckBox" select="//CheckBox[@id='DocParam.CheckBox']" />
```
<sub>**Der Präfix 'DocParam' ist nicht zwingend nötig die OneOffixx-Konventionen schreiben jedoch vor, dass Felder im Dokumenten-Parameter mit diesem Präfix zu versehen sind.*</sub>

__Beispiel für den Zugriff auf eine ComboBox:__
```xml
  <xsl:variable name="ComboBox" select="//ComboBox[@id='DocParam.Combo']/@selectedValue" />
```
<sub>**Der Präfix 'DocParam' ist nicht zwingend nötig die OneOffixx-Konventionen schreiben jedoch vor, dass Felder im Dokumenten-Parameter mit diesem Präfix zu versehen sind.*</sub>

__Beispiel für den Zugriff auf in Skript:__
```xml
  <xsl:variable name="ExampleSkript" select="//Text[@id='CustomElements.ExampleSkript']" />
```
<sub>**Anders als beim Zugriff auf den Dokumenten-Parameter ist hier der Präfix 'CustomElements' zwingend notwendig.*</sub>

## Funktionalitäten

__Normalize-Space:__

Die Funktion "Normalize-Space()" bereinigt Variablen, Eingabefelder, etc... Das heisst sollte in einem Feld versehentlicher Weise ein Leerschlag sein, wird dieses als leer betrachtet.
```xml
  <xsl:variable name="Subject" select="normalize-space(//Text[@id='DocParam.Subject'])" />
```
<sub>**Die obenstehende Variable enthält den Inhalt des Betrefffelds aus dem Dokumenten-Parameter bereinigt von überflüssigen Leerschlägen.*</sub>

Die Funktion "IF" bietet die Möglichkeit Aktionen von Bedingungen abhängig zu machen.

```xml
  <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>
```
<sub>**Das obenstehende Template prüft ob das Betrefffeld im Dokumenten-Parameter nicht leer ist, wenn das zutrifft wird der Wert ausgegeben, ansonsten geschieht nichts.*</sub>

Die Funktion "Chhose" 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. Das was zwischen den When-Tags steht wird ausgeführt, wenn die Bedingung zutrifft, das was zwischen den Otherwise-Tags steht wird ausgeführt, wenn die Bedingung nicht zutrifft.

```xml
  <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(//Text[@id='DocParam.Subject']) != ''">
              <xsl:value-of select="$Subject" />
            </xsl:when>
            <xsl:otherwise>
            Subject is empty
            </xsl:otherwise>
          </xsl:choose>
        </w:t><commit_msg>updated content<commit_after>---
layout: page
title: Extended Binding
permalink: "docfunc/de/df/extendedbinding"
language: de
---

Die Dokumentfunktion Extended Binding ermöglicht es über XSLT den Dokumentaufbau zu beeinflussen. Verglichen mit der Dokumentfunktion Skripts ist das Extended Binding in der Lage nebst dem Textinhalt noch weitere Attribute, wie Textfarbe, Grösse angwenadter Style etc. zu verändern.<br><br>
Das Extended Binding bietet viele Möglichkeiten, hat aber auch einige Tücken. Dokumente mit Extended Binding haben zum Beispiel eine viel höhere Ladezeit als Dokumente ohne Extended Binding. Des Weiteren ist das Pflegen von Dokumenten mit Extended Binding sehr aufwändig. - Man kann zusammenfassend sagen, wenn möglich sollte man Extended Binding nicht verwenden.

## Übersicht

- [Übersicht](#übersicht)
- [Tags](#tags)
- [Operatoren](#operatoren)
- [Zugriff auf Daten](#zugriffaufdaten)
- [Funktionalitäten](#funktionalitäten)
- [Beispiele](#beispiele)

## Tags

__Allgemeine Tags:__

{:.table .table-striped}
| Tag | Funktion |
| --- | --- |
| ``` <w:sdtContent></w:sdtContent> ``` | Diese Tags umschliessen das gesamte Extended Binding im Word-Dokument |
| ``` <xsl:stylesheet></xsl:stylesheet> ``` | Diese Tags umschliessen alle Templates |
| ``` <xsl:template></xsl:template> ``` | Diese Tags umschliessen ein Template |
| ``` <xsl:param></xsl:param> ``` | Diese Tags umschliessen einen Parameter |
| ``` <xsl:variable></xsl:variable> ``` | Diese Tags umschliessen eine Variable |
| ``` <xsl:value-of></xsl:value-of> ``` | Diese Tags umschliessen eine Variable, welche ausgegeben wird |
| ``` <xsl:call-template></xsl:call-template> ``` | Diese Tags umschliessen einen Templateaufruf |
| ``` <xsl:with-param></xsl:with-param> ``` | Diese Tags umschliessen einen Parameter, welcher beim Templateaufruf mitgegeben wird |
| ``` <w:p></w:p> ``` | Diese Tags umschliessen einen Paragraphen |
| ``` <w:r></w:r> ``` | Diese Tags umschliessen ein Set von WordprocessingML-Komponenten |
| ``` <w:t></w:t> ``` | Diese Tags umschliessen reinen Text |
| ``` <w:tbl></w:tbl> ``` | Diese Tags umschliessen eine gesamte Tabelle |
| ``` <w:tr></w:tr> ``` | Diese Tags umschliessene eine Tabellenzeile |
| ``` <w:tc></w:tc> ``` | Diese Tags umschliessene eine Tabellenzelle |
| <sub>**Diese Aufzählung ist nicht abschliessend*</sub> |


__Formatierungs-Container Tags:__

{:.table .table-striped}
| Tag | Funktion | Link zu Attributen |
| --- | ---- | --- |
| ```<w:pPr></w:pPr> ``` | Innerhalb dieser Tags wird die Formatierung für Paragraphen definiert | [Paragraph Properties](http://officeopenxml.com/WPparagraphProperties.php){:target="_blank"} |
| ```<w:rPr></w:rPr> ``` | Innerhalb dieser Tags wird die Formatierung für Runs definiert | [Run Properties](http://officeopenxml.com/WPtextFormatting.php){:target="_blank"} |
| ```<w:tblPr></w:tblPr> ``` | Innerhalb dieser Tags wird die Formatierung für gesamte Tabellen definiert | [Table Properties](http://officeopenxml.com/WPtableProperties.php){:target="_blank"} |
| ```<w:trPr></w:trPr> ``` | Innerhalb dieser Tags wird die Formatierung für Tabellenzeilen definiert | [TableRow Properties](http://officeopenxml.com/WPtableRowProperties.php){:target="_blank"} |
| ```<w:tcPr></w:tcPr> ``` | Innerhalb dieser Tags wird die Formatierung für Tabellenzellen definiert | [TableCell Properties](http://officeopenxml.com/WPtableCellProperties.php){:target="_blank"} |
| ```<w:t></w:t> ``` | Reiner Text hat keine Property-Tags, Text wird in den Run-Property-Tags definiert | [Text/Run Properties](http://officeopenxml.com/WPtextFormatting.php){:target="_blank"} |

## Operatoren

{:.table .table-striped}
| Operator | Funktion |
| --- | - |
| ``` + ``` | Addition |
| ``` - ``` | Subtraktion |
| ``` * ``` | Multiplikation |
| ``` div ``` | Division |
| ```=``` | Gleich |
| ``` != ``` | Ungleich |
| ``` < / &lt; ``` | Kleiner als |
| ``` > / &gt; ``` | Grösesr als |
| ``` <= / &gt;= ``` | Kleiner Gleich |
| ``` >= / &lt;= ``` | Grösser Gleich |
| ``` or ``` | Logisches Oder |
| ``` and ``` | Logisches Und |
| ``` Mod ``` | Modulus |
| ``` $ ``` | Wird verwendet um eine Variable anzusprechen |
| ``` // ``` | Der Doppel-Slash gibt einen Pfad an mit Root als Ausgangspunkt |
| ``` / ``` | Der Einfache-Slash gibt einen Pfad an mit der jetztigen Position als Ausgangspunkt |
| ``` . ``` | Der Einfache-Punkt spricht das aktuelle Element an |
| ``` .. ``` | Der Doppel-Punkt spricht das Elternelement des aktuellen Elemnts an |
| ``` @ ``` | Das @ spricht Attribute an |
| ``` | ``` | Das &#124;-Zeichen ist ein logisches Und, man kann mehrere Elemente miteinander logisch verbinden |
| ``` not() ``` | Das wird für eine Negation verwendet |

## Zugriff auf Daten

Mit dem Extended Binding kann man wie auch mit den Skripten auf Daten zugreifen und diese weiter verwenden. Die Daten werden dabei in einer Variable gespeichert.

__Beispiel für eine Variable:__
```xml
  <xsl:variable name="[NAME DER VARIABLE]" select="[REFERNZIERTES OBJEKT]" />
```

__Beispiel für den Zugriff auf ein Textfeld im Dokumenten-Parameter:__
```xml
  <xsl:variable name="Subject" select="//Text[@id='DocParam.Subject']" />
```
<sub>**Der Präfix 'DocParam' ist nicht zwingend nötig die OneOffixx-Konventionen schreiben jedoch vor, dass Felder im Dokumenten-Parameter mit diesem Präfix zu versehen sind.*</sub>

__Beispiel für den Zugriff auf eine CheckBox im Dokumenten-Parameter:__
```xml
  <xsl:variable name="CheckBox" select="//CheckBox[@id='DocParam.CheckBox']" />
```
<sub>**Der Präfix 'DocParam' ist nicht zwingend nötig die OneOffixx-Konventionen schreiben jedoch vor, dass Felder im Dokumenten-Parameter mit diesem Präfix zu versehen sind.*</sub>

__Beispiel für den Zugriff auf eine ComboBox:__
```xml
  <xsl:variable name="ComboBox" select="//ComboBox[@id='DocParam.<EMAIL>']/@selectedValue" />
```
<sub>**Der Präfix 'DocParam' ist nicht zwingend nötig die OneOffixx-Konventionen schreiben jedoch vor, dass Felder im Dokumenten-Parameter mit diesem Präfix zu versehen sind.*</sub>

__Beispiel für den Zugriff auf in Skript:__
```xml
  <xsl:variable name="ExampleSkript" select="//Text[@id='CustomElements.ExampleSkript']" />
```
<sub>**Anders als beim Zugriff auf den Dokumenten-Parameter ist hier der Präfix 'CustomElements' zwingend notwendig.*</sub>

## Funktionalitäten

__Normalize-Space:__

Die Funktion "Normalize-Space()" bereinigt Variablen, Eingabefelder, etc... Das heisst sollte in einem Feld versehentlicher Weise ein Leerschlag sein, wird dieses als leer betrachtet.
```xml
  <xsl:variable name="Subject" select="normalize-space(//Text[@id='DocParam.Subject'])" />
```
<sub>**Die obenstehende Variable enthält den Inhalt des Betrefffelds aus dem Dokumenten-Parameter bereinigt von überflüssigen Leerschlägen.*</sub>

Die Funktion "IF" bietet die Möglichkeit Aktionen von Bedingungen abhängig zu machen.

```xml
  <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>
```
<sub>**Das obenstehende Template prüft ob das Betrefffeld im Dokumenten-Parameter nicht leer ist, wenn das zutrifft wird der Wert ausgegeben, ansonsten geschieht nichts.*</sub>

Die Funktion "Chhose" 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. Das was zwischen den When-Tags steht wird ausgeführt, wenn die Bedingung zutrifft, das was zwischen den Otherwise-Tags steht wird ausgeführt, wenn die Bedingung nicht zutrifft.

```xml
  <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>
{'fraction_non_alphanumeric': 0.15304390007276256, 'fraction_numerical': 0.0003638127577007034, 'mean_word_length': 4.547595021863438, 'pattern_counts': {'":': 0, '<': 182, '<?xml version=': 0, '>': 182, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 28}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2219221', 'n_tokens_mistral': 5723, 'n_tokens_neox': 5737, 'n_words': 1492}