
The following DTD does not have namespace qualification.
<!-- +//IDN sinica.edu.tw//DTD Schematron 1.5//EN --> <!-- Data types --> <!ENTITY % URI "CDATA" > <!ENTITY % PATTERN "CDATA" > <!ENTITY % EXPR "CDATA" > <!ENTITY % FPI "CDATA" > <!-- Element declarations -->
<!ELEMENT schema ( title?, ns*, phase*, p*, pattern+ , p*, diagnostics? )>
<!ELEMENT active ( #PCDATA | dir | emph | span)* > <!ELEMENT assert ( #PCDATA | name | emph | dir | span )*> <!ELEMENT dir ( #PCDATA )> <!ELEMENT emph ( #PCDATA )> <!ELEMENT extends EMPTY > <!ELEMENT diagnostic (#PCDATA | value-of | emph | dir | span)* > <!ELEMENT diagnostics ( diagnostic* )> <!ELEMENT key EMPTY > <!ELEMENT name EMPTY > <!ELEMENT ns EMPTY > <!ELEMENT p ( #PCDATA | dir | emph | span) > <!ELEMENT pattern ( p*, rule+ )> <!ELEMENT phase ( active )* > <!ELEMENT report ( #PCDATA | name | emph | dir | span)*> <!ELEMENT rule ( assert | report | key | extends )+> <!ELEMENT span ( #PCDATA )> <!ELEMENT title ( #PCDATA | dir )* > <!ELEMENT value-of EMPTY >
<!-- Attribute declarations --> <!ATTLIST schema xmlns %URI; #FIXED "http:/www.ascc.net/xml/schematron" id ID #IMPLIED fpi %FPI; #IMPLIED defaultPhase IDREF #IMPLIED icon %URI; #IMPLIED version CDATA "1.5" xml:lang NMTOKEN #IMPLIED > <!ATTLIST active pattern ID #REQUIRED > <!ATTLIST assert test %EXPR; #REQUIRED role NMTOKEN #IMPLIED id ID #IMPLIED diagnostics IDREFS #IMPLIED icon %URI; #IMPLIED subject %PATTERN; #IMPLIED xml:lang NMTOKEN #IMPLIED > <!ATTLIST dir value ( ltr | rtl ) #IMPLIED > <!ATTLIST extends rule IDREF #REQUIRED > <!ATTLIST diagnostic id ID #REQUIRED icon %URI; #IMPLIED xml:lang NMTOKEN #IMPLIED > <!ATTLIST key name NMTOKEN #REQUIRED path %PATTERN; #REQUIRED icon %URI; #IMPLIED > <!ATTLIST name path %PATTERN; #IMPLIED > <!-- Schematrons should implement '.' as the default value for path --> <!ATTLIST p xml:lang CDATA #IMPLIED id ID #IMPLIED class CDATA #IMPLIED icon %URI; #IMPLIED > <!ATTLIST pattern name CDATA #REQUIRED see %URI; #IMPLIED id ID #IMPLIED icon %URI; #IMPLIED> <!ATTLIST ns uri %URI; #REQUIRED prefix NMTOKEN #IMPLIED > <!ATTLIST phase id ID #REQUIRED fpi %FPI; #IMPLIED icon %URI; #IMPLIED > <!ATTLIST span class CDATA #IMPLIED > <!ATTLIST report test %EXPR; #REQUIRED role NMTOKEN #IMPLIED id ID #IMPLIED diagnostics IDREFS #IMPLIED icon %URI; #IMPLIED subject %PATTERN; #IMPLIED > <!ATTLIST rule context %PATTERN; #IMPLIED abstract (true | false) "false" role NMTOKEN #IMPLIED id ID #IMPLIED > <!-- Schematrons should implement 'no' as the default value of abstract --> <!ATTLIST value-of select %PATTERN; #REQUIRED >
AbbreviatedAbsoluteLocationPath
::= '//' RelativeLocationPath
AbbreviatedRelativeLocationPath
::= RelativeLocationPath '//' Step
AbbreviatedStep
::= '.' | '..'
AbbreviatedAxisSpecifier
::= '@'?
AbsoluteLocationPath
::= '/' RelativeLocationPath? | AbbreviatedAbsoluteLocationPath
AdditiveExpr
::= MultiplicativeExpr
| AdditiveExpr '+' MultiplicativeExpr
| AdditiveExpr '-' MultiplicativeExpr
AndExpr
::= EqualityExpr | AndExpr 'and' EqualityExpr
Argument
::= Expr
AxisSpecifier
::= AxisName '::' | AbbreviatedAxisSpecifier
AxisName
::= 'ancestor' | 'ancestor-or-self' | 'attribute'
| 'child' | 'descendant' | 'descendant-or-self'
| 'following' | 'following-sibling' | 'namespace'
| 'parent' | 'preceding' | 'preceding-sibling' | 'self'
ChildOrAttributeAxisSpecifier
::= AbbreviatedAxisSpecifier | ('child' | 'attribute') '::'
Digits
::= +
EqualityExpr
::= RelationalExpr
| EqualityExpr '=' RelationalExpr
| EqualityExpr '!=' RelationalExpr
Expr
::= OrExpr
ExprToken
::= '(' | ')' | '' | '.' | '..' | '@' | ',' | '::'
| NameTest | NodeType | Operator | FunctionName | AxisName
| Literal | Number | VariableReference
FilterExpr
::= PrimaryExpr | FilterExpr Predicate
FunctionCall
::= FunctionName '(' ( Argument ( ',' Argument )* )? ')'
FunctionName
::= 'last' | 'position' | 'ount' | 'id' | 'local-name'
| 'namespace-uri' | 'name' | 'string' | 'concat' | 'starts-with'
| 'contains' | 'substring-before' | 'substring-after' | 'substring'
| 'string-length' | 'normalize-space' | 'translate' | 'boolean'
| 'not' | 'true' | 'fals' | 'lang' | 'number' | 'sum'
| 'floor' | 'ceiling' | 'round' | 'document' | 'key'
| 'format-number' | 'current'
| 'system-property' (Caution: system-roperty() available with XSLT 1.1 only)
IdKeyPattern
::= 'id' '(' Literal ')' | 'key' '(' Literal ',' Literal ')'
LocalPart
::= NCName
LocationPath
::= RelativeLocationPath | AbsoluteLocationPath
LocationPathPattern
::= '/' RelativePathPattern? | '//'? RelativePathPattern
Literal
::= '"' * "'"
MultiplicativeExpr
::= UnaryExpr
| MultiplicativeExpr MultiplyOperator UnaryExpr
| MultiplicativeExpr 'div' UnaryExpr
| MultiplicativeExpr 'mod' UnaryExpr
MultiplyOperator
::= '*'
NameTest
::= '*' | NCName ':' '*' | QName
NCName
::= (Letter | '_') (NCNameChar)*
NCNameChar
::= Letter | Digit | '.' | '-' | '_' | CombiningChar | Extender
NodeTest
::= NameTest | NodeType '(' ')'
| 'processing-instruction' '(' Literal ')'
NodeType
::= 'comment' | 'text' | 'processing-instruction' | 'node'
Number
::= Digits ('.' Digits?)? | '.' Digits
Operator
::= OperatorName | MultiplyOperator
| '/' | '//' | '|' | '+' | '-' | '=' | '!=' | '<' | '<=' | '>' | '>='
OperatorName
::= 'and' | 'or' | 'mod' | 'div'
PathExpr
::= LocationPath | FilterExpr
| FilterExpr '/' RelativeLocationPath
| FilterExpr '//' RelativeLocationPath
Pattern
::= LocationPathPattern | Pattern '|' LocationPathPattern
| IdKeyPattern (('/' | '//') RelativePathPattern)?
Predicate
::= ''
PredicateExpr
::= Expr
Prefix
::= NCName
PrimaryExpr
::= VariableReference | '(' Expr ')' | Literal
| Number | FunctionCall
QName
::= (Prefix ':')? LocalPart
RelativeLocationPath
::= Step | RelativeLocationPath '/' Step
| AbbreviatedRelativeLocationPath
RelativePathPattern
::= StepPattern
| RelativePathPattern '/' StepPattern
| RelativePathPattern '//' StepPattern
RelationalExpr
::= AdditiveExpr
| RelationalExpr '<' AdditiveExpr
| RelationalExpr '>' AdditiveExpr
| RelationalExpr '<=' AdditiveExpr
| RelationalExpr '>=' AdditiveExpr
S
::= (#x20 | #x9 | #xD | #xA)+
Step
::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep
StepPattern
::= ChildOrAttributeAxisSpecifier NodeTest Predicate*
UnaryExpr
::= UnionExpr | '-' UnaryExpr
UnionExpr
::= PathExpr | UnionExpr '|' PathExpr
VariableReference
::= '$' QName