Christian Castelli
a- a+

XML e ColdFusion : XmlTransform()

COLDFUSION E XML

XmlTransform()

La funzione XmlTransform() viene usata per trasformare un documento XML attraverso fogli di stile XSLT. Questa funzione ritorna una stringa contenente il risultato di tale trasformazione. La funzione ha i seguenti parametri, mostrati nella tabella qui sotto:

I parametri di XmlTransform()

Parametro

Descrizione

xml Obbligatorio. Può assumere uno dei seguenti valori:
  • una stringa XML;
  • un oggetto rappresentante un documento XML.
xsl Obbligatorio. Può assumere uno dei seguenti valori:
  • una stringa XML;
  • un percorso assoluto o un URL ad un foglio di stile XSLT.
parameters Opzionale. Rappresenta una struttura conenete le coppie nome-valore che rimandano ai parametri definiti nel documento XSLT. Le proprietà della struttura devono essere aggiunte tramite la funzione StructInsert().

Per illustrarne le funzionalità, useremo i seguenti documenti XML e XSLT:

Es.4: George.xml

<?xml version="1.0" encoding="iso-8859-1"?>
  <Name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="Name.xsd" Title="President">
   <FirstName>George</FirstName>
   <LastName>Washington</LastName>
  </Name>

<a href="/img/22/iframe_CF_xml4.html" title= "Vedi esempio">Vedi codice</a>;

 

Es.5: Name.xsl

<?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:param name="bgcolor" select="'white'"/>
   <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
   <xsl:template match="/">
     <html>
      <head>
       <title>
        <xsl:value-of select="Name/@Title"/>
        <xsl:text> </xsl:text>
        <xsl:value-of select="Name/FirstName"/>
        <xsl:text> </xsl:text>
        <xsl:value-of select="Name/LastName"/>
       </title>
      </head>
      <body bgcolor="{$bgcolor}">
       <h1>
        <xsl:value-of select="Name/@Title"/>
        <xsl:text> </xsl:text>
        <xsl:value-of select="Name/FirstName"/>
        <xsl:text> </xsl:text>
        <xsl:value-of select="Name/LastName"/></h1>
      </body>
     </html>
   </xsl:template>
  </xsl:stylesheet>

 

<a href="/img/22/iframe_CF_xml5.html" title= "Vedi esempio">Vedi codice</a>;

 

Si noti che Name.xsl accetta un parametro bgcolor, che viene usato per settare il colore dello sfondo della pagina. Il seguente file ColdFusion trasformerà George.xml attraverso il documento Name.xsl.

Es.6: XmlTransform.cfm

<cffile action="read" variable="strXML" file="#ExpandPath('George.xml')#">
  <cfset PathToXslt = ExpandPath("Name.xsl")>
  <cfset params = StructNew()>
  <cfset StructInsert(params,"bgcolor" ,"silver")>
  <cfoutput>#XmlTransform(strXML,PathToXslt,params)#</cfoutput>

 

<a href="/img/22/iframe_CF_xml6.html" title= "Vedi esempio">Vedi codice</a>;

 

Si noti che dobbiamo leggere il file XML e memorizzarla in una stringa attraverso <cffile> prima di passarla a XmlTransform(), che non può accettare come argomento il percorso ad un file XML. Il codice HTML risultante sarà il seguente:

<?xml version="1.0" encoding="UTF-8" ?>
<html>
<head>
<title>President George Washington</title>
</head>
<body bgcolor="silver">
<h1>President George Washington</h1>
</body>
</html>

La pagina apparirà così nel vostro browser:

XmlTransform()
Fig 2: risultato dell'esempio 6


XmlFormat()

La funzione XmlFormat() viene usata per effettuare l'escaping dei caratteri speciali in modo tale da poterli visualizzare correttamente nel browser. Per esempio il carattere < diventa &lt;. L'esempio seguente mostra come potremmo rappresentare il codice risultante dalla trasformazione che avevamo fatto nella finestra del browser.

Es. 7: XmlFormat.cfm

<cffile action="read" variable="strXML" file="#ExpandPath('George.xml')#">
  <cfset PathToXslt = ExpandPath("Name.xsl")>
  <cfset params = StructNew()>
  <cfset StructInsert(params,"bgcolor" ,"silver")>
  <cfset result = XmlTransform(strXML,PathToXslt,params)>
    <cfset formattedXml = XmlFormat(result)>
<html>
  <head>
  <title>XmlFormat()</title>
  </head>
  <body>
  <h1>XmlFormat()</h1>
  <cfoutput>
  <pre>#formattedXml#</pre>
  </cfoutput>
  </body>  
</html>

 

<a href="/img/22/iframe_CF_xml7.html" title= "Vedi esempio">Vedi codice</a>;

 

La pagina risultante è la seguente:

XmlFormat()
Fig 3: risultato dell'esempio 7



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Redazione
Condividi le tue opinioni su questo articolo!