XMLReader::setSchema()函數是PHP中的內置函數,用於使用XSD架構驗證文檔。該XSD架構不過是一個定義XML結構規則的文件,並且應采用.xsd文件的形式。
用法:
bool XMLReader::setSchema( string $filename )
參數:該函數接受單個參數$filename,該參數保存XSD文件名。
返回值:如果成功,此函數將返回TRUE,否則將返回FALSE。
異常:如果libxml擴展名是在沒有模式支持的情況下編譯的,則此函數將引發E_WARNING。
以下示例說明了PHP中的XMLReader::setSchema()函數:
範例1:
- data.xml(要驗證的XML文件)
<?xml version="1.0"?> <student> <name>Rahul</name> <rollno>1726262</rollno> </student>
- 規則(XML文件要遵循的規則)
<?xml version="1.0"?> <xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="student"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="rollno" type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
- index.php(運行驗證的PHP腳本)
<?php // Create a new XMLReader instance $XMLReader = new XMLReader(); // Open the XML file $XMLReader->open('data.xml'); // Load the rule $XMLReader->setSchema('rule.xsd'); // Iterate through the XML nodes while ($XMLReader->read()) { if ($XMLReader->nodeType == XMLREADER::ELEMENT) { // Check if XML follows the XSD rule if ($XMLReader->isValid()) { echo "This document is valid!<br>"; } } } ?>
- 輸出:
This document is valid! This document is valid! This document is valid!
範例2:
- data.xml
<?xml version="1.0"?> <div> <phoneNo>This should not be text</phoneNo> </div>
- 規則
<?xml version="1.0"?> <xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="div"> <xs:complexType> <xs:sequence> <xs:element name="phoneNo" type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
- index.php
<?php // Create a new XMLReader instance $XMLReader = new XMLReader(); // Open the XML file $XMLReader->open('data.xml'); // Load the rule $XMLReader->setSchema('rule.xsd'); // Iterate through the XML nodes while ($XMLReader->read()) { if ($XMLReader->nodeType == XMLREADER::ELEMENT) { // Check if XML follows the XSD rule if (!$XMLReader->isValid()) { echo "This document is not valid!<br>"; } } } ?>
- 輸出:
This document is not valid! This document is not valid!
參考: https://www.php.net/manual/en/xmlreader.setschema.php
相關用法
- PHP XMLReader XML()用法及代碼示例
- PHP XMLReader close()用法及代碼示例
- PHP XMLReader getAttributeNs()用法及代碼示例
- PHP XMLReader open()用法及代碼示例
- PHP XMLReader getParserProperty()用法及代碼示例
- PHP XMLReader moveToFirstAttribute()用法及代碼示例
- PHP XMLReader moveToNextAttribute()用法及代碼示例
- PHP XMLReader readInnerXml()用法及代碼示例
- PHP XMLReader readOuterXml()用法及代碼示例
- PHP XMLReader readString()用法及代碼示例
- PHP XMLReader setRelaxNGSchema()用法及代碼示例
- PHP XMLReader setParserProperty()用法及代碼示例
- PHP XMLReader setRelaxNGSchemaSource()用法及代碼示例
注:本文由純淨天空篩選整理自gurrrung大神的英文原創作品 PHP | XMLReader setSchema() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。