149 | | |
150 | | ==== Open questions ==== |
151 | | * Using new namespace? |
152 | | * Allowed syntax? |
| 149 | == Third solution (supported in CMDI 1.2) == |
| 150 | (Based on solution 2) |
| 151 | The CMD general component schema is extended with one additional (optional) attribute (AutoValue) for the elements and attributes specification. This attribute contains the function that is used to generate the content of the element/attribute. |
| 152 | |
| 153 | The supported attribute only provides a kind of "hook" to extend CMDI components with a derivation functionality. There will be no concrete specification of supported functions, syntax or of the mechanism to reference content of other elements. The specific implementation is up to the community and not part of the CMDI 1.2 specification process. |
| 154 | |
| 155 | |
| 156 | ==== Pros ==== |
| 157 | * allows to add derivation functionality to CMDI 1.2 components without determining functionality or expressiveness |
| 158 | * no need for immediate changes in the CMDI infrastructure |
| 159 | |
| 160 | ==== Cons ==== |
| 161 | * as derivation functionality is based on components this solution does not guarantee that referenced nodes do exist (usage of a component in various contexts or when refering to optional elements). This is especially important for derivation of values depending on component-external elements. In this case the editor should notify the user of this problem. |
| 162 | |
| 163 | ==== Centre impact ==== |
| 164 | There is no need for immediate changes in the infrastructure. When there is an agreement on the concrete implementation the following tools should support it: |
| 165 | |
| 166 | * Affected tools |
| 167 | * Infrastructure |
| 168 | * Component Registry |
| 169 | * Editors |
| 170 | * Arbil |
| 171 | * ProForma |
| 172 | * Viewers |
| 173 | * |
| 174 | * Impact on instances |
| 175 | |
| 176 | === Implementation examples === |
| 177 | The specification of CMDI elements and attributes is extended by one optional attribute (AutoValue (xs:string)). |
| 178 | {{{ |
| 179 | <!-- list of all attributes that can be bound to a cl_el --> |
| 180 | <xs:attributeGroup name="clarin_element_attributes"> |
| 181 | <xs:attribute name="name" type="xs:Name" use="required"> |
| 182 | <xs:annotation> |
| 183 | <xs:documentation>The name of the element.</xs:documentation> |
| 184 | </xs:annotation> |
| 185 | </xs:attribute> |
| 186 | ... |
| 187 | <xs:attribute name="AutoValue" type="xs:string"> |
| 188 | <xs:annotation> |
| 189 | <xs:documentation>A function that is used to derive the content of this element based on external information.</xs:documentation> |
| 190 | </xs:annotation> |
| 191 | </xs:attribute> |
| 192 | </xs:attributeGroup> |
| 193 | }}} |
| 194 | and similar for Attribute specifications |
| 195 | |
| 196 | ==== Implementation on component model level ==== |
| 197 | Example (just for illustration purposes, used syntax and functions are not part of the specification): |
| 198 | {{{ |
| 199 | <CMD_Element name="AgeOfFile" AutoValue="$CurrentDate-date({../CreationDate})"/> |
| 200 | }}} |
| 201 | |
| 202 | |
| 203 | |
| 204 | |
| 205 | |
| 206 | |
| 207 | |