<?xml version="1.0" encoding="UTF-8"?> <!-- schemaVersion of 2001/02/15 --> <xs:schema targetNamespace="http://www.ascc.net/xml/schematron" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns="http://www.ascc.net/xml/schematron" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="+//IDN sinica.edu.tw//SGML W3C XML Schema for Schematron 1.5//EN"> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"> <xs:annotation> <xs:documentation> Get access to the xml: attribute groups for xml:lang </xs:documentation> </xs:annotation> </xs:import> <xs:annotation> <xs:documentation source="http://www.ascc.net/xml/resource/schematron/schematron.html" xml:lang="en"/> </xs:annotation> <xs:element name="active"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="sch:dir"/> <xs:element ref="sch:emph"/> <xs:element ref="sch:span"/> </xs:choice> <xs:attribute name="pattern" type="xs:IDREF" use="required"/> </xs:complexType> </xs:element> <xs:element name="assert"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="sch:name"/> <xs:element ref="sch:emph"/> <xs:element ref="sch:dir"/> <xs:element ref="sch:span"/> <xs:any namespace="##other" processContents="lax"/> </xs:choice> <xs:attribute name="test" type="xs:string" use="required"/> <xs:attribute name="role" type="xs:NMTOKEN"/> <xs:attribute name="id" type="xs:string"/> <xs:attribute name="diagnostics" type="xs:IDREFS"/> <xs:attribute name="icon" type="xs:anyURI"/> <xs:attribute name="subject" type="xs:string" default="."/> <xs:attribute ref="xml:lang"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> </xs:element> <xs:element name="diagnostic"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="sch:value-of"/> <xs:element ref="sch:emph"/> <xs:element ref="sch:dir"/> <xs:element ref="sch:span"/> <xs:any namespace="##other" processContents="lax"/> </xs:choice> <xs:attribute name="id" type="xs:ID" use="required"/> <xs:attribute name="icon" type="xs:anyURI"/> <xs:attribute ref="xml:lang"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> </xs:element> <xs:element name="diagnostics"> <xs:complexType> <xs:sequence> <xs:element ref="diagnostic" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="dir"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="ltr"/> <xs:enumeration value="rtl"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="emph" type="xs:string"/> <xs:element name="extends"> <xs:complexType> <xs:attribute name="rule" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="key"> <xs:complexType> <xs:attribute name="name" type="xs:NMTOKEN" use="required"/> <xs:attribute name="path" type="xs:string" use="required"/> <xs:attribute name="icon" type="xs:anyURI"/> </xs:complexType> </xs:element> <xs:element name="name"> <xs:complexType> <xs:attribute name="path" type="xs:string" default="."/> </xs:complexType> </xs:element> <xs:element name="ns"> <xs:complexType> <xs:attribute name="uri" type="xs:anyURI" use="required"/> <xs:attribute name="prefix" type="xs:NCName"/> </xs:complexType> </xs:element> <xs:element name="p"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="sch:dir"/> <xs:element ref="sch:emph"/> <xs:element ref="sch:span"/> </xs:choice> <xs:attribute name="id" type="xs:string"/> <xs:attribute name="class" type="xs:string"/> <xs:attribute name="icon" type="xs:anyURI"/> <xs:attribute ref="xml:lang"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> </xs:element> <xs:element name="pattern"> <xs:complexType> <xs:sequence> <xs:element ref="p" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="sch:rule" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="see" type="xs:anyURI"/> <xs:attribute name="id" type="xs:string"/> <xs:attribute name="icon" type="xs:anyURI"/> </xs:complexType> </xs:element> <xs:element name="phase"> <xs:complexType> <xs:sequence> <xs:element ref="sch:p" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="sch:active" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="fpi" type="xs:string"/> <xs:attribute name="icon" type="xs:anyURI"/> </xs:complexType> </xs:element> <xs:element name="report"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="sch:name"/> <xs:element ref="sch:emph"/> <xs:element ref="sch:dir"/> <xs:element ref="sch:span"/> <xs:any namespace="##other" processContents="lax"/> </xs:choice> <xs:attribute name="test" type="xs:string" use="required"/> <xs:attribute name="role" type="xs:NMTOKEN"/> <xs:attribute name="id" type="xs:string"/> <xs:attribute name="diagnostics" type="xs:IDREFS"/> <xs:attribute name="icon" type="xs:anyURI"/> <xs:attribute name="subject" type="xs:string" default="."/> <xs:attribute ref="xml:lang"/> </xs:complexType> </xs:element> <xs:element name="rule"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element ref="sch:assert"/> <xs:element ref="sch:report"/> <xs:element ref="sch:key"/> <xs:element ref="sch:extends"/> </xs:choice> <xs:attribute name="context" type="xs:string"/> <xs:attribute name="abstract" type="xs:boolean" default="false"/> <xs:attribute name="role" type="xs:NMTOKEN"/> <xs:attribute name="id" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="schema"> <xs:complexType> <xs:sequence> <xs:element ref="sch:title" minOccurs="0"/> <xs:element ref="sch:ns" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="sch:p" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="sch:phase" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="sch:pattern" maxOccurs="unbounded"/> <xs:element ref="sch:p" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="sch:diagnostics" minOccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:ID"/> <xs:attribute name="fpi" type="xs:string"/> <xs:attribute name="schemaVersion" type="xs:string"/> <xs:attribute name="defaultPhase" type="xs:string"/> <xs:attribute name="icon" type="xs:anyURI"/> <xs:attribute name="ns" type="xs:anyURI"/> <xs:attribute name="version" type="xs:string" default="1.5"/> <xs:attribute ref="xml:lang"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:unique name="assertId"> <xs:selector xpath="sch:pattern/sch:rule/sch:assert"/> <xs:field xpath="@id"/> </xs:unique> <xs:unique name="reportId"> <xs:selector xpath="sch:pattern/sch:rule/sch:report"/> <xs:field xpath="@id"/> </xs:unique> <xs:unique name="ruleId"> <xs:selector xpath="sch:pattern/sch:rule"/> <xs:field xpath="@id"/> </xs:unique> <xs:unique name="patternId"> <xs:selector xpath="sch:pattern"/> <xs:field xpath="@id"/> </xs:unique> <xs:unique name="pId"> <xs:selector xpath=".//sch:p"/> <xs:field xpath="@id"/> </xs:unique> <xs:key name="phaseId"> <xs:selector xpath="sch:phase"/> <xs:field xpath="@id"/> </xs:key> <xs:keyref name="activePattern" refer="patternId"> <xs:selector xpath="sch:phase/sch:active"/> <xs:field xpath="@pattern"/> </xs:keyref> <xs:keyref name="extendsRule" refer="ruleId"> <xs:selector xpath="sch:pattern/sch:rule/sch:extends"/> <xs:field xpath="@rule"/> </xs:keyref> <xs:keyref name="defaultPhase" refer="phaseId"> <xs:selector xpath="."/> <xs:field xpath="@defaultPhase"/> </xs:keyref> <!-- Define the identity constraints --> </xs:element> <xs:element name="span"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="class" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="title"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="sch:dir"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="value-of"> <xs:complexType> <xs:attribute name="select" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema>