- <?xml version="1.0" encoding="utf-8"?>
- <menu_config>
- <menu title="文章管理" url="~/Article" target="" allow="">
- <submenu title="列表" url="~/Article/list" target="" allow=""/>
- <submenu/>
- <submenu title="新增" url="~/Article/add" target="" allow=""/>
- </menu>
- <menu/>
- <menu title="帳號管理" url="~/Admin"/>
- </menu_config>
menu_config.xsd 結構定義
- <?xml version="1.0"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
- <xs:element name="menu_config">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="menu" type="menuType" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:complexType name="menuType">
- <xs:sequence>
- <xs:element name="submenu" type="menuType" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="title" type="xs:string"/>
- <xs:attribute name="url" type="xs:string"/>
- <xs:attribute name="target" type="xs:string"/>
- <xs:attribute name="allow" type="xs:string"/>
- </xs:complexType>
- </xs:schema>
- element minOccurs
- 最少的出現次數,不設置為至少出現 1 次,設置 0 為可有可無。
- element maxOccurs
- 最大的出現次數,設置 unbounded 為無上限。
- attribute type
- 型別必須為 QName,常用的有 xs:string, xs:date, xs:int, xs:integer, xs:decimal, xs:boolean, xs:double, xs:float。
PHP
- $xmlFile = 'menu_config.xml';
- $xsdFile = 'menu_config.xsd';
- /* 啟用自行錯誤處裡 */
- libxml_use_internal_errors(true);
- $xml = new DOMDocument();
- $xml->load($xmlFile);
- if (!$xml->schemaValidate($xsdFile)) {
- /* 顯示錯誤訊息 */
- print_r(libxml_get_errors());
- libxml_clear_errors();
- }
C#
- var menuConfig = XDocument.Load("menu_config.xml");
- schemas.Add("", XmlReader.Create("menu_config.xsd"));
- menuConfig.Validate(schemas, (o, e) => {
- e.Message.Dump();
- });
Java
- import java.io.File;
- import java.io.IOException;
- import javax.xml.XMLConstants;
- import javax.xml.transform.stream.StreamSource;
- import javax.xml.validation.Schema;
- import javax.xml.validation.SchemaFactory;
- import javax.xml.validation.Validator;
- import org.xml.sax.SAXException;
- public class TestXsd {
- public static void main(String[] args) {
- File xsd = new File("menu_config.xsd");
- File xml = new File("menu_config.xml");
- try {
- SchemaFactory factory = SchemaFactory.newInstance(
- XMLConstants.W3C_XML_SCHEMA_NS_URI
- );
- Schema schema = factory.newSchema(xsd);
- Validator validator = schema.newValidator();
- validator.validate(new StreamSource(xml));
- System.out.println("xml is valid");
- }
- catch (SAXException|IOException e) {
- System.out.println("Reason: " + e.getLocalizedMessage());
- }
- }
- }
參考資料:
XML 結構描述項目 - MSDN
XML Schema Tutorial W3Schools
0 回應:
張貼留言