Saltar al contenido

Funciones XML

Las funciones XML se utilizan normalmente en secuencias de comandos de mapeo de transformación que requieren la manipulación y el acceso a datos XML.

Attribute

Declaración

type Attribute(string attributeName, string attributeValue)

Sintaxis

Attribute(<attributeName>, <attributeValue>)

Parámetros Necesarios

  • attributeName: Nombre del atributo
  • attributeValue: Valor del atributo

Descripción

Crea un atributo para un nodo XML. Véase también CreateNode función.

Ejemplos

// Adds an attribute "name" with a value of "value"
Attribute("name","value");

CreateNode

Declaración

string CreateNode(string namespace, string nodeName, type attributeSubelement[,...])

Sintaxis

CreateNode(<namespace>, <nodeName>, <attributeSubelement>[,...])

Parámetros Necesarios

  • namespace: El espacio de nombres del nodo
  • nodeName: Nombre del nodo
  • attributeSubelement: Un subelemento: un valor, un atributo o un subnodo

Parámetros Opcionales

  • attributeSubelement: Subelementos adicionales (un valor, atributo o subnodo), según sea necesario

Descripción

Crea una cadena que representa un nodo XML. Si el nodo de destino es el nodo de valor de un nodo XML Any, se crea un elemento XML correspondiente al nodo nodeName y nodeValue se creará.

A partir del tercer argumento, se pueden especificar una serie de valores, atributos y subnodos. Los valores se especifican directamente. Los atributos y subnodos se pueden crear con el Attribute y CreateNode funciones respectivamente.

Ejemplos

// Creates a node with a sub-node
CreateNode("http://example.com/xml",
    "Contact", "Bill  G.", Attribute("Type", "VIP"),
    CreateNode("http://example.com/xml",
        "Title", "Manager")
    );

GetNodeName

Declaración

string GetNodeName(type path)

Sintaxis

GetNodeName(<path>)

Parámetros Necesarios

  • path: Una expresión de ruta de referencia de cadena que selecciona un solo nodo en la transformación actual o XML sin formato

Descripción

Recupera el nombre de un nodo. Este método se utiliza normalmente para recuperar el nombre de un nodo devuelto por cualquiera de los SelectNodeFromXMLAny o SelectSingleNode funciones.

Para introducir una ruta a un nodo en la función path para insertar un parámetro, arrastre y suelte la carpeta de nodos XML deseada desde la pestaña Objetos de origen de la paleta de componentes de secuencias de comandos hasta el secuencia de comandos para insertar su ruta calificada en la ubicación del cursor, o ingrese su ruta de referencia manualmente. Para obtener más información, consulte las instrucciones sobre insertar objetos de origen.

Ejemplos

// Retrieves the name of a node
GetNodeName(SelectNodeFromXMLAny("Account", Root$Any.));

GetNodeValue

Declaración

string GetNodeValue(type path)

Sintaxis

GetNodeValue(<path>)

Parámetros Necesarios

  • path: Una expresión de ruta de referencia de cadena que selecciona un solo nodo en la transformación actual o XML sin formato

Descripción

Recupera el valor de un nodo. Este método se utiliza normalmente para recuperar el valor de un nodo devuelto por cualquiera de los SelectNodeFromXMLAny o SelectSingleNode funciones.

Para introducir una ruta a un nodo en la función path para insertar un parámetro, arrastre y suelte la carpeta de nodos XML deseada desde la pestaña Objetos de origen de la paleta de componentes de secuencias de comandos hasta el secuencia de comandos para insertar su ruta calificada en la ubicación del cursor, o ingrese su ruta de referencia manualmente. Para obtener más información, consulte las instrucciones sobre insertar objetos de origen.

Ejemplos

Example 1
// XML definition
xmlInput = '<?xml version="1.0" encoding="UTF-8"?>
<root>
    <father>
        <child>
            <name>John Smith</name>
            <age>20</age>
        </child>
        <child>
            <name>Jordan Coleman</name>
            <age>32</age>
        </child>
        <child>
            <name>Joel Parker</name>
            <age>54</age>
        </child>
        <child>
            <name>Roger Wright</name>
            <age>28</age>
        </child>
    </father>
</root>';

// Retrieve the name of the second child:

exampleArray = GetNodeValue(SelectNodes(xmlInput, "/root/father/child[position() = 2]/name"));
result = exampleArray[0];
// Equals "Jordan Coleman"
Example 2
// Retrieves the value of a node
GetNodeValue(SelectNodeFromXMLAny("Account", Root$Any.));

GetXMLString

Declaración

string GetXMLString(type path[, bool qualified])

Sintaxis

GetXMLString(<path>[, <qualified>])

Parámetros Necesarios

  • path: Una expresión de ruta de referencia de cadena que selecciona un solo nodo en la transformación actual. La ruta definida debe ser para un nodo; los campos y atributos específicos se ignoran durante la evaluación de la ruta

Parámetros Opcionales

  • qualified: Un valor booleano (predeterminado) false); cuando esté calificado (true), la cadena XML devuelta es más fácil de leer, pero puede que no sea por sí misma un XML válido

Descripción

Devuelve (cuando se utiliza en una asignación de transformación ) la cadena XML correspondiente que se encuentra en el documento XML de origen en la ruta especificada.

Para introducir una ruta a un nodo en la función path para insertar un parámetro, arrastre y suelte la carpeta de nodos XML deseada desde la pestaña Objetos de origen de la paleta de componentes de secuencias de comandos hasta el secuencia de comandos para insertar su ruta calificada en la ubicación del cursor, o ingrese su ruta de referencia manualmente. Para obtener más información, consulte las instrucciones sobre insertar objetos de origen.

Nota

La ruta definida debe ser para un nodo; los campos y atributos específicos se ignoran durante la evaluación de la ruta.

Ejemplos

// Retrieves the corresponding XML string at the specified path
GetXMLString([Header$DETAIL.]);
// Retrieves the corresponding XML string at the specified path
GetXMLString([root$transaction.response$body$queryResponse$result$records.Case$Account$]);

IsNil

Declaración

bool IsNil(string path)

Sintaxis

IsNil(<path>)

Parámetros Necesarios

  • path: Una expresión de ruta de referencia de cadena que selecciona un solo nodo en la transformación actual

Descripción

Devuelve (cuando se utiliza en una asignación del Generador de fórmulas) si el nodo XML correspondiente tiene el atributo "xsi:nil" con el valor de true(o 1).

Para introducir una ruta a un nodo en la función path para insertar un parámetro, arrastre y suelte la carpeta de nodos XML deseada desde la pestaña Objetos de origen de la paleta de componentes de secuencias de comandos hasta el secuencia de comandos para insertar su ruta calificada en la ubicación del cursor, o ingrese su ruta de referencia manualmente. Para obtener más información, consulte las instrucciones sobre insertar objetos de origen.

Como se describe en Esquema XML, un elemento puede ser válido sin contenido si tiene el atributo xsi:nil con el valor true.

Ejemplos

// Returns if the node is nil
IsNil("Header$DETAIL.");

RunXSLT

Declaración

array RunXSLT(string xslt, string xml1[, string xml2,... string xmlN)

Sintaxis

RunXSLT(<xslt>, <xml1>[, <xml2>,... <xmlN>])

Parámetros Necesarios

  • xslt: Una ruta de referencia de cadena a una actividad asociada con un extremo de tipo de archivo en el proyecto actual que devuelve una hoja de estilo XSLT
  • xml1...xmlN: Una ruta de referencia de cadena a una actividad asociada con un extremo de tipo de archivo en la actividad actual proyecto que devuelve uno o más documentos XML

Descripción

Admite la ejecución de XSLT (v1-3) en una serie de documentos XML de entrada. Toma como entrada una hoja de estilo XSLT y uno o más documentos XML y devuelve una matriz de documentos XML.

xslt el parámetro utilizado en esta llamada de función debe definirse como una actividad asociada con un extremo de tipo de archivo en el proyecto actual que devuelve una hoja de estilo XSLT. xml1...xmlN los parámetros utilizados en esta llamada de función deben definirse como una o más actividades asociadas con extremos de tipo archivo en el proyecto actual que devuelven uno o más documentos XML. Estos incluyen actividades configuradas de uso compartido de archivos, FTP, HTTP, almacenamiento local y almacenamiento temporal. Para obtener más información, consulte las instrucciones sobre insertar extremos.

Hacer Referencia a Archivos Desde una Hoja de Estilo XSLT

Si bien Jitterbit tiene un amplio soporte para XSLT, los proyectos que utilizan XSLT deben seguir reglas para cumplir con los estándares de seguridad. Estas reglas implican que el acceso a archivos o URI debe realizarse siempre mediante el uso de actividades definidas en el mismo proyecto.

Para hacer referencia a estos archivos o URI en una hoja de estilo, utilice el formato XLST. fn:docfunción y especificar 'param1' para la primera entrada XML, 'param2'para la segunda entrada XML, y así sucesivamente para cada archivo XML adicional.

Dado el ejemplo de procesamiento de tres archivos XML (customers, salesPeople, salesOrders), puede hacer referencia a ellos en una hoja de estilo XSLT utilizando:

<xsl:for-each select="doc('param1')/*:Customers/*:SalesOrder[customer_external_id!=''][vendedor_id_externo!='']">
...
<xsl:for-each select="doc('param2')/*:SalesPeople/*:Account[*:customer_id/string(number(text()))=$CustomerExtId][1]">
...
<xsl:for-each select="doc('param3')/*:SalesOrders/*:SalesOrder[customer_external_id!=''][vendedor_id_externo!='']">

Si tiene un solo archivo XML de entrada, no es necesario utilizar el doc('param1') La sintaxis como Jitterbit establecerá el contexto inicial en ese único archivo.

Especificación de una Modelo de Inicio en la Hoja de Estilos

En algunas situaciones, Jitterbit necesita saber en qué parte de una hoja de estilo debe comenzar el procesamiento. Esto se logra incluyendo en la hoja de estilo una modelo con el nombre específico de start_here:

<xsl:template name="start_here" match="/">

Ejemplos

// Running XSLT on XML Files

// Read in a stylesheet
xslt = ReadFile("<TAG>activity:ftp/FTP Endpoint/ftp_read/XSLT</TAG>");

// Read in two XML files for processing
xml1 = ReadFile("<TAG>activity:ftp/FTP Endpoint/ftp_read/XML1</TAG>");
xml2 = ReadFile("<TAG>activity:ftp/FTP Endpoint/ftp_read/XML2</TAG>");

// RunXSLT on the stylesheet and the two XML files
output = RunXSLT(xslt, xml1, xml2);

// As RunXSLT() returns an array,
// retrieve the output from each element
i = 0;
While(i < Length(output),
  // Write output to a file
  WriteFile("<TAG>activity:ftp/FTP Endpoint/ftp_write/XML Output FTP</TAG>",
    output[i], "output" + (i+1) + ".xml");
  i++;
);

SelectNodeFromXMLAny

Declaración

type SelectNodeFromXMLAny(string nodeName, type anyNodes)

Sintaxis

SelectNodeFromXMLAny(<nodeName>, <anyNodes>)

Parámetros Necesarios

  • nodeName: El nombre del nodo deseado
  • anyNodes: La ruta del elemento de datos de un nodo de valor de un elemento XML, una expresión de ruta de referencia de cadena a una matriz de nodos XML en la transformación actual o XML sin formato

Descripción

Devuelve el primer nodo XML de una lista de nodos XML Any que coinciden con el nombre del nodo.

Para introducir una ruta a una matriz de nodos XML en la función anyNodes para insertar un parámetro, arrastre y suelte la carpeta de nodos XML deseada desde la pestaña Objetos de origen de la paleta de componentes de secuencias de comandos hasta el secuencia de comandos para insertar su ruta calificada en la ubicación del cursor, o ingrese su ruta de referencia manualmente. Para obtener más información, consulte las instrucciones sobre insertar objetos de origen.

Ejemplos

// Looks for the first node that matches "Account"
SelectNodeFromXMLAny("Account", Root$Any#.);

SelectNodes

Declaración

array SelectNodes(type node, string xPathQuery[, string xPathArg1,... string xPathArgN])

Sintaxis

SelectNodes(<node>, <xPathQuery>[, <xPathArg1>,... <xPathArgN>])

Parámetros Necesarios

  • node: Una expresión de ruta de referencia de cadena al nodo deseado en la transformación actual, un fragmento XML para ejecutar la consultar o XML sin formato
  • xPathQuery: La ruta del elemento de datos de un nodo de valor de un elemento XML Any

Parámetros Opcionales

  • xPathArg1...xPathArgN: Prefijos que especifican los espacios de nombres de los nodos en la consultar XPath

Descripción

Ejecuta una consultar XPath (consulte el estándar XPath, v1-v3) en un fragmento XML o en un nodo XML devuelto por otra función y devuelve los resultados de la consultar.

Si se utilizan los prefijos opcionales para especificar los espacios de nombres del nodo en la consultar XPath, los prefijos deben especificarse como uno o más argumentos de cadena después de la XPath (consulte el segundo ejemplo).

Para introducir una ruta a un nodo en la función node para insertar un parámetro, arrastre y suelte la carpeta de nodos XML deseada desde la pestaña Objetos de origen de la paleta de componentes de secuencias de comandos hasta el secuencia de comandos para insertar su ruta calificada en la ubicación del cursor, o ingrese su ruta de referencia manualmente. Para obtener más información, consulte las instrucciones sobre insertar objetos de origen.

Para admitir caracteres HTML, configure jitterbit.decode.html.chars a true arriba en la cadena de esta función. Esta variable es compatible con datos de cadena cuando se utilizan agentes de la versión 10.49 y posteriores.

Ejemplos

Example 1
// XML definition
xmlInput = '<?xml version="1.0" encoding="UTF-8"?>
<root>
    <father>
        <child>
            <name>John Smith</name>
            <age>20</age>
        </child>
        <child>
            <name>Jordan Coleman</name>
            <age>32</age>
        </child>
        <child>
            <name>Joel Parker</name>
            <age>54</age>
        </child>
        <child>
            <name>Roger Wright</name>
            <age>28</age>
        </child>
    </father>
</root>';

// Retrieve all the XML nodes that match the XPath query:

SelectNodes(xmlInput, "/root/father/child");
// Returns {"<child> <name>John Smith</name> <age>20</age> </child>","<child> <name>Jordan Coleman</name> <age>32</age> </child>","<child> <name>Joel Parker</name> <age>54</age> </child>","<child> <name>Roger Wright</name> <age>28</age> </child>"}

// Retrieve a range of nodes using a position argument with the XPath query:

SelectNodes(xmlInput, "/root/father/child[position() > 2 and position() <= 4]");
// Returns {"<child> <name>Joel Parker</name> <age>54</age> </child>","<child> <name>Roger Wright</name> <age>28</age> </child>"}
Example 2
// XML definition with root namespace
xmlInput = '<?xml version="1.0" encoding="UTF-8"?>
<ns0:root xmlns:ns0="urn:ean.ucc:align:2">
    <father>
        <child>
            <name>John Smith</name>
            <age>20</age>
        </child>
        <child>
            <name>Jordan Coleman</name>
            <age>32</age>
        </child>
        <child>
            <name>Joel Parker</name>
            <age>54</age>
        </child>
        <child>
            <name>Roger Wright</name>
            <age>28</age>
        </child>
    </father>
</ns0:root>';

// Retrieve all the XML nodes that match the XPath query with a namespace considered:

SelectNodes(xmlInput, "/ns0:root/father/child", "ns0=urn:ean.ucc:align:2");
// Returns {"<child> <name>John Smith</name> <age>20</age> </child>","<child> <name>Jordan Coleman</name> <age>32</age> </child>","<child> <name>Joel Parker</name> <age>54</age> </child>","<child> <name>Roger Wright</name> <age>28</age> </child>"}
Example 3
// Connects to an LDAP server, runs a search,
// and then runs an XPath query on the results
LDAPConnect("directory.company.example.com","ghvwright","1LikesPe@ches",0);
searchResults = LDAPSearch("CN=Users,DC=company,DC=example,DC=com",
    "(&(objectCategory=person)(objectClass=user))", 1,
    "name", "whenCreated", "description", "telephoneNumber");
resultNodes = SelectNodes(searchResults,
    "/DirectoryResults/Entry[name='Administrator']/whenCreated" );
Example 4
SelectNodes(Root$Any$,
    "ns1:E2/ns2:E3",
    "ns1=http://xyz1.example.com/",
    "ns2=http://xyz2.example.com/");

Nota

En este segundo ejemplo, el nodo de referencia es un nodo XML para un nodo XML Any. En la consultar XPath, ns1:E2no es el nodo de referencia en sí.

Dado que los prefijos ns1 y ns2 se utilizan en la consultar XPath y se definen como argumentos adicionales después de XPath.

SelectNodesFromXMLAny

Declaración

array SelectNodesFromXMLAny(string xPathQuery, type anyNodes[, string xPathArg1,... string xPathArgN])

Sintaxis

SelectNodesFromXMLAny(<xPathQuery>, <anyNodes>[, <xPathArg1>,... <xPathArgN>])

Parámetros Necesarios

  • xPathQuery: Una consultar XPath
  • anyNodes: La ruta del elemento de datos de un nodo de valor de un elemento XML, una expresión de ruta de referencia de cadena a una matriz de nodos XML en la transformación actual o XML sin formato

Parámetros Opcionales

  • xPathArg1...xPathArgN: Prefijos que especifican los espacios de nombres de los nodos en la consultar XPath

Descripción

Devuelve una matriz de todos los nodos XML que coinciden con una consultar XPath (consulte el estándar XPath, v1-v3) se ejecuta en una ruta de un nodo de valor de un elemento XML Any o en una matriz de nodos XML.

Si se utilizan los prefijos opcionales para especificar los espacios de nombres del nodo en la consultar XPath, los prefijos deben especificarse como uno o más argumentos de cadena después de la XPath (consulte el segundo ejemplo).

Para introducir una ruta a una matriz de nodos XML en la función anyNodes para insertar un parámetro, arrastre y suelte la carpeta de nodos XML deseada desde la pestaña Objetos de origen de la paleta de componentes de secuencias de comandos hasta el secuencia de comandos para insertar su ruta calificada en la ubicación del cursor, o ingrese su ruta de referencia manualmente. Para obtener más información, consulte las instrucciones sobre insertar objetos de origen.

Ejemplos

Example 1
// Select all the nodes with the given names
SelectNodesFromXMLAny("Account|Customer|Name", Root$Any#.);
Example 2
// Select email addresses and phone numbers only
$nodes = SelectNodesFromXMLAny("cust:EmailAddress|cust:PhoneNumber",
    Customer$Any#., "cust=urn:xmlns:25hoursaday-com:customer");

SelectSingleNode

Declaración

type SelectSingleNode(type node, string xPath,...)

Sintaxis

SelectSingleNode(<node>, <xPath>,...)

Parámetros Necesarios

  • node: Una expresión de ruta de referencia de cadena al nodo deseado en la transformación actual, un fragmento XML para ejecutar la consultar o XML sin formato

  • xPathQuery: La ruta del elemento de datos de un nodo de valor de un elemento XML Any

Parámetros Opcionales

  • xPathArg1...xPathArgN: Prefijos que especifican los espacios de nombres de los nodos en la consultar XPath

Descripción

Ejecuta una consultar XPath (consulte el estándar XPath, v1-v3) en un fragmento XML o en un nodo XML devuelto por otra función y devuelve el primer nodo en los resultados de la consultar.

Si se utilizan los prefijos opcionales para especificar los espacios de nombres del nodo en la consultar XPath, los prefijos deben especificarse como uno o más argumentos de cadena después de la XPath (consulte el segundo ejemplo).

Para introducir una ruta a un nodo en la función node para insertar un parámetro, arrastre y suelte la carpeta de nodos XML deseada desde la pestaña Objetos de origen de la paleta de componentes de secuencias de comandos hasta el secuencia de comandos para insertar su ruta calificada en la ubicación del cursor, o ingrese su ruta de referencia manualmente. Para obtener más información, consulte las instrucciones sobre insertar objetos de origen.

Para admitir caracteres HTML, configure jitterbit.decode.html.chars a true arriba en la cadena de esta función. Esta variable es compatible con datos de cadena cuando se utilizan agentes de la versión 10.49 y posteriores.

Ejemplos

Example 1
// XML definition
xmlInput = '<?xml version="1.0" encoding="UTF-8"?>
<root>
    <father>
        <child>
            <name>John Smith</name>
            <age>20</age>
        </child>
        <child>
            <name>Jordan Coleman</name>
            <age>32</age>
        </child>
        <child>
            <name>Joel Parker</name>
            <age>54</age>
        </child>
        <child>
            <name>Roger Wright</name>
            <age>28</age>
        </child>
    </father>
</root>';

// Retrieve the first matching node given an XPath query:

SelectSingleNode(xmlInput, "/root/father/child");
// Returns <child> <name>John Smith</name> <age>20</age> </child>
Example 2
// Connects to an LDAP server, runs a search,
// runs an XPath query on the results, and
// selects the first node in the query results
LDAPConnect("directory.company.example.com", "ghvwright", "1LikesPe@ches", 0);
searchResults = LDAPSearch("CN=Users,DC=company,DC=example,DC=com",
    "(&(objectCategory=person)(objectClass=user))", 1, "name",
    "whenCreated", "description", "telephoneNumber");
resultNode = SelectSingleNode(searchResults,
    "/DirectoryResults/Entry[name='Administrator']/whenCreated");
Example 3
// Selects the first node in an XPath query result.
// The reference node is an XML node for an XML Any node.
// In the XPath query, "ns1:E2" is not the reference node itself.
// Since the prefixes ns1 and ns2 are used in the XPath query,
// they are defined as additional arguments after the XPath.
SelectSingleNode(Root$Any$,
    "ns1:E2/ns2:E3",
    "ns1=http://xyz1.example.com",
    "ns2=http://xyz2.example.com/");