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 Requeridos¶
attributeName:
Nombre del AtributoattributeValue:
Valor de atributo
Descripción¶
Crea un atributo para un nodo XML. Ver también el 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 Requeridos¶
namespace:
El espacio de nombres del nodo.nodeName:
Nombre del nodoattributeSubelement:
Un subelemento: un valor, atributo o 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 Cualquier, un elemento XML correspondiente al 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 Requeridos¶
path:
Una expresión de ruta de referencia de cadena que selecciona un único 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
oSelectSingleNode
funciones.
Para ingresar una ruta a un nodo en la función para el path
parámetro, haga doble clic en la carpeta del nodo XML deseada para insertar su ruta calificada en la ubicación del cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodo XML.
Ejemplos¶
// Retrieves the name of a node
GetNodeName(SelectNodeFromXMLAny("Account", Root$Any.));
GetNodeValue
¶
Declaración¶
string GetNodeValue(type path)
Sintaxis¶
GetNodeValue(<path>)
Parámetros Requeridos¶
path:
Una expresión de ruta de referencia de cadena que selecciona un único 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
oSelectSingleNode
funciones.
Para ingresar una ruta a un nodo en la función para el path
parámetro, haga doble clic en la carpeta del nodo XML deseada para insertar su ruta calificada en la ubicación del cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodo XML.
Ejemplos¶
// 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 Requeridos¶
path:
Una expresión de ruta de referencia de cadena que selecciona un solo nodo en la transformación actual
Parámetros Opcionales¶
qualified:
Un valor booleano (predeterminadofalse
); cuando esté calificado (true
), la cadena XML devuelta es más fácil de leer pero puede que por sí sola no sea XML válida
Descripción¶
Devuelve (cuando se utiliza en una asignación del Generador de fórmulas) la cadena XML correspondiente que se encuentra en el documento XML de origen en la ruta especificada.
Para ingresar una ruta a un nodo en la función para el path
parámetro, haga doble clic en la carpeta del nodo XML deseada para insertar su ruta calificada en la ubicación del cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodo XML.
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 Requeridos¶
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 de Formula Builder) si el nodo XML correspondiente tiene el atributo "xsi:nil
"con el valor de true
(o 1).
Para ingresar una ruta a un nodo en la función para el path
parámetro, haga doble clic en la carpeta del nodo XML deseada para insertar su ruta calificada en la ubicación del cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodo XML.
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 Requeridos¶
xslt:
Una hoja de estilo XSLTxml1...xmlN:
Uno o más documentos XML
Descripción¶
Admite la ejecución de XSLT (v1-3) en varios documentos XML de entrada. Toma como entrada una hoja de estilo XSLT y uno o más documentos XML y devuelve una serie de documentos XML.
Ejemplos¶
// Running XSLT on XML Files
// Read in a stylesheet
xslt = ReadFile("<TAG>Sources/XSLT</TAG>");
// Read in two XML files for processing
xml1 = ReadFile("<TAG>Sources/XML1</TAG>");
xml2 = ReadFile("<TAG>Sources/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>Targets/XML Output FTP</TAG>",
output[i], "output" + (i+1) + ".xml");
i++;
);
Conceptos Específicos de Jitterbit¶
Usando una Transformación XSLT Existente¶
También es posible utilizar una transformación XLST existente como primer argumento para RunXSLT()
. Una transformación XLST se define como una entidad separada del secuencia de comandos y se puede reutilizar en múltiples secuencias de comandos y operaciones de transformación XLST. Debe ser una transformación XLST definida en el proyecto actual. Consulte las instrucciones sobre insertar elementos del proyecto.
// Runs an existing XSLT Transform, passing values
// using variables customers, salesPeople, salesOrders
mergedOut = RunXSLT("<TAG>XSLT Transforms/Merge Transform</TAG>",
customers, salesPeople, salesOrders);
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 aprobar los estándares de seguridad. Estas reglas significan que el acceso a archivos o URI siempre debe realizarse mediante el uso de fuentes y destinos definidos en el mismo proyecto.
Para hacer referencia a estos archivos o URI en una hoja de estilo, utilice el XLST fn:doc
funcionar y especificar 'param1'
para la primera entrada XML, 'param2'
para la segunda entrada XML, y así sucesivamente para cada archivo XML adicional.
Para este ejemplo, dado el ejemplo anterior de procesamiento de tres archivos XML (customers, salesPeople, salesOrders
), puedes hacer referencia a ellos en una hoja de estilo XSLT usando:
<xsl:for-each select="doc('param1')/*:Customers/*:SalesOrder[customer_external_id!=''][vendedor_persona_external_id!='']">
...
<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_persona_external_id!='']">
Si tiene un archivo XML de entrada única, no es necesario utilizar el doc('param1')
La sintaxis como Jitterbit establecerá el contexto inicial para ese único archivo.
Especificación de una Plantilla Inicial en la Hoja de Estilo¶
En algunas situaciones, Jitterbit necesita saber en qué parte de una hoja de estilo comenzar a procesar. 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="/">
SelectNodeFromXMLAny
¶
Declaración¶
type SelectNodeFromXMLAny(string nodeName, type anyNodes)
Sintaxis¶
SelectNodeFromXMLAny(<nodeName>, <anyNodes>)
Parámetros Requeridos¶
nodeName:
El nombre del nodo deseadoanyNodes:
La ruta del elemento de datos de un nodo de valor de un XML Cualquier elemento, 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 XML Cualquier nodo que coincida con el nombre del nodo.
Para ingresar una ruta a una matriz de nodos XML en la función para el anyNodes
parámetro, haga doble clic en la carpeta del nodo XML deseada para insertar su ruta calificada en la ubicación del cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodo XML.
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 Requeridos¶
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 XML Cualquier elemento
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 los prefijos opcionales se utilizan 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 XPath (consulte el segundo ejemplo).
Para ingresar una ruta a un nodo en la función para el node
parámetro, haga doble clic en la carpeta del nodo XML deseada para insertar su ruta calificada en la ubicación del cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodo XML.
Para admitir caracteres HTML, establezca jitterbit.decode.html.chars
a true
arriba en la cadena de esta función. Esta variable se admite con datos de cadena cuando se utilizan agentes 10.49 y posteriores.
Ejemplos¶
// 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" );
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:E2
no es el nodo de referencia en sí.
Desde los prefijos ns1
y ns2
se utilizan en la consultar XPath, 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 Requeridos¶
xPathQuery:
Una consultar XPathanyNodes:
La ruta del elemento de datos de un nodo de valor de un XML Cualquier elemento, 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 Cualquier o en una matriz de nodos XML.
Si los prefijos opcionales se utilizan 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 XPath (consulte el segundo ejemplo).
Para ingresar una ruta a una matriz de nodos XML en la función para el anyNodes
parámetro, haga doble clic en la carpeta del nodo XML deseada para insertar su ruta calificada en la ubicación del cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodo XML.
Ejemplos¶
// Select all the nodes with the given names
SelectNodesFromXMLAny("Account|Customer|Name", Root$Any#.);
// 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 Requeridos¶
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 XML Cualquier elemento
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 los prefijos opcionales se utilizan 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 XPath (consulte el segundo ejemplo).
Para ingresar una ruta a un nodo en la función para el node
parámetro, haga doble clic en la carpeta del nodo XML deseada para insertar su ruta calificada en la ubicación del cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodo XML.
Para admitir caracteres HTML, establezca jitterbit.decode.html.chars
a true
arriba en la cadena de esta función. Esta variable se admite con datos de cadena cuando se utilizan agentes 10.49 y posteriores.
Ejemplos¶
// 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");
// 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/");