Funções XML¶
As funções XML são normalmente usadas em scripts de mapeamento de transformação que exigem a manipulação e acesso de dados XML.
Attribute
¶
Declaração¶
type Attribute(string attributeName, string attributeValue)
Sintaxe¶
Attribute(<attributeName>, <attributeValue>)
Parâmetros Obrigatórios¶
attributeName:
Nome do AtributoattributeValue:
Valor do atributo
Descrição¶
Cria um atributo para um nó XML. Veja também o CreateNode
função.
Exemplos¶
// Adds an attribute "name" with a value of "value"
Attribute("name","value");
CreateNode
¶
Declaração¶
string CreateNode(string namespace, string nodeName, type attributeSubelement[,...])
Sintaxe¶
CreateNode(<namespace>, <nodeName>, <attributeSubelement>[,...])
Parâmetros Obrigatórios¶
namespace:
O namespace do nónodeName:
Nome do nóattributeSubelement:
Um subelemento: um valor, atributo ou subnó
Parâmetros Opcionais¶
attributeSubelement:
Subelementos adicionais (um valor, atributo ou subnó), conforme necessário
Descrição¶
Cria uma string que representa um nó XML. Se o nó de destino for o nó de valor de um nó XML Any, um elemento XML correspondente ao nodeName
e nodeValue
Será criado.
A partir do terceiro argumento, uma série de valores, atributos e subnós podem ser especificados. Os valores são especificados diretamente. Atributos e subnós podem ser criados com o Attribute
e CreateNode
funções respectivamente.
Exemplos¶
// 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
¶
Declaração¶
string GetNodeName(type path)
Sintaxe¶
GetNodeName(<path>)
Parâmetros Obrigatórios¶
path:
Uma expressão de caminho de referência de string que seleciona um único nó na transformação atual ou XML bruto
Descrição¶
Recupera o nome de um nó. Este método é normalmente usado para recuperar o nome de um nó retornado por qualquer um dos SelectNodeFromXMLAny
ouSelectSingleNode
funções.
Para inserir um caminho para um nó na função do path
parâmetro, clique duas vezes na pasta do nó XML desejada para inserir seu caminho qualificado no local do cursor. Para obter mais informações, consulte as instruções sobre inserir caminhos de nós XML.
Exemplos¶
// Retrieves the name of a node
GetNodeName(SelectNodeFromXMLAny("Account", Root$Any.));
GetNodeValue
¶
Declaração¶
string GetNodeValue(type path)
Sintaxe¶
GetNodeValue(<path>)
Parâmetros Obrigatórios¶
path:
Uma expressão de caminho de referência de string que seleciona um único nó na transformação atual ou XML bruto
Descrição¶
Recupera o valor de um nó. Este método é normalmente usado para recuperar o valor de um nó retornado por qualquer um dos SelectNodeFromXMLAny
ouSelectSingleNode
funções.
Para inserir um caminho para um nó na função do path
parâmetro, clique duas vezes na pasta do nó XML desejada para inserir seu caminho qualificado no local do cursor. Para obter mais informações, consulte as instruções sobre inserir caminhos de nós XML.
Exemplos¶
// Retrieves the value of a node
GetNodeValue(SelectNodeFromXMLAny("Account", Root$Any.));
GetXMLString
¶
Declaração¶
string GetXMLString(type path[, bool qualified])
Sintaxe¶
GetXMLString(<path>[, <qualified>])
Parâmetros Obrigatórios¶
path:
Uma expressão de caminho de referência de string que seleciona um único nó na transformação atual
Parâmetros Opcionais¶
qualified:
Um valor booleano (padrãofalse
); quando qualificado (true
), a string XML retornada é mais fácil de ler, mas pode não ser um XML válido por si só
Descrição¶
Retorna (quando usado em um mapeamento do Formula Builder) a sequência XML correspondente encontrada no documento XML de origem no caminho especificado.
Para inserir um caminho para um nó na função do path
parâmetro, clique duas vezes na pasta do nó XML desejada para inserir seu caminho qualificado no local do cursor. Para obter mais informações, consulte as instruções sobre inserir caminhos de nós XML.
Exemplos¶
// 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
¶
Declaração¶
bool IsNil(string path)
Sintaxe¶
IsNil(<path>)
Parâmetros Obrigatórios¶
path:
Uma expressão de caminho de referência de string que seleciona um único nó na transformação atual
Descrição¶
Retorna (quando usado em um mapeamento do Formula Builder) se o nó XML correspondente possui o atributo "xsi:nil
"com o valor de true
(ou 1).
Para inserir um caminho para um nó na função do path
parâmetro, clique duas vezes na pasta do nó XML desejada para inserir seu caminho qualificado no local do cursor. Para obter mais informações, consulte as instruções sobre inserir caminhos de nós XML.
Conforme descrito em Esquema XML, um elemento pode ser válido sem conteúdo se tiver o atributo xsi:nil
com o valor true
.
Exemplos¶
// Returns if the node is nil
IsNil("Header$DETAIL.");
RunXSLT
¶
Declaração¶
array RunXSLT(string xslt, string xml1[, string xml2,... string xmlN)
Sintaxe¶
RunXSLT(<xslt>, <xml1>[, <xml2>,... <xmlN>])
Parâmetros Obrigatórios¶
xslt:
Uma folha de estilo XSLTxml1...xmlN:
Um ou mais documentos XML
Descrição¶
Suporta execução de XSLT (v1-3) em vários documentos XML de entrada. Recebe como entrada uma folha de estilo XSLT e um ou mais documentos XML e retorna uma matriz de documentos XML.
Exemplos¶
// 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++;
);
Conceitos Específicos do Jitterbit¶
Usando uma Transformação XSLT Existente¶
Também é possível usar uma Transformada XLST existente como primeiro argumento para RunXSLT()
. Uma transformação XLST é definida como uma entidade separada do script e pode ser reutilizada em vários scripts e operações de transformação XLST. Esta deve ser uma transformação XLST definida no projeto atual. Veja as instruções em inserir itens do projeto.
// Runs an existing XSLT Transform, passing values
// using variables customers, salesPeople, salesOrders
mergedOut = RunXSLT("<TAG>XSLT Transforms/Merge Transform</TAG>",
customers, salesPeople, salesOrders);
Referindo-se a Arquivos em uma Folha de Estilo XSLT¶
Embora o Jitterbit tenha amplo suporte para XSLT, os projetos que usam XSLT devem seguir regras para passar nos padrões de segurança. Estas regras significam que o acesso a arquivos ou URIs deve ser sempre através da utilização de fontes e destinos definidos no mesmo projeto.
Para fazer referência a esses arquivos ou URIs em uma folha de estilo, use o XLST fn:doc
funcionar e especificar 'param1'
para a primeira entrada XML, 'param2'
para a segunda entrada XML e assim por diante para cada arquivo XML adicional.
Para este exemplo, dado o exemplo anterior de processamento de três arquivos XML (customers, salesPeople, salesOrders
), você poderia consultá-los em uma folha de estilo XSLT usando:
<xsl:for-each select="doc('param1')/*:Customers/*:SalesOrder[customer_external_id!=''][sales_person_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!=''][sales_person_external_id!='']">
Se você tiver um único arquivo XML de entrada, não será necessário usar o doc('param1')
sintaxe, pois o Jitterbit definirá o contexto inicial para esse único arquivo.
Especificando um Modelo Inicial na Folha de Estilo¶
Em algumas situações, o Jitterbit precisa saber onde iniciar o processamento em uma folha de estilo. Isto é conseguido incluindo na folha de estilo um modelo com o nome específico de start_here
:
<xsl:template name="start_here" match="/">
SelectNodeFromXMLAny
¶
Declaração¶
type SelectNodeFromXMLAny(string nodeName, type anyNodes)
Sintaxe¶
SelectNodeFromXMLAny(<nodeName>, <anyNodes>)
Parâmetros Obrigatórios¶
nodeName:
O nome do nó desejadoanyNodes:
O caminho do elemento de dados de um nó de valor de um elemento XML Qualquer, uma expressão de caminho de referência de string para uma matriz de nós XML na transformação atual ou XML bruto
Descrição¶
Retorna o primeiro nó XML de uma lista de nós XML Any que correspondem ao nome do nó.
Para inserir um caminho para uma matriz de nós XML na função do anyNodes
parâmetro, clique duas vezes na pasta do nó XML desejada para inserir seu caminho qualificado no local do cursor. Para obter mais informações, consulte as instruções sobre inserir caminhos de nós XML.
Exemplos¶
// Looks for the first node that matches "Account"
SelectNodeFromXMLAny("Account", Root$Any#.);
SelectNodes
¶
Declaração¶
array SelectNodes(type node, string xPathQuery[, string xPathArg1,... string xPathArgN])
Sintaxe¶
SelectNodes(<node>, <xPathQuery>[, <xPathArg1>,... <xPathArgN>])
Parâmetros Obrigatórios¶
node:
Uma expressão de caminho de referência de string para o nó desejado na transformação atual, um fragmento XML para executar a consultar ou XML brutoxPathQuery:
O caminho do elemento de dados de um nó de valor de um elemento XML Any
Parâmetros Opcionais¶
xPathArg1...xPathArgN:
Prefixos especificando os namespaces dos nós na consultar XPath
Descrição¶
Executa uma consultar XPath (consulte o padrão XPath, v1-v3) em um fragmento XML ou em um nó XML retornado de outra função e retorna os resultados da consultar.
Se os prefixos opcionais forem usados para especificar os namespaces do nó na consultar XPath, os prefixos deverão ser especificados como um ou mais argumentos de string após o XPath (veja o segundo exemplo).
Para inserir um caminho para um nó na função do node
parâmetro, clique duas vezes na pasta do nó XML desejada para inserir seu caminho qualificado no local do cursor. Para obter mais informações, consulte as instruções sobre inserir caminhos de nós XML.
Para suportar caracteres HTML, defina jitterbit.decode.html.chars
para true
a acima na cadeia desta função. Esta variável é suportada com dados de string ao usar agentes 10.49 e posteriores.
Exemplos¶
// 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
Neste segundo exemplo, o nó de referência é um nó XML para um nó XML Any. Na consultar XPath, ns1:E2
não é o próprio nó de referência.
Já que os prefixos ns1
e ns2
são usados na consultar XPath, eles são definidos como argumentos adicionais após o XPath.
SelectNodesFromXMLAny
¶
Declaração¶
array SelectNodesFromXMLAny(string xPathQuery, type anyNodes[, string xPathArg1,... string xPathArgN])
Sintaxe¶
SelectNodesFromXMLAny(<xPathQuery>, <anyNodes>[, <xPathArg1>,... <xPathArgN>])
Parâmetros Obrigatórios¶
xPathQuery:
Uma consultar XPathanyNodes:
O caminho do elemento de dados de um nó de valor de um elemento XML Qualquer, uma expressão de caminho de referência de string para uma matriz de nós XML na transformação atual ou XML bruto
Parâmetros Opcionais¶
xPathArg1...xPathArgN:
Prefixos especificando os namespaces dos nós na consultar XPath
Descrição¶
Retorna uma matriz de todos os nós XML que correspondem a uma consultar XPath (consulte o padrão XPath, v1-v3) executado em um caminho de um nó de valor de um elemento XML Any ou em uma matriz de nós XML.
Se os prefixos opcionais forem usados para especificar os namespaces do nó na consultar XPath, os prefixos deverão ser especificados como um ou mais argumentos de string após o XPath (veja o segundo exemplo).
Para inserir um caminho para uma matriz de nós XML na função do anyNodes
parâmetro, clique duas vezes na pasta do nó XML desejada para inserir seu caminho qualificado no local do cursor. Para obter mais informações, consulte as instruções sobre inserir caminhos de nós XML.
Exemplos¶
// 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
¶
Declaração¶
type SelectSingleNode(type node, string xPath,...)
Sintaxe¶
SelectSingleNode(<node>, <xPath>,...)
Parâmetros Obrigatórios¶
node:
Uma expressão de caminho de referência de string para o nó desejado na transformação atual, um fragmento XML para executar a consultar ou XML brutoxPathQuery:
O caminho do elemento de dados de um nó de valor de um elemento XML Any
Parâmetros Opcionais¶
xPathArg1...xPathArgN:
Prefixos especificando os namespaces dos nós na consultar XPath
Descrição¶
Executa uma consultar XPath (consulte o padrão XPath, v1-v3) em um fragmento XML ou em um nó XML retornado de outra função e retorna o primeiro nó nos resultados da consultar.
Se os prefixos opcionais forem usados para especificar os namespaces do nó na consultar XPath, os prefixos deverão ser especificados como um ou mais argumentos de string após o XPath (veja o segundo exemplo).
Para inserir um caminho para um nó na função do node
parâmetro, clique duas vezes na pasta do nó XML desejada para inserir seu caminho qualificado no local do cursor. Para obter mais informações, consulte as instruções sobre inserir caminhos de nós XML.
Para suportar caracteres HTML, defina jitterbit.decode.html.chars
para true
a acima na cadeia desta função. Esta variável é suportada com dados de string ao usar agentes 10.49 e posteriores.
Exemplos¶
// 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/");