19 declare(strict_types=1);
    66             public array $exposed_data;
    68             protected array $sub_elements;
    73                     public function __construct(
public array $exposed_data)
    77                     public function name(): 
string    79                         return $this->exposed_data[
'name'];
    82                     public function dataType(): 
Type    84                         return $this->exposed_data[
'type'];
    89             public function addScaffoldToSubElements(
    93                 if ($name === 
'failme') {
    97                 $scaffold = clone $this;
    98                 $this->sub_elements[] = $scaffold;
   100                 $scaffold->sub_elements = [];
   101                 $scaffold->super_element = $this;
   102                 $scaffold->exposed_data = [];
   104                 $info_from_name = explode(
'-', $name);
   107                 if ($name === 
'string') {
   108                     $type = Type::STRING;
   109                 } elseif ($name === 
'language') {
   115                 $scaffold->exposed_data[
'name'] = $name;
   116                 $scaffold->exposed_data[
'type'] = $type;
   121             public function mark(
   124                 string $data_value = 
''   126                 $this->exposed_data[
'marker_action'] = $action;
   127                 $this->exposed_data[
'marker_value'] = $data_value;
   128                 if (isset($this->super_element)) {
   129                     $this->super_element->mark($factory, $action);
   133             public function exposeData(): array
   135                 $data = $this->exposed_data;
   137                 foreach ($this->sub_elements as $sub_element) {
   138                     $data[
'subs'][] = $sub_element->exposeData();
   148         $root->exposed_data = [
'name' => 
'correctroot', 
'type' => Type::NULL];
   157                 return new class ($this->root) extends 
NullSet {
   171             public function tagForElement(
   175                 $info_from_name = explode(
'-', $element->
getDefinition()->name());
   178                 array_shift($info_from_name);
   179                 array_shift($info_from_name);
   183                 foreach ($info_from_name as $info) {
   184                     if ($info === SpecialCase::LANGSTRING->value . 
'.' . $version->value) {
   187                     if ($info === SpecialCase::OMITTED->value . 
'.' . $version->value) {
   195                         protected bool $omitted
   199                     public function isExportedAsLangString(): 
bool   204                     public function isOmitted(): 
bool   206                         return $this->omitted;
   213             public function copyrightFromExport(
string $copyright): 
string   215                 return '~parsed:' . $copyright . 
'~';
   230 <?xml version=
"1.0"?>
   232     <el1-
string>val1</el1-
string>
   234         <el2.1-non_neg_int>val2.1</el2.1-non_neg_int>
   235         <el2.2-duration>val2.2</el2.2-duration>
   242             'name' => 
'correctroot',
   243             'type' => Type::NULL,
   244             'marker_action' => Action::CREATE_OR_UPDATE,
   245             'marker_value' => 
'',
   248                     'name' => 
'el1-string',
   249                     'type' => Type::STRING,
   250                     'marker_action' => Action::CREATE_OR_UPDATE,
   251                     'marker_value' => 
'val1',
   255                     'name' => 
'el2-none',
   256                     'type' => Type::NULL,
   257                     'marker_action' => Action::CREATE_OR_UPDATE,
   258                     'marker_value' => 
'',
   261                             'name' => 
'el2.1-non_neg_int',
   262                             'type' => Type::NON_NEG_INT,
   263                             'marker_action' => Action::CREATE_OR_UPDATE,
   264                             'marker_value' => 
'val2.1',
   268                             'name' => 
'el2.2-duration',
   270                             'marker_action' => Action::CREATE_OR_UPDATE,
   271                             'marker_value' => 
'val2.2',
   284             $result_set->getRoot()->exposeData()
   291 <?xml version=
"1.0"?>
   293     <el1-
string>val1</el1-
string>
   295         <failme>val2.1</failme>
   296         <el2.2-duration>val2.2</el2.2-duration>
   303             'name' => 
'correctroot',
   304             'type' => Type::NULL,
   305             'marker_action' => Action::CREATE_OR_UPDATE,
   306             'marker_value' => 
'',
   309                     'name' => 
'el1-string',
   310                     'type' => Type::STRING,
   311                     'marker_action' => Action::CREATE_OR_UPDATE,
   312                     'marker_value' => 
'val1',
   316                     'name' => 
'el2-none',
   317                     'type' => Type::NULL,
   318                     'marker_action' => Action::CREATE_OR_UPDATE,
   319                     'marker_value' => 
'',
   322                             'name' => 
'el2.2-duration',
   324                             'marker_action' => Action::CREATE_OR_UPDATE,
   325                             'marker_value' => 
'val2.2',
   338             $result_set->getRoot()->exposeData()
   345 <?xml version=
"1.0"?>
   347     <el1-
string>val1</el1-
string>
   349         <el2.1-non_neg_int>val2.1</el2.1-non_neg_int>
   350         <el2.2-duration>val2.2</el2.2-duration>
   358         $this->expectException(\ilMDXMLException::class);
   365 <?xml version=
"1.0"?>
   367     <el-lang>none</el-lang>
   373             'name' => 
'correctroot',
   374             'type' => Type::NULL,
   375             'marker_action' => Action::CREATE_OR_UPDATE,
   376             'marker_value' => 
'',
   380                     'type' => Type::LANG,
   381                     'marker_action' => Action::CREATE_OR_UPDATE,
   382                     'marker_value' => 
'xx',
   393             $result_set->getRoot()->exposeData()
   400 <?xml version=
"1.0"?>
   402     <el1-none-langstring.10.0>
   403         <
string language=
"br">some text</
string>
   404     </el1-none-langstring.10.0>
   410             'name' => 
'correctroot',
   411             'type' => Type::NULL,
   412             'marker_action' => Action::CREATE_OR_UPDATE,
   413             'marker_value' => 
'',
   416                     'name' => 
'el1-none-langstring.10.0',
   417                     'type' => Type::NULL,
   418                     'marker_action' => Action::CREATE_OR_UPDATE,
   419                     'marker_value' => 
'',
   423                             'type' => Type::STRING,
   424                             'marker_action' => Action::CREATE_OR_UPDATE,
   425                             'marker_value' => 
'some text',
   429                             'name' => 
'language',
   430                             'type' => Type::LANG,
   431                             'marker_action' => Action::CREATE_OR_UPDATE,
   432                             'marker_value' => 
'br',
   445             $result_set->getRoot()->exposeData()
   452 <?xml version=
"1.0"?>
   454     <el1-none-langstring.4.1.0>
   455         <el1.1-
string>val1.1</el1.1-
string>
   456         <el1.2-lang>val1.2</el1.2-lang>
   457     </el1-none-langstring.4.1.0>
   463             'name' => 
'correctroot',
   464             'type' => Type::NULL,
   465             'marker_action' => Action::CREATE_OR_UPDATE,
   466             'marker_value' => 
'',
   469                     'name' => 
'el1-none-langstring.4.1.0',
   470                     'type' => Type::NULL,
   471                     'marker_action' => Action::CREATE_OR_UPDATE,
   472                     'marker_value' => 
'',
   475                             'name' => 
'el1.1-string',
   476                             'type' => Type::STRING,
   477                             'marker_action' => Action::CREATE_OR_UPDATE,
   478                             'marker_value' => 
'val1.1',
   482                             'name' => 
'el1.2-lang',
   483                             'type' => Type::LANG,
   484                             'marker_action' => Action::CREATE_OR_UPDATE,
   485                             'marker_value' => 
'val1.2',
   498             $result_set->getRoot()->exposeData()
   505 <?xml version=
"1.0"?>
   507     <el1-none-langstring.10.0>
   508         <
string language=
"none">some text</
string>
   509     </el1-none-langstring.10.0>
   515             'name' => 
'correctroot',
   516             'type' => Type::NULL,
   517             'marker_action' => Action::CREATE_OR_UPDATE,
   518             'marker_value' => 
'',
   521                     'name' => 
'el1-none-langstring.10.0',
   522                     'type' => Type::NULL,
   523                     'marker_action' => Action::CREATE_OR_UPDATE,
   524                     'marker_value' => 
'',
   528                             'type' => Type::STRING,
   529                             'marker_action' => Action::CREATE_OR_UPDATE,
   530                             'marker_value' => 
'some text',
   534                             'name' => 
'language',
   535                             'type' => Type::LANG,
   536                             'marker_action' => Action::CREATE_OR_UPDATE,
   537                             'marker_value' => 
'xx',
   550             $result_set->getRoot()->exposeData()
   557 <?xml version=
"1.0"?>
   559     <el1-none-langstring.10.0>
   560         <
string>some text</
string>
   561     </el1-none-langstring.10.0>
   567             'name' => 
'correctroot',
   568             'type' => Type::NULL,
   569             'marker_action' => Action::CREATE_OR_UPDATE,
   570             'marker_value' => 
'',
   573                     'name' => 
'el1-none-langstring.10.0',
   574                     'type' => Type::NULL,
   575                     'marker_action' => Action::CREATE_OR_UPDATE,
   576                     'marker_value' => 
'',
   580                             'type' => Type::STRING,
   581                             'marker_action' => Action::CREATE_OR_UPDATE,
   582                             'marker_value' => 
'some text',
   595             $result_set->getRoot()->exposeData()
   602 <?xml version=
"1.0"?>
   604     <el1-none-langstring.10.0>
   606     </el1-none-langstring.10.0>
   612             'name' => 
'correctroot',
   613             'type' => Type::NULL,
   614             'marker_action' => Action::CREATE_OR_UPDATE,
   615             'marker_value' => 
'',
   618                     'name' => 
'el1-none-langstring.10.0',
   619                     'type' => Type::NULL,
   620                     'marker_action' => Action::CREATE_OR_UPDATE,
   621                     'marker_value' => 
'',
   624                             'name' => 
'language',
   625                             'type' => Type::LANG,
   626                             'marker_action' => Action::CREATE_OR_UPDATE,
   627                             'marker_value' => 
'pl',
   640             $result_set->getRoot()->exposeData()
   647 <?xml version=
"1.0"?>
   649     <el1-
string>val1</el1-
string>
   651         <el2.1-non_neg_int-omitted.10.0>val2.1</el2.1-non_neg_int-omitted.10.0>
   652         <el2.2-duration>val2.2</el2.2-duration>
   659             'name' => 
'correctroot',
   660             'type' => Type::NULL,
   661             'marker_action' => Action::CREATE_OR_UPDATE,
   662             'marker_value' => 
'',
   665                     'name' => 
'el1-string',
   666                     'type' => Type::STRING,
   667                     'marker_action' => Action::CREATE_OR_UPDATE,
   668                     'marker_value' => 
'val1',
   672                     'name' => 
'el2-none',
   673                     'type' => Type::NULL,
   674                     'marker_action' => Action::CREATE_OR_UPDATE,
   675                     'marker_value' => 
'',
   678                             'name' => 
'el2.1-non_neg_int-omitted.10.0',
   679                             'type' => Type::NON_NEG_INT,
   683                             'name' => 
'el2.2-duration',
   685                             'marker_action' => Action::CREATE_OR_UPDATE,
   686                             'marker_value' => 
'val2.2',
   699             $result_set->getRoot()->exposeData()
   706 <?xml version=
"1.0"?>
   708     <el1-none-omitted.10.0>
   709         <el1.1-non_neg_int>val1.1</el1.1-non_neg_int>
   710         <el1.2-duration>val1.2</el1.2-duration>
   711     </el1-none-omitted.10.0>
   712     <el2-
string>val2</el2-
string>
   718             'name' => 
'correctroot',
   719             'type' => Type::NULL,
   720             'marker_action' => Action::CREATE_OR_UPDATE,
   721             'marker_value' => 
'',
   724                     'name' => 
'el1-none-omitted.10.0',
   725                     'type' => Type::NULL,
   729                     'name' => 
'el2-string',
   730                     'type' => Type::STRING,
   731                     'marker_action' => Action::CREATE_OR_UPDATE,
   732                     'marker_value' => 
'val2',
   743             $result_set->getRoot()->exposeData()
   750 <?xml version=
"1.0"?>
   752     <el1-
string-omitted.4.1.0>val1</el1-
string-omitted.4.1.0>
   758             'name' => 
'correctroot',
   759             'type' => Type::NULL,
   760             'marker_action' => Action::CREATE_OR_UPDATE,
   761             'marker_value' => 
'',
   764                     'name' => 
'el1-string-omitted.4.1.0',
   765                     'type' => Type::STRING,
   766                     'marker_action' => Action::CREATE_OR_UPDATE,
   767                     'marker_value' => 
'val1',
   778             $result_set->getRoot()->exposeData()
 
__construct()
Constructor setup ILIAS global object  public. 
 
$langstring
COMMON SUB-ELEMENTS. 
 
language()
 description: > Example for rendring a language glyph.