Resolving XML Dynamically with Embedded Expressions

When working with XML, you can use embedded expressions as a shorthand means to resolve or change element and attribute values. You can use the {} (curly braces) operator to enclose an expression that should be evaluated before the entire string is converted to XML for assignment to a variable. The ECMAScript in the following example restructures the XML in the xmlEmployees variable so that the id value is no longer stored in a child element of <employee>, but in an id attribute of that element.

    /* Declare an XML variable with a literal XML value. */
    var xmlEmployees = <employees>
        <employee>
            <id>111111111</id>
            <firstname>John</firstname>
            <lastname>Walton</lastname>
            <age>25</age>
        </employee>
        <employee>
            <id>222222222</id>
            <firstname>Sue</firstname>
            <lastname>Day</lastname>
            <age>32</age>
        </employee>
    </employees>;
    /*
     * Loop through the list of employees, restructuring the <employee> element
     * to make the id element an attribute of the <employee> element.
     */
    for(e in xmlEmployees..employee){
        var newStructure =
            <employee ssn={e.id}>
                <first_name>{e.firstname}</first_name>
                <last_name>{e.lastname}</last_name>
                <age>{e.age}</age>
            </employee>;
    }

Note that while you can also use {} to dynamically resolve element names, the value between {} may not be an empty string. For example, this is illegal: <{}>someValue</{}>.

Related Topics

Summary of ECMAScript Language Extensions