Uses a Document Type Definition (DTD) or XML Schema to validate an XML text document or an XML document object.
The following validation structure:
Field |
Description |
|---|---|
Errors |
An array containing any validator error messages. These messages indicate that the document does not conform to the DTD or Schema (is not valid). |
FatalErrors |
An array containing any validator fatal error messages. Fatal errors indicate that the document contains XML formatting errors (is not well-formed XML). |
Status |
A Boolean value:
|
Warning |
An array containing any validator warnings. A well-formed and valid document can produce warning messages. |
XmlValidate(xml, [validator])
cfxml, IsXmlDoc, IsXML, XmlFormat, XmlNew, XmlParse, XmlSearch, XmlTransform; Using XML and WDDX in the Developing ColdFusion Applications
ColdFusion (2018 release): Introduced named parameters.
ColdFusion MX 7: Added this function.
Parameter |
Description |
|---|---|
xml |
Any of the following:
|
validator |
Any of the following:
|
If you specify a relative URL or filename in a parameter, ColdFusion uses the directory (or, for URLs, the virtual directory) that contains the current ColdFusion page as the path root. The validator parameter specifies a DTD or Schema to use to validate the document. If you omit the parameter, the XML document must contain one of the following:
The following example has three parts: an XML file, an XSD Schema file, and a CFML page that parses the XML file and uses the Schema for validation. The CFML file displays the value of the returned structure's Status field and displays the returned structure. To show the results of invalid XML, modify the custorder.xml file.
Note: The Schema used in the following example represents the same XML structure as the DTD used in the XmlParse example. |
The custorder.xml file is as follows:
<?xml version="1.0" encoding="UTF-8"?> <order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://localhost:8500/something.xsd" id="4323251" > <customer firstname="Philip" lastname="Cramer" accountNum="21"/> <items> <item id="43"> <name> Deluxe Carpenter's Hammer</name> <quantity>1</quantity> <unitprice>15.95</unitprice> </item> <item id="54"> <name> 36" Plastic Rake</name> <quantity>2</quantity> <unitprice>6.95</unitprice> </item> <item id="68"> <name> Standard paint thinner</name> <quantity>3</quantity> <unitprice>8.95</unitprice> </item> </items> </order>
The custorder.xsd file is as follows:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="customer"> <xs:complexType> <xs:attribute name="firstname" type="xs:string" use="required"/> <xs:attribute name="lastname" type="xs:string" use="required"/> <xs:attribute name="accountNum" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="name" type="xs:string"/> <xs:element name="quantity" type="xs:string"/> <xs:element name="unitprice" type="xs:string"/> <xs:element name="item"> <xs:complexType> <xs:sequence> <xs:element ref="name"/> <xs:element ref="quantity"/> <xs:element ref="unitprice"/> </xs:sequence> <xs:attribute name="id" type="xs:integer" use="required"> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="items"> <xs:complexType> <xs:sequence> <xs:element ref="item" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="order"> <xs:complexType> <xs:sequence> <xs:element ref="customer"/> <xs:element ref="items"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema>
The CFML file is as follows. It uses a filename for the XML file and a URL for the Schema. The XML and URL paths must be absolute.
<cfset
myResults=XMLValidate("C:\CFusionMX7\wwwroot\examples\custorder.xml",
"http://localhost:8500/examples/custorder.xsd")>
<cfoutput>
Did custorder.xml validate against custorder.xsd? #myResults.status#<br><br>
</cfoutput>
Dump of myResults structure returned by XMLValidate<br>
<cfdump var="#myResults#">
Sign in to your account