Legato
Legato

GoFiler Legato Script Reference

 

Legato v 1.5d

Application v 5.25a

  

 

Chapter FiveGeneral Functions (continued)

GetTagAttributes Function

Overview

The GetTagAttributes function returns the attributes from an SGML style tag in the form of an array.

Syntax/Parameters

Syntax

string[] = GetTagAttributes ( string tag, [boolean case], [int limit] );

Parameters

tag

A string containing an SGML style tag

case

An optional boolean value. When non-zero or TRUE forces the case of the attribute keys to lower case. The default, FALSE, is not to adjust the attribute/key names.

limit

An optional int specifying a limit to the number of return array elements. The default value is 1,024 elements. The

Return Value

Returns a string array containing the key/data as names and attribute values or empty array on failure. Use the GetLastError function to retrieve error information. Note that if the array element limit is reached, or there is a problem with an attribute or property name, an error will be set but the array will contain all elements up to the point of the limit.

Remarks

This function is a “quick and dirty” method of retrieving SGML information from tags without the complexity of setting up an SGML element object or a DTD. Very little error and syntax checking is performed. To access the attributes, enumerate through the array and key names. Note that duplicate attributes will result in a single key name with the last data item present.

An example:

        string          aa[20];
        string          s1, s2, s3;
        int             ix, size;
        
        s1 = "<element p1='param_a' p2=param_b p3=\"param_c\" p4=D1234>";
        aa = GetTagAttributes(s1);
        size = ArrayGetAxisDepth(aa);
        ix = 0;
        while (ix < size) {
          s2 = aa[ix];
          s3 = ArrayGetKeyName(aa, ix);
          AddMessage("%3d  %-12s   %s", ix, s3, s2);
          ix++;
          }

This script will produce the following in the results log:

        0  p1             param_a
        1  p2             param_b
        2  p3             param_c
        3  p4             D1234

If the case of the attributes is unknown, the case parameter makes it easy to have predictable key names as lower case. For example, when used, the incoming attributes ‘HREF’ ‘href’ and ‘hRef’ will all be converted to the consistent key name ‘href’.

Attributes as QNames (XML ‘prefix:name’) are passed in to the key name intact as a complete name.

The empty elements designator, for example <abc a="1" b="2"/>, is ignored and not including in the array.

Attribute and property names must be valid array key names or they will be ignored and an error set. Resulting duplicate key names are ignored and an error set. In both cases, the remaining validly named items are added to the array.

The number of attributes is limited to 1,024. If there are more that this number, the function will fail with a ERROR_OVERFLOW error. If the receiving array is too small, a runtime error can occur. The returned number of elements can be limited using the limit parameter. This allows for smaller practical fixed arrays without a risk of a runtime error.

Related Functions

Platform Support

Go13, Go16, GoFiler Complete, GoFiler Corporate, GoFiler, GoFiler Lite, GoXBRL

Legato IDE, Legato Basic