200 likes | 349 Views
New XML Features in CFMX 06.21.03 Samuel Neff. Outline. XML XPath XSLT What's next?. New XML Features in CFMX – 06.21.03. What is XML?. Format for combining data and metadata Data is the information being exchanged A person's name An account number
E N D
New XML Features in CFMX 06.21.03 Samuel Neff
Outline • XML • XPath • XSLT • What's next? New XML Features in CFMX – 06.21.03
What is XML? • Format for combining data and metadata • Data is the information being exchanged • A person's name • An account number • Metadata is the descriptor of that information • "Name" • "AccountNumber" • Combining data and metadata into one file simplifies development and interoperability New XML Features in CFMX – 06.21.03
Where to use XML? • Exchange of data between applications • Movement of data within tiers of an application • Storage of highly complex single-purpose data New XML Features in CFMX – 06.21.03
Where NOT to use XML? • Movement of data within components of a single-tier in an application • Storage of reusable or relational data New XML Features in CFMX – 06.21.03
Anatomy of an XML Document Processing Instructions <?xml version='1.0'?> <people> <person firstName="Doug" lastName="Jones"> <bio> Doug is a broker. </bio> <!-- Do we have more info on Doug? --> </person> </people> Elements Attributes Data Comments (Comments have only two dashes in XML) New XML Features in CFMX – 06.21.03
Parsing an XML File <cfset fileName = expandPath("Simple.xml")> <cffile action = "read" file="#fileName#" variable="xmlText"> <cfset xmlObject = xmlParse(xmlText)> <cfdump var = "#xmlObject#" label = "xmlObject"> Example: 1_ReadXML.cfm New XML Features in CFMX – 06.21.03
Accessing XML Elements • Use simple dot notation to access elements • <cfset firstNameElement = • xmlObject.purchaseOrder.customerInfo.firstName> • Use the XML object property "xmlText" to read the text of an element • <cfset firstNameText = firstNameElement.xmlText> • <cfoutput>#firstNameText#</cfoutput> Example: 2_XMLElements.cfm New XML Features in CFMX – 06.21.03
Accessing XML Attributes • Use the XML element property "xmlAttributes" to read the attributes • xmlAttributes is a structure of key/value pairs • <cfset customerInfoElement = • xmlObject.purchaseOrder.customerInfo> • <cfset customerId = • customerInfoElement.xmlAttributes.customerId> • <cfoutput><h1> • The customer id is #customerId# • </h1></cfoutput> Example: 3_XMLAtts.cfm New XML Features in CFMX – 06.21.03
Iterating XML Nodes • Use standard structure functions to iterate attributes • <cfset atts = arguments.element.xmlAttributes> • <cfloop item="i" collection="#atts#"> • <cfset attValue = atts[i]> • </cfloop> • Use the XML object property "xmlChildren" as an array of child elements • <cfset children = element.xmlChildren> • <cfloop index="i" from="1" to="#arrayLen(children)#"> • <cfset child = children[i]> • </cfloop> Example: IterateXML.cfm, 4_IterateXML.cfm New XML Features in CFMX – 06.21.03
What is XPath? • Language for selecting nodes from an XML document • Supports combining disparate nodes • Supports filtering nodes by complex criteria • Think of it as single-table SQL Example: 5_DisplayComplex.cfm New XML Features in CFMX – 06.21.03
Simple node selection • Use XMLSearch() function to perform an XPath search • <cfset nodes = XMLSearch(xmlObject, • "/purchaseOrders/purchaseOrder/customerInfo/firstName")> • First argument is an XML object—already parsed • Second argument is an XPath Expression • XPath expression is forward slash delimited list of elements • XMLSearch Returns an array of XML Elements Example: 6_SimpleXPath.cfm New XML Features in CFMX – 06.21.03
Filtered node selection • Use square brackets to indicate a filter • Use relative paths to identify comparison nodes • /purchaseOrders/purchaseOrder/customerInfo • [../products/product/discount > 0] • Use @ sign to indicate an attribute • Still include '/' before the @ sign • /purchaseOrders/purchaseOrder/customerInfo • [../products/product/@productId = 1] Example: 7_FilteredXPath.cfm, 8_FilteredXPath.cfm New XML Features in CFMX – 06.21.03
ColdFusion MX XPath Limitations • Can only be used to select XML Elements • In other systems you can select attribute nodes as well • /purchaseOrders/purchaseOrder/customerInfo/@customerId • Above valid XPath won't work in ColdFusion MX New XML Features in CFMX – 06.21.03
What is XSLT • Language for transforming one XML document into another XML document or into text • An XSLT transformation is also a valid XML document New XML Features in CFMX – 06.21.03
XML to XML Transformations • Refactor an XML document • Move, sort and rename nodes • Filter out data • Commonly used for inter-application data exchange when each application already has an existing XML grammar Example: 09_XSLT_XML.xsl, 10_XSLT_XML.cfm New XML Features in CFMX – 06.21.03
XML to HTML Transformations • Reporting from XML • Simpler than DOM processing Example: 11_XSLT_HTML.xsl, 12_XSLT_HTML.cfm New XML Features in CFMX – 06.21.03
ColdFusion MX XSLT Limitations • No parameters to XSLT transformation • No caching of compiled XSLT files • Extra XML serialization and deserialization sometimes necessary New XML Features in CFMX – 06.21.03
What's next? CML SMIL XDR DCD SOAP XForms DOM SVG XHTML DTD TLD XKMS JAXP UDDI XLink MathML VML XPointer MTX WDDX XQL P3P WML XSD … RDF WSDL XSL-FO RSS XAG New XML Features in CFMX – 06.21.03
Questions Blog: http://www.rewindlife.com E-Mail: sam@rewindlife.com New XML Features in CFMX – 06.21.03