XMLVALIDATE  
説明

DTD (ドキュメントタイプ定義) または XML スキーマを使用して、XML テキストドキュメントまたは XML ドキュメントオブジェクトを検証します。

 
戻り値

次の検証構造体

 
カテゴリ

XML 関数

 
関数のシンタックス
XmlValidate(xmlDoc[, validator])
 
関連項目

cfxml、IsXmlDoc、IsXML、XmlFormat、XmlNew、XmlParse、XmlSearch、XmlTransform、『ColdFusion MX 開発ガイド』の第35章の「XML および WDDX の使用」

 
ヒストリ

ColdFusion MX 7: この関数が追加されました。

 
パラメータ

 
使用方法

パラメータで相対 URL または相対ファイル名を指定した場合、ColdFusion は現在の ColdFusion ページをパスルートとして含んでいるディレクトリ (URL の場合は仮想ディレクトリ) を使用します。

validator パラメータは、ドキュメントを検証するために使用する DTD またはスキーマを指定します。このパラメータを省略した場合は、XML ドキュメントに次のいずれかを含める必要があります。

  • DTD または DTD の場所を指定する !DOCTYPE タグ
  • スキーマの場所を指定する xsi:schemaLocation タグまたは xsi:noNamespaceSchemaLocation タグ

validator パラメータを使用し、XML ドキュメントで DTD またはスキーマを指定する場合、XmlValidate 関数は validator パラメータの方を使用し、XML ドキュメントでの指定を無視します。

validator パラメータを使用せず、XML ドキュメントで DTD またはスキーマを指定しない場合、この関数は Errors フィールドにエラーメッセージが示された構造体を返します。

この関数は、XML ドキュメント全体に対して検証処理を行い、処理中に検出されたエラーをすべてレポートします。その結果、返される構造体は Warning、Error、および FatalError の各フィールドの組み合わせになる可能性があり、各フィールドには複数のエラーメッセージを含むことができます。

 

次の例には 3 つの部分があります。つまり、XML ファイル、XSD スキーマファイル、および検証のために XML ファイルを解析してスキーマを使用する CFML ページです。CFML ファイルでは、返される構造体の Status フィールドの値が表示され、返される構造体が表示されます。無効な XML の結果を表示するには、custorder.xml を修正します。

メモ: 次の例で使用するスキーマは、XmlParse の例で使用する DTD と同じ XML 構造体を表します。

"custorder.xml" ファイルは次のとおりです。

<?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>   高級大工用ハンマー</name>
         <quantity>1</quantity>
         <unitprice>15.95</unitprice>
      </item>
      <item id="54">
         <name>   36 インチのプラスチック製熊手</name>
         <quantity>2</quantity>
         <unitprice>6.95</unitprice>
      </item>
      <item id="68">
         <name>   標準の塗料用シンナー</name>
         <quantity>3</quantity>
         <unitprice>8.95</unitprice>
      </item>
   </items>
</order>

"custorder.xsd" ファイルは次のとおりです。

<?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>

CFML ファイルは次のとおりです。XML ファイルのファイル名およびスキーマの URL を使用します。XML パスおよび URL パスは絶対パスでなければなりません。

<cfset
myResults=XMLValidate("C:CFusionMX7wwwrootexamplescustorder.xml", 
"http://localhost:8500/examples/custorder.xsd")>
<cfoutput>
custorder.xml は custorder.xsd と照合されましたか?#results.status#<br><br>
</cfoutput>
XMLValidate によって返される myResults 構造体のダンプ<br>
<cfdump var="#myResults#">
ERRORS  
検証機能のエラーメッセージを含む配列です。これらのメッセージは、ドキュメントが DTD またはスキーマに準拠していないこと (ドキュメントが有効でないこと) を示します。
FATALERRORS  
検証機能の重大エラーメッセージを含む配列です。重大エラーは、ドキュメントに XML 形式 設定エラーがあること (ドキュメントがウェルフォームドの XML でないこと) を示します。
STATUS  
ブール値です。
  • ドキュメントが有効である場合は true
  • 検証チェックに失敗した場合は false
WARNING  
検証機能の警告を含む配列です。ウェルフォームドの有効ドキュメントで警告メッセージが生 成される場合があります。
XMLDOC  
次のいずれかです。
  • XML ドキュメントを含む文字列
  • XML ファイルの名前
  • XML ファイルの URL。http、https、ftp、file など、有効なプロトコル識別子です。
  • XML ドキュメントオブジェクト。たとえば、XmlParse 関数によって生成された XML ドキュメントオブジェクトなどです。
VALIDATOR  
次のいずれかです。
  • DTD またはスキーマを含む文字列
  • DTD またはスキーマファイルの名前
  • DTD またはスキーマファイルの URL。http、https、ftp、file など、有効なプロトコル識別子です。