add files

This commit is contained in:
ChiKyun Kim
2025-09-09 13:59:12 +09:00
parent e94b06888d
commit 747aabe224
791 changed files with 3888723 additions and 0 deletions

View File

@@ -0,0 +1,163 @@
<xsd:schema targetNamespace="http://www.w3.org/2009/exi"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="header">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="lesscommon" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="uncommon" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
processContents="skip" />
<xsd:element name="alignment" minOccurs="0">
<xsd:complexType>
<xsd:choice>
<xsd:element name="byte">
<xsd:complexType />
</xsd:element>
<xsd:element name="pre-compress">
<xsd:complexType />
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="selfContained" minOccurs="0">
<xsd:complexType />
</xsd:element>
<xsd:element name="valueMaxLength" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt" />
</xsd:simpleType>
</xsd:element>
<xsd:element name="valuePartitionCapacity" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt" />
</xsd:simpleType>
</xsd:element>
<xsd:element name="datatypeRepresentationMap"
minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<!-- schema datatype -->
<xsd:any namespace="##other" processContents="skip" />
<!-- datatype representation -->
<xsd:any processContents="skip" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="preserve" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="dtd" minOccurs="0">
<xsd:complexType />
</xsd:element>
<xsd:element name="prefixes" minOccurs="0">
<xsd:complexType />
</xsd:element>
<xsd:element name="lexicalValues" minOccurs="0">
<xsd:complexType />
</xsd:element>
<xsd:element name="comments" minOccurs="0">
<xsd:complexType />
</xsd:element>
<xsd:element name="pis" minOccurs="0">
<xsd:complexType />
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="blockSize" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt" />
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="common" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="compression" minOccurs="0">
<xsd:complexType />
</xsd:element>
<xsd:element name="fragment" minOccurs="0">
<xsd:complexType />
</xsd:element>
<xsd:element name="schemaId" minOccurs="0" nillable="true">
<xsd:simpleType>
<xsd:restriction base="xsd:string" />
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="strict" minOccurs="0">
<xsd:complexType />
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Built-in EXI Datatype IDs for use in datatype representation maps -->
<xsd:simpleType name="base64Binary">
<xsd:restriction base="xsd:base64Binary"/>
</xsd:simpleType>
<xsd:simpleType name="hexBinary" >
<xsd:restriction base="xsd:hexBinary"/>
</xsd:simpleType>
<xsd:simpleType name="boolean" >
<xsd:restriction base="xsd:boolean"/>
</xsd:simpleType>
<xsd:simpleType name="decimal" >
<xsd:restriction base="xsd:decimal"/>
</xsd:simpleType>
<xsd:simpleType name="double" >
<xsd:restriction base="xsd:double"/>
</xsd:simpleType>
<xsd:simpleType name="integer" >
<xsd:restriction base="xsd:integer"/>
</xsd:simpleType>
<xsd:simpleType name="string" >
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="dateTime" >
<xsd:restriction base="xsd:dateTime"/>
</xsd:simpleType>
<xsd:simpleType name="date" >
<xsd:restriction base="xsd:date"/>
</xsd:simpleType>
<xsd:simpleType name="time" >
<xsd:restriction base="xsd:time"/>
</xsd:simpleType>
<xsd:simpleType name="gYearMonth" >
<xsd:restriction base="xsd:gYearMonth"/>
</xsd:simpleType>
<xsd:simpleType name="gMonthDay" >
<xsd:restriction base="xsd:gMonthDay"/>
</xsd:simpleType>
<xsd:simpleType name="gYear" >
<xsd:restriction base="xsd:gYear"/>
</xsd:simpleType>
<xsd:simpleType name="gMonth" >
<xsd:restriction base="xsd:gMonth"/>
</xsd:simpleType>
<xsd:simpleType name="gDay" >
<xsd:restriction base="xsd:gDay"/>
</xsd:simpleType>
<!-- Qnames reserved for future use in datatype representation maps -->
<xsd:simpleType name="ieeeBinary32" >
<xsd:restriction base="xsd:float"/>
</xsd:simpleType>
<xsd:simpleType name="ieeeBinary64" >
<xsd:restriction base="xsd:double"/>
</xsd:simpleType>
</xsd:schema>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<header xmlns="http://www.w3.org/2009/exi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2009/exi ./EXIOptionsHeader.xsd">
<common>
<compression/>
<fragment/>
<schemaId>bla007</schemaId>
</common>
</header>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<header xmlns="http://www.w3.org/2009/exi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2009/exi ./EXIOptionsHeader.xsd">
<lesscommon>
<preserve>
<dtd/>
<prefixes/>
<lexicalValues/>
<comments/>
<pis/>
</preserve>
</lesscommon>
</header>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<header xmlns="http://www.w3.org/2009/exi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2009/exi ./EXIOptionsHeader.xsd">
<lesscommon>
<uncommon>
<alignment>
<pre-compress/>
</alignment>
<selfContained/>
<valueMaxLength>12</valueMaxLength>
<valuePartitionCapacity>8</valuePartitionCapacity>
<datatypeRepresentationMap>
<xsd:decimal xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
<string xsmlns="http://www.w3.org/2009/exi" />
</datatypeRepresentationMap>
<datatypeRepresentationMap>
<xsd:int xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
<string xsmlns="http://www.w3.org/2009/exi" />
</datatypeRepresentationMap>
</uncommon>
<preserve>
<dtd/>
<prefixes/>
<lexicalValues/>
<comments/>
<pis/>
</preserve>
</lesscommon>
</header>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<header xmlns="http://www.w3.org/2009/exi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2009/exi ./EXIOptionsHeader.xsd">
<lesscommon>
<uncommon>
<p xmlns="http://www.w3.org/2009/exi" ></p>
<alignment>
<byte/>
</alignment>
</uncommon>
</lesscommon>
</header>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<header xmlns="http://www.w3.org/2009/exi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2009/exi ./EXIOptionsHeader.xsd">
<lesscommon>
<uncommon>
<p xmlns="http://www.w3.org/2009/exi" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xsi:type="xsd:decimal" >-12.56</p>
<alignment>
<byte/>
</alignment>
</uncommon>
</lesscommon>
</header>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<header xmlns="http://www.w3.org/2009/exi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2009/exi ./EXIOptionsHeader.xsd">
<strict/>
</header>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document -->
<ns:personnel xmlns:ns="http://www.foo.com">
<ns:person id="Boss">
<ns:name>
<ns:family>Smith</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>smith@foo.com</ns:email>
<ns:yearsOfService>20</ns:yearsOfService>
<ns:birthday>1955-03-24</ns:birthday>
</ns:person>
<!-- A second comment in this Sample XML Document -->
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>jones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1968-07-16</ns:birthday>
</ns:person>
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Sam</ns:given>
</ns:name>
<ns:email>sjones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1959-01-26</ns:birthday>
</ns:person>
</ns:personnel>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="http://www.foo.com" xmlns:ns="http://www.foo.com">
<xs:element name="personnel">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="person" type="ns:Person"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Person">
<xs:sequence>
<xs:element name="name" type="ns:Name"/>
<xs:element name="email" type="xs:string"/>
<xs:element name="yearsOfService" type="xs:nonNegativeInteger"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:NCName"/>
</xs:complexType>
<xs:complexType name="Name">
<xs:sequence>
<xs:element name="family" type="xs:string"/>
<xs:element name="given" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<notebook date="2007-09-12">
<note date="2007-07-23" category="EXI">
<subject>EXI</subject>
<body>Do not forget it!</body>
</note>
<note date="2007-09-12">
<subject>shopping list</subject>
<body>milk, honey</body>
</note>
</notebook>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="notebook">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="note" type="Note"/>
</xs:sequence>
<xs:attribute ref="date"/>
</xs:complexType>
</xs:element>
<xs:complexType name="Note">
<xs:sequence>
<xs:element name="subject" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
<xs:attribute ref="date" use="required"/>
<xs:attribute name="category" type="xs:string"/>
</xs:complexType>
<xs:attribute name="date" type="xs:date"/>
</xs:schema>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document -->
<nsp:personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.pok.xyz.com XMLSample.xsd" xmlns:nsp="http://www.pok.xyz.com">
<person id="Boss" >
<nss:name xmlns:nss="http://www.svl.xyz.com">
<nsp:family>Smith</nsp:family>
<nss:given>Bill</nss:given>
</nss:name>
<email>smith@foo.com</email>
<YearsOfService>20</YearsOfService>
<weight>175.4</weight>
<birthday>1955-03-24</birthday>
<nsp:link nsp:subordinates="worker"/>
</person>
<person xmlns="http://www.dft1.xyz.com" id="worker">
<name>
<family xmlns="http://www.dft2.xyz.com">Jones</family>
<given xmlns="">Bill</given>
</name>
<email>jones@foo.com</email>
<YearsOfService>15</YearsOfService>
<weight>175.4</weight>
<birthday>1968-07-16</birthday>
<link manager="Boss"/>
</person>
<person id="worker">
<name xmlns:nsp="http://www.abc.xyz.com">
<nsp:family>Jones</nsp:family>
<given>Sam</given>
</name>
<email>sjones@foo.com</email>
<YearsOfService>20</YearsOfService>
<weight>189.2</weight>
<birthday>1959-01-26</birthday>
<link manager="Boss"/>
</person>
</nsp:personnel>
<!--
was originally in front of the second person... has to be changed.. otherwise false gramme step.. to check!!!
A second comment in this Sample XML Document
-->

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:nsp="http://www.pok.xyz.com" xmlns:ns1="http://www.dft2.xyz.com" xmlns:ns2="http://www.abc.xyz.com" xmlns:ns3="http://www.dft1.xyz.com" xmlns:nss="http://www.svl.xyz.com">
<xs:import namespace="http://www.abc.xyz.com" schemaLocation="ns2.xsd"/>
<xs:import namespace="http://www.dft1.xyz.com" schemaLocation="ns3.xsd"/>
<xs:import namespace="http://www.dft2.xyz.com" schemaLocation="ns1.xsd"/>
<xs:import namespace="http://www.pok.xyz.com" schemaLocation="nsp.xsd"/>
<xs:import namespace="http://www.svl.xyz.com" schemaLocation="nss.xsd"/>
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="name"/>
<xs:element ref="nss:name"/>
</xs:choice>
<xs:element ref="email"/>
<xs:element ref="YearsOfService"/>
<xs:element ref="weight"/>
<xs:element ref="birthday"/>
<xs:choice>
<xs:element ref="link"/>
<xs:element ref="nsp:link"/>
</xs:choice>
</xs:sequence>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document with *weired* prefixes NS declarations -->
<nsp:personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.pok.xyz.com XMLSample.xsd" xmlns:nsp="http://www.pok.xyz.com">
<person id="Boss">
<nss:name xmlns:nss="http://www.svl.xyz.com" xmlns:nssFoo="http://www.svl.xyz.com"
xmlns:nspFoo="http://www.pok.xyz.com">
<nspFoo:family>Smith</nspFoo:family>
<nss:given>Bill</nss:given>
</nss:name>
<email>smith@foo.com</email>
<YearsOfService>20</YearsOfService>
<weight>175.4</weight>
<birthday>1955-03-24</birthday>
<nsp:link nsp:subordinates="worker"/>
</person>
<dft:person xmlns:dftFoo="http://www.dft1.xyz.com" xmlns:dft="http://www.dft1.xyz.com"
id="worker">
<dft:name>
<family xmlns="http://www.dft2.xyz.com">Jones</family>
<given xmlns="">Bill</given>
</dft:name>
<dft:email>jones@foo.com</dft:email>
<dft:YearsOfService>15</dft:YearsOfService>
<dft:weight>175.4</dft:weight>
<dft:birthday>1968-07-16</dft:birthday>
<dft:link manager="Boss"/>
</dft:person>
</nsp:personnel>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document with *weired* prefixes NS declarations -->
<nsp:personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.pok.xyz.com XMLSample.xsd" xmlns:nsp="http://www.pok.xyz.com"
xmlns:nspX="http://www.pok.xyz.com"
>
<person id="Boss">
<nss:name xmlns:nss="http://www.svl.xyz.com" >
<nsp:family>Smith</nsp:family>
<nss:given>Bill</nss:given>
</nss:name>
<email>smith1@foo.com</email>
<YearsOfService>21</YearsOfService>
<weight>175.1</weight>
<birthday>1955-03-21</birthday>
<nsp:link nsp:subordinates="worker"/>
</person>
<person id="Boss">
<nss:name xmlns:nss="http://www.svl.xyz.com" xmlns:nssFoo="http://www.svl.xyz.com"
xmlns:nspFoo="http://www.pok.xyz.com">
<nspFoo:family>Smith</nspFoo:family>
<nss:given>Bill</nss:given>
</nss:name>
<email>smith2@foo.com</email>
<YearsOfService>22</YearsOfService>
<weight>175.2</weight>
<birthday>1955-03-22</birthday>
<!-- other attribute prefix! -->
<nsp:link nspX:subordinates="worker"/>
</person>
<person id="Boss">
<nss:name xmlns:nss="http://www.svl.xyz.com" xmlns:nssFoo="http://www.svl.xyz.com"
xmlns:nspFoo="http://www.pok.xyz.com">
<nspFoo:family>Smith</nspFoo:family>
<nss:given>Bill</nss:given>
</nss:name>
<email>smith3@foo.com</email>
<YearsOfService>23</YearsOfService>
<weight>175.3</weight>
<birthday>1955-03-23</birthday>
<!-- new attribute prefix! -->
<nsp:link xmlns:nspY="http://www.pok.xyz.com" nspY:subordinates="worker"/>
</person>
</nsp:personnel>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.dft2.xyz.com" xmlns:nsp="http://www.pok.xyz.com" xmlns:ns1="http://www.dft2.xyz.com" xmlns:ns2="http://www.abc.xyz.com" xmlns:ns3="http://www.dft1.xyz.com" xmlns:nss="http://www.svl.xyz.com">
<xs:import schemaLocation="XMLSample.xsd"/>
<xs:import namespace="http://www.abc.xyz.com" schemaLocation="ns2.xsd"/>
<xs:import namespace="http://www.dft1.xyz.com" schemaLocation="ns3.xsd"/>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.abc.xyz.com" xmlns:nsp="http://www.pok.xyz.com" xmlns:ns1="http://www.dft2.xyz.com" xmlns:ns2="http://www.abc.xyz.com" xmlns:ns3="http://www.dft1.xyz.com" xmlns:nss="http://www.svl.xyz.com">
<xs:import schemaLocation="XMLSample.xsd"/>
<xs:import namespace="http://www.dft1.xyz.com" schemaLocation="ns3.xsd"/>
<xs:import namespace="http://www.dft2.xyz.com" schemaLocation="ns1.xsd"/>

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.dft1.xyz.com" xmlns:nsp="http://www.pok.xyz.com" xmlns:ns1="http://www.dft2.xyz.com" xmlns:ns2="http://www.abc.xyz.com" xmlns:ns3="http://www.dft1.xyz.com" xmlns:nss="http://www.svl.xyz.com">
<xs:import schemaLocation="XMLSample.xsd"/>
<xs:import namespace="http://www.abc.xyz.com" schemaLocation="ns2.xsd"/>
<xs:import namespace="http://www.dft2.xyz.com" schemaLocation="ns1.xsd"/>
<xs:import namespace="http://www.pok.xyz.com" schemaLocation="nsp.xsd"/>
<xs:import namespace="http://www.svl.xyz.com" schemaLocation="nss.xsd"/>
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns3:name"/>
<xs:element ref="ns3:email"/>
<xs:element ref="ns3:YearsOfService"/>
<xs:element ref="ns3:weight"/>
<xs:element ref="ns3:birthday"/>
<xs:element ref="ns3:link"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:NCName"/>
</xs:complexType>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.pok.xyz.com" xmlns:nsp="http://www.pok.xyz.com" xmlns:ns1="http://www.dft2.xyz.com" xmlns:ns2="http://www.abc.xyz.com" xmlns:ns3="http://www.dft1.xyz.com" xmlns:nss="http://www.svl.xyz.com">
<xs:import schemaLocation="XMLSample.xsd"/>
<xs:import namespace="http://www.abc.xyz.com" schemaLocation="ns2.xsd"/>
<xs:import namespace="http://www.dft1.xyz.com" schemaLocation="ns3.xsd"/>
<xs:import namespace="http://www.dft2.xyz.com" schemaLocation="ns1.xsd"/>
<xs:import namespace="http://www.svl.xyz.com" schemaLocation="nss.xsd"/>
<xs:element name="personnel">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="person"/>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.svl.xyz.com" xmlns:nsp="http://www.pok.xyz.com" xmlns:ns1="http://www.dft2.xyz.com" xmlns:ns2="http://www.abc.xyz.com" xmlns:ns3="http://www.dft1.xyz.com" xmlns:nss="http://www.svl.xyz.com">
<xs:import schemaLocation="XMLSample.xsd"/>
<xs:import namespace="http://www.abc.xyz.com" schemaLocation="ns2.xsd"/>
<xs:import namespace="http://www.dft1.xyz.com" schemaLocation="ns3.xsd"/>
<xs:import namespace="http://www.dft2.xyz.com" schemaLocation="ns1.xsd"/>
<xs:import namespace="http://www.pok.xyz.com" schemaLocation="nsp.xsd"/>
<xs:element name="name">
<xs:complexType>

View File

@@ -0,0 +1,187 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="MediaWiki 1.16alpha-wmf" />
<meta name="keywords" content="Efficient XML Interchange,2007,Binary XML,Binary file,Fast Infoset,May 8,World Wide Web Consortium,XML,Efficient XML Interchange Working Group" />
<link rel="canonical" href="/wiki/Efficient_XML_Interchange" />
<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Efficient_XML_Interchange&amp;action=edit" />
<link rel="edit" title="Edit this page" href="/w/index.php?title=Efficient_XML_Interchange&amp;action=edit" />
<link rel="apple-touch-icon" href="http://en.wikipedia.org/apple-touch-icon.png" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Wikipedia (en)" />
<link rel="copyright" href="http://creativecommons.org/licenses/by-sa/3.0/" />
<link rel="alternate" type="application/rss+xml" title="Wikipedia RSS Feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Wikipedia Atom Feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom" />
<title>Efficient XML Interchange - Wikipedia, the free encyclopedia</title>
<link rel="stylesheet" href="/skins-1.5/common/shared.css?230" type="text/css" media="screen" />
<link rel="stylesheet" href="/skins-1.5/common/commonPrint.css?230" type="text/css" media="print" />
<link rel="stylesheet" href="/skins-1.5/monobook/main.css?230" type="text/css" media="screen" />
<link rel="stylesheet" href="/skins-1.5/chick/main.css?230" type="text/css" media="handheld" />
<!--[if lt IE 5.5000]><link rel="stylesheet" href="/skins-1.5/monobook/IE50Fixes.css?230" type="text/css" media="screen" /><![endif]-->
<!--[if IE 5.5000]><link rel="stylesheet" href="/skins-1.5/monobook/IE55Fixes.css?230" type="text/css" media="screen" /><![endif]-->
<!--[if IE 6]><link rel="stylesheet" href="/skins-1.5/monobook/IE60Fixes.css?230" type="text/css" media="screen" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="/skins-1.5/monobook/IE70Fixes.css?230" type="text/css" media="screen" /><![endif]-->
<link rel="stylesheet" href="/w/index.php?title=MediaWiki:Common.css&amp;usemsgcache=yes&amp;ctype=text%2Fcss&amp;smaxage=2678400&amp;action=raw&amp;maxage=2678400" type="text/css" />
<link rel="stylesheet" href="/w/index.php?title=MediaWiki:Print.css&amp;usemsgcache=yes&amp;ctype=text%2Fcss&amp;smaxage=2678400&amp;action=raw&amp;maxage=2678400" type="text/css" media="print" />
<link rel="stylesheet" href="/w/index.php?title=MediaWiki:Handheld.css&amp;usemsgcache=yes&amp;ctype=text%2Fcss&amp;smaxage=2678400&amp;action=raw&amp;maxage=2678400" type="text/css" media="handheld" />
<link rel="stylesheet" href="/w/index.php?title=MediaWiki:Monobook.css&amp;usemsgcache=yes&amp;ctype=text%2Fcss&amp;smaxage=2678400&amp;action=raw&amp;maxage=2678400" type="text/css" />
<link rel="stylesheet" href="/w/index.php?title=-&amp;action=raw&amp;maxage=2678400&amp;gen=css" type="text/css" />
<!--[if lt IE 7]><script type="text/javascript" src="/skins-1.5/common/IEFixes.js?230"></script>
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
<script type="text/javascript"></script>
<script type="text/javascript" src="/skins-1.5/common/wikibits.js?230"><!-- wikibits js --></script>
<!-- Head Scripts -->
<script type="text/javascript" src="/skins-1.5/common/ajax.js?230"></script>
<script type="text/javascript" src="/skins-1.5/common/mwsuggest.js?230"></script>
<script type="text/javascript"></script>
<script type="text/javascript" src="http://upload.wikimedia.org/centralnotice/wikipedia/en/centralnotice.js?230"></script>
<script type="text/javascript" src="/w/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=monobook"><!-- site js --></script>
</head>
<body class="mediawiki ltr ns-0 ns-subject page-Efficient_XML_Interchange skin-monobook">
<div id="globalWrapper">
<div id="column-content">
<div id="content">
<a name="top" id="top"></a>
<div id="siteNotice"><script type='text/javascript'>if (wgNotice != '') document.writeln(wgNotice);</script></div> <h1 id="firstHeading" class="firstHeading">Efficient XML Interchange</h1>
<div id="bodyContent">
<h3 id="siteSub">From Wikipedia, the free encyclopedia</h3>
<div id="contentSub">  (Redirected from <a href="/w/index.php?title=EXI&amp;redirect=no" title="EXI">EXI</a>)</div>
<div id="jump-to-nav">Jump to: <a href="#column-one">navigation</a>, <a href="#searchInput">search</a></div> <!-- start content -->
<p><b>Efficient XML Interchange</b> (EXI) is a proposed data format from the <a href="/w/index.php?title=Efficient_XML_Interchange_Working_Group&amp;action=edit&amp;redlink=1" class="new" title="Efficient XML Interchange Working Group (page does not exist)">Efficient XML Interchange Working Group</a> of the <a href="/wiki/World_Wide_Web_Consortium" title="World Wide Web Consortium">World Wide Web Consortium</a> (W3C). It is one of the various efforts to encode <a href="/wiki/XML" title="XML">XML</a> documents in a <a href="/wiki/Binary_file" title="Binary file">binary data format</a>, rather than plain text.</p>
<p>Using a binary XML format generally reduces the verbosity of XML documents, and may reduce cost of parsing. Performance of writing (generating) content is usually not similarly improved, although this depends on actual binary representation used.</p>
<p>The EXI format is derived from the AgileDelta Efficient XML format<sup id="cite_ref-0" class="reference"><a href="#cite_note-0"><span>[</span>1<span>]</span></a></sup>.</p>
<p><a name="See_also" id="See_also"></a></p>
<h2><span class="editsection">[<a href="/w/index.php?title=Efficient_XML_Interchange&amp;action=edit&amp;section=1" title="Edit section: See also">edit</a>]</span> <span class="mw-headline">See also</span></h2>
<ul>
<li><a href="/wiki/Binary_XML" title="Binary XML">Binary XML</a></li>
<li><a href="/wiki/Fast_Infoset" title="Fast Infoset">Fast Infoset</a></li>
</ul>
<p><a name="References" id="References"></a></p>
<h2><span class="editsection">[<a href="/w/index.php?title=Efficient_XML_Interchange&amp;action=edit&amp;section=2" title="Edit section: References">edit</a>]</span> <span class="mw-headline">References</span></h2>
<div class="references-small references-column-count references-column-count-2" style="-moz-column-count:2; column-count:2;">
<ol class="references">
<li id="cite_note-0"><b><a href="#cite_ref-0">^</a></b> <cite style="font-style:normal" class="web">"<a href="http://www.agiledelta.com/product_efx.html" class="external text" title="http://www.agiledelta.com/product_efx.html" rel="nofollow">Lightning-Fast Delivery of XML to More Devices in More Locations</a>". AgileDelta. <span class="mw-formatted-date" title="2007-05-08"><a href="/wiki/2007" title="2007">2007</a>-<a href="/wiki/May_8" title="May 8">05-08</a></span><span class="printonly">. <a href="http://www.agiledelta.com/product_efx.html" class="external free" title="http://www.agiledelta.com/product_efx.html" rel="nofollow">http://www.agiledelta.com/product_efx.html</a></span><span class="reference-accessdate">. Retrieved on 2007-07-17</span>.</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Lightning-Fast+Delivery+of+XML+to+More+Devices+in+More+Locations&amp;rft.atitle=&amp;rft.date=%5B%5B2007-05-08%5D%5D&amp;rft.pub=AgileDelta&amp;rft_id=http%3A%2F%2Fwww.agiledelta.com%2Fproduct_efx.html&amp;rfr_id=info:sid/en.wikipedia.org:Efficient_XML_Interchange"><span style="display: none;">&#160;</span></span></li>
</ol>
</div>
<p><a name="External_links" id="External_links"></a></p>
<h2><span class="editsection">[<a href="/w/index.php?title=Efficient_XML_Interchange&amp;action=edit&amp;section=3" title="Edit section: External links">edit</a>]</span> <span class="mw-headline">External links</span></h2>
<ul>
<li><a href="http://www.w3.org/TR/exi/" class="external text" title="http://www.w3.org/TR/exi/" rel="nofollow">Efficient XML Interchange Format 1.0 (Working Draft)</a></li>
<li><a href="http://www.w3.org/XML/EXI/" class="external text" title="http://www.w3.org/XML/EXI/" rel="nofollow">Efficient XML Interchange Working Group home page</a></li>
<li><a href="http://exificient.sourceforge.net/" class="external text" title="http://exificient.sourceforge.net/" rel="nofollow">EXIficient - Open Source implementation of the EXI Format 1.0</a></li>
<li><a href="http://www.w3.org/TR/2005/NOTE-xbc-characterization-20050331/" class="external text" title="http://www.w3.org/TR/2005/NOTE-xbc-characterization-20050331/" rel="nofollow">W3C binary XML requirements</a></li>
</ul>
<!--
NewPP limit report
Preprocessor node count: 442/1000000
Post-expand include size: 3563/2048000 bytes
Template argument size: 1161/2048000 bytes
Expensive parser function count: 0/500
-->
<!-- Saved in parser cache with key enwiki:pcache:idhash:12060598-0!1!0!default!!en!2 and timestamp 20090721142028 -->
<div class="printfooter">
Retrieved from "<a href="http://en.wikipedia.org/wiki/Efficient_XML_Interchange">http://en.wikipedia.org/wiki/Efficient_XML_Interchange</a>"</div>
<div id='catlinks' class='catlinks'><div id="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <span dir='ltr'><a href="/wiki/Category:XML" title="Category:XML">XML</a></span> | <span dir='ltr'><a href="/wiki/Category:Markup_languages" title="Category:Markup languages">Markup languages</a></span> | <span dir='ltr'><a href="/wiki/Category:World_Wide_Web_Consortium_standards" title="Category:World Wide Web Consortium standards">World Wide Web Consortium standards</a></span> | <span dir='ltr'><a href="/wiki/Category:Computer_file_formats" title="Category:Computer file formats">Computer file formats</a></span></div></div> <!-- end content -->
<div class="visualClear"></div>
</div>
</div>
</div>
<div id="column-one">
<div id="p-cactions" class="portlet">
<h5>Views</h5>
<div class="pBody">
<ul lang="en" xml:lang="en">
<li id="ca-nstab-main" class="selected"><a href="/wiki/Efficient_XML_Interchange" title="View the content page [c]" accesskey="c">Article</a></li>
<li id="ca-talk"><a href="/wiki/Talk:Efficient_XML_Interchange" title="Discussion about the content page [t]" accesskey="t">Discussion</a></li>
<li id="ca-edit"><a href="/w/index.php?title=Efficient_XML_Interchange&amp;action=edit" title="You can edit this page. &#10;Please use the preview button before saving. [e]" accesskey="e">Edit this page</a></li>
<li id="ca-history"><a href="/w/index.php?title=Efficient_XML_Interchange&amp;action=history" title="Past versions of this page [h]" accesskey="h">History</a></li> </ul>
</div>
</div>
<div class="portlet" id="p-personal">
<h5>Personal tools</h5>
<div class="pBody">
<ul lang="en" xml:lang="en">
<li id="pt-login"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Efficient_XML_Interchange" title="You are encouraged to log in; however, it is not mandatory. [o]" accesskey="o">Log in / create account</a></li>
</ul>
</div>
</div>
<div class="portlet" id="p-logo">
<a style="background-image: url(http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png);" href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"></a>
</div>
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
<div class='generated-sidebar portlet' id='p-navigation'>
<h5 lang="en" xml:lang="en">Navigation</h5>
<div class='pBody'>
<ul>
<li id="n-mainpage-description"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a></li>
<li id="n-contents"><a href="/wiki/Portal:Contents" title="Guides to browsing Wikipedia">Contents</a></li>
<li id="n-featuredcontent"><a href="/wiki/Portal:Featured_content" title="Featured content — the best of Wikipedia">Featured content</a></li>
<li id="n-currentevents"><a href="/wiki/Portal:Current_events" title="Find background information on current events">Current events</a></li>
<li id="n-randompage"><a href="/wiki/Special:Random" title="Load a random article [x]" accesskey="x">Random article</a></li>
</ul>
</div>
</div>
<div id="p-search" class="portlet">
<h5 lang="en" xml:lang="en"><label for="searchInput">Search</label></h5>
<div id="searchBody" class="pBody">
<form action="/w/index.php" id="searchform"><div>
<input type='hidden' name="title" value="Special:Search"/>
<input id="searchInput" name="search" type="text" title="Search Wikipedia [f]" accesskey="f" value="" />
<input type='submit' name="go" class="searchButton" id="searchGoButton" value="Go" title="Go to a page with this exact name if one exists" />&nbsp;
<input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="Search" title="Search Wikipedia for this text" />
</div></form>
</div>
</div>
<div class='generated-sidebar portlet' id='p-interaction'>
<h5 lang="en" xml:lang="en">Interaction</h5>
<div class='pBody'>
<ul>
<li id="n-aboutsite"><a href="/wiki/Wikipedia:About" title="Find out about Wikipedia">About Wikipedia</a></li>
<li id="n-portal"><a href="/wiki/Wikipedia:Community_portal" title="About the project, what you can do, where to find things">Community portal</a></li>
<li id="n-recentchanges"><a href="/wiki/Special:RecentChanges" title="The list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li>
<li id="n-contact"><a href="/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia">Contact Wikipedia</a></li>
<li id="n-sitesupport"><a href="http://wikimediafoundation.org/wiki/Donate/Now/en?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=spontaneous_donation" title="Support us">Donate to Wikipedia</a></li>
<li id="n-help"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia">Help</a></li>
</ul>
</div>
</div>
<div class="portlet" id="p-tb">
<h5 lang="en" xml:lang="en">Toolbox</h5>
<div class="pBody">
<ul>
<li id="t-whatlinkshere"><a href="/wiki/Special:WhatLinksHere/Efficient_XML_Interchange" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j">What links here</a></li>
<li id="t-recentchangeslinked"><a href="/wiki/Special:RecentChangesLinked/Efficient_XML_Interchange" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li>
<li id="t-upload"><a href="/wiki/Wikipedia:Upload" title="Upload files [u]" accesskey="u">Upload file</a></li>
<li id="t-specialpages"><a href="/wiki/Special:SpecialPages" title="List of all special pages [q]" accesskey="q">Special pages</a></li>
<li id="t-print"><a href="/w/index.php?title=Efficient_XML_Interchange&amp;printable=yes" rel="alternate" title="Printable version of this page [p]" accesskey="p">Printable version</a></li> <li id="t-permalink"><a href="/w/index.php?title=Efficient_XML_Interchange&amp;oldid=281230446" title="Permanent link to this revision of the page">Permanent link</a></li><li id="t-cite"><a href="/w/index.php?title=Special:Cite&amp;page=Efficient_XML_Interchange&amp;id=281230446">Cite this page</a></li> </ul>
</div>
</div>
</div><!-- end of the left (by default at least) column -->
<div class="visualClear"></div>
<div id="footer">
<div id="f-poweredbyico"><a href="http://www.mediawiki.org/"><img src="/skins-1.5/common/images/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" /></a></div>
<div id="f-copyrightico"><a href="http://wikimediafoundation.org/"><img src="/images/wikimedia-button.png" alt="Wikimedia Foundation"/></a></div>
<ul id="f-list">
<li id="lastmod"> This page was last modified on 2 April 2009 at 04:58.</li>
<li id="copyright">Text is available under the <a href="http://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License">Creative Commons Attribution/Share-Alike License</a>;
additional terms may apply.
See <a href="http://wikimediafoundation.org/wiki/Terms_of_Use">Terms of Use</a> for details.<br/>
Wikipedia&reg; is a registered trademark of the <a href="http://www.wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li>
<li id="privacy"><a href="http://wikimediafoundation.org/wiki/Privacy_policy" class="extiw" title="wikimedia:Privacy policy">Privacy policy</a></li>
<li id="about"><a href="/wiki/Wikipedia:About" title="Wikipedia:About">About Wikipedia</a></li>
<li id="disclaimer"><a href="/wiki/Wikipedia:General_disclaimer" title="Wikipedia:General disclaimer">Disclaimers</a></li>
</ul>
</div>
</div>
<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
<!-- Served by srv216 in 0.105 secs. --></body></html>

View File

@@ -0,0 +1,381 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head profile="http://www.w3.org/2000/08/w3c-synd/#">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="W3C, World Wide Web, Web, WWW, Consortium, computer, access, accessibility, semantic, worldwide, W3, HTML, XML, standard, language, technology, link, CSS, RDF, XSL, Berners-Lee, Berners, Lee, style sheet, cascading, schema, XHTML, mobile, SVG, PNG, PICS, DOM, SMIL, MathML, markup, Amaya, Jigsaw, free, open source, software" />
<meta name="description" content="The World Wide Web Consortium (W3C) is an international consortium where Member organizations, a full-time staff, and the public work together to develop Web standards. W3C primarily pursues its mission through the creation of Web standards and guidelines designed to ensure long-term growth for the Web. Over 400 organizations are Members of the Consortium. W3C is jointly run by the MIT Computer Science and Artificial Intelligence Laboratory (MIT CSAIL) in the USA, the European Research Consortium for Informatics and Mathematics (ERCIM) headquartered in France, Keio University in Japan, and has additional Offices worldwide." />
<title>World Wide Web Consortium - Web Standards</title>
<link rel="meta" href="/Overview-about.rdf" />
<link rel="stylesheet" type="text/css" href="/StyleSheets/home.css" />
<link rel="bookmark" href="#technologies" title="Technologies |" />
<link rel="bookmark" href="#news" title="News |" />
<link rel="bookmark" href="#search" title="Search |" />
<link rel="contents" href="#contents" title="Contents |" />
<link rel="bookmark" href="#Offices" title="Offices |" />
<link rel="bookmark" href="#systems" title="Systems |" />
<link rel="bookmark" href="#donors" title="Supporters |" />
<link rel="bookmark" href="#footnotes" title="Footnotes |" />
<link rel="alternate" type="application/rss+xml" title="W3C Home Page News RSS Channel" href="http://www.w3.org/2000/08/w3c-synd/home.rss" />
<style type="text/css">
/**/
div.spot-image img {
margin-bottom: 20px;
}
/**/</style>
</head>
<body>
<h1 id="logo"><img alt="The World Wide Web Consortium (W3C)" height="48" width="315" src="/Icons/w3c_main" /></h1>
<h2 id="slogan">Leading the Web to Its Full Potential...</h2>
<div>
<map name="introLinks" id="introLinks" title="Introductory Links">
<div class="banner">
<span class="invisible"><a class="bannerLink" title="Skip introductory links and the mission statement" href="#technologies">Skip to Technologies</a> |</span> <a class="bannerLink" title="W3C Activities" accesskey="A" href="/Consortium/activities">Activities</a> | <a class="bannerLink" title="Technical Reports and Recommendations" accesskey="T" href="/TR/">Technical Reports</a> | <a class="bannerLink" title="Alphabetical Site Index" accesskey="S" href="/Consortium/siteindex">Site Index</a> | <a class="bannerLink" title="Help for new visitors" accesskey="N" href="/Consortium/new-to-w3c">New Visitors</a> | <a class="bannerLink" title="About W3C" accesskey="B" href="/Consortium/">About W3C</a> | <a class="bannerLink" title="Join W3C" accesskey="J" href="/Consortium/join">Join W3C</a> | <a class="bannerLink" title="Contact W3C" accesskey="C" href="/Consortium/contact">Contact
W3C</a> </div>
</map>
</div>
<p class="small">The World Wide Web Consortium (<acronym title="World Wide Web Consortium">W3C</acronym>) develops interoperable
technologies (specifications, guidelines, software, and tools) to lead the
Web to its full potential. W3C is a forum for information, commerce,
communication, and collective understanding. On this page, you'll find <a href="#news">W3C news</a>, links to <a href="#technologies">W3C
technologies</a> and ways to <a href="#contents">get involved</a>. New
visitors can find help in <cite><a href="/Consortium/new-to-w3c">Finding Your
Way at W3C</a></cite>. We encourage organizations to learn more <a href="/Consortium/">about W3C</a> and <a href="/Consortium/membership">about
W3C Membership</a>.</p>
<div class="navBlock">
<h2 class="spot-head">Validator Donation Program</h2>
<div class="spot">
<p class="spot-block">
<a href="/QA/Tools/Donate"><img style="border:none" class="newsImage" alt="I Love Validator" src="/QA/Tools/I_heart_validator.png" /></a>
<a href="/QA/Tools/Donate">Make a donation</a> or become a
<a href="/QA/Tools/Donate#donate_sponsors">sponsor</a>
of the <a href="http://validator.w3.org/">W3C Validator</a>.</p>
</div>
<h2 style="clear:left" class="spot-head">W3C Supporters</h2>
<div class="spot">
<p class="spot-block">Help W3C by making a donation through the <a href="/Consortium/sup">W3C Supporters Program</a>.</p>
</div>
<h2 class="spot-head">Employment</h2>
<div class="spot">
<p class="spot-block">
<strong>W3C is seeking a
<a href="/Consortium/Recruitment/">Managing Director</a></strong>.</p>
<p class="spot-block">
Current <a href="/Consortium/Recruitment/Fellows#openings">W3C Fellows Program
openings</a> are <a href="/2007/01/comm-fellow1">Business and Technology
Communications Specialist</a>; <a href="/2007/01/SysteamFellowsPosition">Software Engineer</a>.</p>
</div>
<h2 class="navhead"><a name="technologies" id="technologies">W3C A to
Z</a></h2>
<ul>
<li class="invisible"><a class="navlink" title="Skip W3C A-Z" href="#news">Skip to News</a></li>
<li><a href="/WAI/" class="navlink">Accessibility</a></li>
<li><a href="/Amaya/" class="navlink">Amaya</a></li>
<li><a href="/Mobile/CCPP/" class="navlink"><abbr title="Composite Capability/Preference Profiles">CC/PP</abbr></a></li>
<li><a href="/2004/CDF/" class="navlink">Compound Document Formats
(CDF)</a></li>
<li><a href="/Style/CSS/" class="navlink"><abbr title="Cascading Style Sheets">CSS</abbr></a></li>
<li><a href="http://jigsaw.w3.org/css-validator/" class="navlink"><abbr title="Cascading Style Sheets">CSS</abbr> Validator</a></li>
<li><a href="/2002/ws/databinding/" class="navlink">Databinding</a></li>
<li><a href="/DOM/" class="navlink"><acronym title="Document Object Model">DOM</acronym></a></li>
<li><a href="/XML/EXI" class="navlink">Efficient XML Interchange</a></li>
<li><a href="/2008/geolocation/" class="navlink">Geolocation</a></li>
<li><a href="/2007/eGov/" class="navlink">eGovernment</a></li>
<li><a href="/2001/sw/grddl-wg/" class="navlink"><acronym title="Gleaning Resource Descriptions from Dialects of Languages">GRDDL</acronym></a></li>
<li><a href="/2001/sw/hcls/" class="navlink">Health Care and Life
Sciences</a></li>
<li><a href="/html/" class="navlink"><abbr title="HyperText Markup Language">HTML</abbr></a></li>
<li><a href="/People/Raggett/tidy/" class="navlink"><abbr title="HyperText Markup Language">HTML</abbr> Tidy</a></li>
<li><a href="http://validator.w3.org/" class="navlink"><abbr title="HyperText Markup Language">HTML</abbr> Validator</a></li>
<li><a href="/Protocols/" class="navlink"><abbr title="Hypertext Transfer Protocol">HTTP</abbr></a></li>
<li><a href="/2005/Incubator/" class="navlink">Incubator</a></li>
<li><a href="/2002/mmi/ink" class="navlink">InkML</a></li>
<li><a href="/International/" class="navlink">Internationalization</a></li>
<li><a href="/Jigsaw/" class="navlink">Jigsaw</a></li>
<li><a href="/Library/" class="navlink">Libwww</a></li>
<li><a href="/Math/" class="navlink">MathML</a></li>
<li><a href="/2008/WebVideo/Annotations/">Media Annotations</a></li>
<li><a href="/2008/WebVideo/Fragments/">Media Fragments</a></li>
<li><a href="/Mobile/" class="navlink">Mobile Web Initiative
(W3C-MWI)</a></li>
<li><a href="/2002/mmi/" class="navlink">Multimodal Interaction</a></li>
<li><a href="/2004/OWL/" class="navlink"><acronym title="OWL Web Ontology Language">OWL</acronym></a></li>
<li><a href="/2004/pp/" class="navlink">Patent Policy</a></li>
<li><a href="/PICS/" class="navlink"><acronym title="Platform for Internet Content Selection">PICS</acronym></a></li>
<li><a href="/Graphics/PNG/" class="navlink"><acronym title="Portable Network Graphics">PNG</acronym></a></li>
<li><a href="/2007/powder/" class="navlink"><acronym title="Protocol for Web Description Resources">POWDER</acronym></a></li>
<li><a href="/P3P/" class="navlink">Privacy and <abbr title="Platform for Privacy Preferences">P3P</abbr></a></li>
<li><a href="/RDF/" class="navlink"><abbr title="Resource Description Framework">RDF</abbr></a></li>
<li><a href="/2005/rules/" class="navlink">Rules</a></li>
<li><a href="/Security/" class="navlink">Security</a></li>
<li><a href="/2001/sw/" class="navlink">Semantic Web</a></li>
<li><a href="/XML/SML" class="navlink">Service Modeling Language (<abbr title="Service Modeling Language">SML</abbr>)</a></li>
<li><a href="/AudioVideo/" class="navlink"><acronym title="Synchronized Multimedia Integration Language">SMIL</acronym></a></li>
<li><a href="/2000/xp/Group/" class="navlink"><acronym title="Soap">SOAP</acronym>/<abbr title="XML Protocol">XMLP</abbr></a></li>
<li><a href="/2002/ws/soapjms/" class="navlink"><acronym title="Soap">SOAP-JMS</acronym></a></li>
<li><a href="/2001/sw/DataAccess/" class="navlink"><acronym title="Simple Protocol and RDF Query Language">SPARQL</acronym></a></li>
<li><a href="/Style/" class="navlink">Style</a></li>
<li><a href="/Graphics/SVG/" class="navlink"><abbr title="Scalable Vector Graphics">SVG</abbr></a></li>
<li><a href="/2001/tag/" class="navlink"><abbr title="Technical Architecture Group">TAG</abbr></a></li>
<li><a href="/AudioVideo/TT/" class="navlink">Timed Text</a></li>
<li><a href="/Addressing/" class="navlink"><abbr title="Uniform Resource Identifiers">URI/URL</abbr></a></li>
<li><a href="/QA/Tools/#validators" class="navlink">Validators</a></li>
<li><a href="/2008/WebVideo/">Video</a></li>
<li><a href="/Voice/" class="navlink">Voice</a></li>
<li><a href="/2007/uwa/" class="navlink">Ubiquitous Web
Applications</a></li>
<li><a href="/WAI/" class="navlink"><acronym title="Web Accessibility Initiative">WAI</acronym></a></li>
<li><a href="/2008/webapps/" class="navlink">Web Applications</a></li>
<li><a href="/2001/tag/" class="navlink">Web Architecture (<acronym title="Technical Architecture Group">TAG</acronym>)</a></li>
<li><a href="/Graphics/WebCGM/WG/" class="navlink"><abbr title="Web Computer Graphics Metafile">WebCGM</abbr></a></li>
<li><a href="/2002/ws/" class="navlink">Web Services</a></li>
<li><a href="/2008/webapps/wiki/Main_Page#Widgets" class="navlink">Widgets</a></li>
<li><a href="/2002/ws/addr/" class="navlink"><abbr title="Web Services">WS</abbr>-Addressing</a></li>
<li><a href="/2002/ws/chor/" class="navlink"><abbr title="Web Services Choreography Description Language">WS-CDL</abbr></a></li>
<li><a href="/2002/ws/ra/" class="navlink"><abbr title="Web Services Resource Access">WS-Resource Access</abbr></a></li>
<li><a href="/2002/ws/desc/" class="navlink"><acronym title="Web Services Description Language">WSDL</acronym></a></li>
<li><a href="/2002/ws/policy/" class="navlink"><abbr title="Web Services">WS</abbr>-Policy</a></li>
<li><a href="/MarkUp/Forms/" class="navlink"><acronym title="Next Generation Web Forms">XForms</acronym></a></li>
<li><a href="/MarkUp/" class="navlink"><abbr title="Extensible HyperText Markup Language">XHTML</abbr></a></li>
<li><a href="/MarkUp/" class="navlink"><abbr title="Extensible HyperText Markup Language">XHTML2</abbr></a></li>
<li><a href="/XML/Linking" class="navlink"><acronym title="XML Link">XLink</acronym></a></li>
<li><a href="/XML/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr></a></li>
<li><a href="/TR/xmlbase/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Base</a></li>
<li><a href="/2001/XKMS/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Key Management</a></li>
<li><a href="/XML/Processing/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Processing</a></li>
<li><a href="/XML/Query" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Query</a></li>
<li><a href="/XML/Schema" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Schema</a></li>
<li><a href="/2008/xmlsec/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Signature and
Encryption</a></li>
<li><a href="/Style/XSL/" class="navlink">XPath</a></li>
<li><a href="/XML/Linking" class="navlink">XPointer</a></li>
<li><a href="/Style/XSL/" class="navlink"><acronym title="Extensible Stylesheet Language">XSL</acronym> and <acronym title="XSL Transformations">XSLT</acronym></a></li>
</ul>
<p><a href="/Consortium/siteindex" class="navlink">More topics...</a></p>
</div>
<div class="newsBlock">
<h2 class="newsHeading"><a name="news" id="news">News</a></h2>
<p class="invisible"><a title="Skip News" href="#search">Skip to
Search</a></p>
<div id="item136" class="item"><h3 class="headline">Six XML Security Documents Published</h3><p><span class="date">2009-07-31:</span> The <a href="/2008/xmlsec/">XML Security Working Group</a> published six documents related to XML signature and encryption. XML Signatures provide integrity, message authentication, and/or signer authentication services for data of any type, whether located within the XML that includes the signature or elsewhere. </p> <ul> <li><a href="/TR/2009/WD-xmldsig-bestpractices-20090730/">XML Signature Best Practices</a>. This Working Draft describes best practices related to improving security and mitigating attacks, yet others are for best practices in the practical use of XML Signature, such as signing XML that doesn't use namespaces, for example.</li> <li><a href="/TR/2009/WD-xmldsig-core1-20090730/">XML Signature Syntax and Processing Version 1.1</a>. This Working Draft updates the signature specification.</li> <li><a href="/TR/2009/WD-xmldsig-simplify-20090730/">XML Signature Transform Simplification: Requirements and Design</a>. This Working Draft outlines a proposed simplification of the XML Signature Transform mechanism, intended to enhance security, performance, streamability and to ease adoption.</li> <li><a href="/TR/2009/WD-xmlenc-core1-20090730/">W3C XML Encryption Syntax and Processing Version 1.1</a>. This Working Draft updates the encryption specification.</li> <li><a href="/TR/2009/WD-xmlsec-generic-hybrid-20090730/">XML Security Generic Hybrid Ciphers</a>. This First Public Working Draft augments XML Encryption Version 1.1 by defining algorithms, XML types and elements necessary to enable use of generic hybrid ciphers in XML Security applications.</li> <li><a href="/TR/2009/WD-xmlsec-algorithms-20090730/">XML Security Algorithm Cross-Reference</a>. This Group Note collects the various known URIs for encryption algorithms (at the time of its publication) and indicates which specifications define them.</li> </ul> <p>Learn more about the <a href="/Security/">Security Activity</a>.<span class="archive"> (<a title="Six XML Security Documents Published" href="/News/2009#item136" rel="details">Permalink</a>) </span></p></div>
<div id="item135" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Daniel Weitzner Named to Run US Government Internet Policy Unit</h3><p><span class="date">2009-07-30:</span> Daniel Weitzner has been named Associate Administrator for the Office of Policy Analysis and Development at the <a href="http://www.ntia.doc.gov/opadhome/staffbios.htm">US National Telecommunications and Information Administration (NTIA)</a>. Danny will have a leading role in fulfilling the NTIA's mandate to provide the President advice on telecommunications and information policy issues.</p> <p>Danny will thus be leaving the W3C staff, which he joined in 1998 as the Technology and Society Domain Lead. During these 11 years, Danny has contributed significantly to advances in many areas where policy meets technology, including privacy, security, intellectual property, and trust. As Chair of the Patent Policy Working Group, Danny led the effort that culminated in W3C's Royalty-Free Patent Policy, now a cornerstone of W3C's value proposition to the Web community.</p> <p>Before joining the W3C, Danny was co-founder and Deputy Director of the Center for Democracy and Technology and was Deputy Policy Director of the Electronic Frontier Foundation. Danny is also Director of the the <a href="http://dig.csail.mit.edu/">MIT CSAIL Decentralized Information Group</a> with Tim Berners- Lee and a founding director of the Web Science Research Initiative and holds an appointment as Principal Research Scientist at MIT's Computer Science and Artificial Intelligence Laboratory.</p> <p>While W3C regrets that Danny will be stepping down from W3C, it is encouraging that US policy may well be shaped by someone who has demonstrated a commitment to open standards as a tool for improving society. Danny, good luck!<span class="archive"> (<a title="Daniel Weitzner Named to Run US Government Internet Policy Unit" href="/News/2009#item135" rel="details">Permalink</a>) </span></p></div>
<div id="item134" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />W3C Invites Implementations of Widgets 1.0: Packaging and Configuration</h3><p><span class="date">2009-07-24:</span> The <a href="/2008/webapps/">Web Applications Working Group</a> invites implementation of the Candidate Recommendation of <a href="/TR/2009/CR-widgets-20090723/">Widgets 1.0: Packaging and Configuration</a>. This specification standardizes a packaging format for software known as widgets. Widgets are client-side applications that are authored using Web standards, but whose content can also be embedded into Web documents. The specification relies on PKWare's Zip specification as the archive format, XML as a configuration document format, and a series of steps that runtimes follow when processing and verifying various aspects of a package. The packaging format acts as a container for files used by a widget. The Working Group plans to develop a <a href="http://dev.w3.org/2006/waf/widgets/tests/">test suite</a> during the Candidate Recommendation phase. Learn more about the <a href="/2006/rwc/">Rich Web Client Activity</a>.<span class="archive"> (<a title="W3C Invites Implementations of Widgets 1.0: Packaging and Configuration" href="/News/2009#item134" rel="details">Permalink</a>) </span></p></div>
<div id="item133" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />User Agent Accessibility Guidelines (UAAG) 2.0: Updated Working Draft</h3><p><span class="date">2009-07-23:</span> The <a href="/WAI/UA/">User Agent Accessibility Guidelines Working Group</a> has published an updated Working Draft of the <a href="/TR/2009/WD-UAAG20-20090723/">User Agent Accessibility Guidelines (UAAG) 2.0</a>. UAAG defines how browsers, media players, and other "user agents" should support accessibility for people with disabilities and work with assistive technologies. Read the <a href="http://lists.w3.org/Archives/Public/w3c-wai-ig/2009JulSep/0016.html">invitation to review the UAAG 2.0 Working Draft</a> and about the <a href="/WAI/">Web Accessibility Initiative (WAI)</a>. <span class="archive"> (<a title="User Agent Accessibility Guidelines (UAAG) 2.0: Updated Working Draft" href="/News/2009#item133" rel="details">Permalink</a>) </span></p></div>
<div id="item132" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Flexible Box Layout Module First Draft Published</h3><p><span class="date">2009-07-23:</span> The <a href="/Style/CSS/members">Cascading Style Sheets (CSS) Working Group</a> has published the First Public Working Draft of <a href="/TR/2009/WD-css3-flexbox-20090723/">Flexible Box Layout Module</a>. The draft describes a CSS box model optimized for interface design. It provides an additional layout system alongside the ones already in CSS. This model is based on the box model in the XUL user-interface language. Learn more about the <a href="/Style/">Style Activity</a>.<span class="archive"> (<a title="Flexible Box Layout Module First Draft Published" href="/News/2009#item132" rel="details">Permalink</a>) </span></p></div>
<div id="item131" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />CSS Image Values Module Level 3 First Draft Published</h3><p><span class="date">2009-07-23:</span> The <a href="/Style/CSS/members">Cascading Style Sheets (CSS) Working Group</a> has published the First Public Working Draft of <a href="/TR/2009/WD-css3-images-20090723/">CSS Image Values Module Level 3</a>. This CSS Image Values module defines the syntax for image values in CSS. Image values can be a single URI to an image, a list of URIs denoting a series of fallbacks, sprites (image slices), or gradients. Learn more about the <a href="/Style/">Style Activity</a>.<span class="archive"> (<a title="CSS Image Values Module Level 3 First Draft Published" href="/News/2009#item131" rel="details">Permalink</a>) </span></p></div>
<div id="item130" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />W3C Organizes Workshop on Improving Access to Financial Data on the Web</h3><p><span class="date">2009-07-16:</span> W3C invites people to participate in a <a href="/2009/03/xbrl/cfp.html">Workshop on Improving Access to Financial Data on the Web</a> on 5-6 October 2009 in Arlington, Virginia (USA). Workshop participants will discuss how to achieve greater transparency and more efficient reporting and analysis of business and financial data for companies and governments. The Workshop is jointly organized by W3C and <a href="http://www.xbrl.org/">XBRL International</a>, with hosting support from the <a href="http://www.fdic.gov/">Federal Deposit Insurance Corporation (FDIC)</a>. The extensible business reporting language (XBRL), is being widely adopted all around the world, and is set to become the standard way of recording, storing and transmitting business financial information. While effort on XBRL so far has gone into developing the standards and taxonomies of reporting concepts, comparatively little effort has been spent on how to exploit the expected flood of data. The goal of the Workshop is to identify opportunities, use cases, and challenges for interactive access to financial data expressed in XBRL and related languages, and the broader opportunities for using Semantic Web technologies. The Workshop is free of charge and open to anyone, subject to review of their statement of interest and space availability. Statements of interest (position papers) are due 21 August. See the <a href="/2009/03/xbrl/cfp">call for participation</a> for more information. Learn more about the <a href="/2001/sw/">Semantic Web</a>.<span class="archive"> (<a title="W3C Organizes Workshop on Improving Access to Financial Data on the Web" href="/News/2009#item130" rel="details">Permalink</a>) </span></p></div>
<div id="item129" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Best Practices for Authoring HTML: Handling Right-to-left Scripts Draft Published</h3><p><span class="date">2009-07-15:</span> The <a href="/International/core/">Internationalization Core Working Group</a> has published the Working Draft of <a href="/TR/2009/WD-i18n-html-tech-bidi-20090714/">Best Practices for Authoring HTML: Handling Right-to-left Scripts</a>. This document provides advice for the use of HTML markup and CSS style sheets to create pages for languages that use right-to-left scripts, such as Arabic, Hebrew, Persian, Thaana, Urdu, etc. It explains how to create content in right-to-left scripts that builds on but goes beyond the Unicode bidirectional algorithm, as well as how to prepare content for localization into right-to-left scripts. Learn more about the <a href="/International/">Internationalization Activity</a>.<span class="archive"> (<a title="Best Practices for Authoring HTML: Handling Right-to-left Scripts Draft Published" href="/News/2009#item129" rel="details">Permalink</a>) </span></p></div>
<div id="item128" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />XML Signature Correction Addresses Security Issue</h3><p><span class="date">2009-07-14:</span> The <a href="/2008/xmlsec">XML Security Working Group</a> has published a <a href="/2008/06/xmldsigcore-errata.html#e03">proposed correction</a> to the <a href="/TR/xmldsig-core/">XML Signature</a> specification. The correction addresses a specification-level security issue that can lead to an authentication bypass (<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0217">CVE-2009-0217</a>). It will be incorporated into an upcoming Working Draft for the <a href="/TR/xmldsig-core1/">XML Signature 1.1</a> specification. For information about affected implementations, see <a href="http://www.kb.cert.org/vuls/id/466161">CERT Vulnerability Note 466161</a>. For more information about the issue, see the <a href="/QA/2009/07/hmac_truncation_in_xml_signatu.html">W3C Q&amp;A blog</a>. Learn more about W3C's <a href="/Security/">Security Activity</a>.<span class="archive"> (<a title="XML Signature Correction Addresses Security Issue" href="/News/2009#item128" rel="details">Permalink</a>) </span></p></div>
<div id="item127" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Relationship Between Mobile Web (MWBP) and Web Content Accessibility (WCAG) Note Published</h3><p><span class="date">2009-07-09:</span> The <a href="/2005/MWI/BPWG/">Mobile Web Best Practices Working Group</a> and the <a href="/WAI/EO/"><acronym title="Web Accessibility Initiative">WAI</acronym> Education and Outreach Working Group</a> have published <a href="/TR/2009/NOTE-mwbp-wcag-20090709/">Relationship between Mobile Web Best Practices (MWBP) and Web Content Accessibility Guidelines (WCAG)</a> as a W3C Working Group Note. The groups encourage people to <strong>start by reading</strong> <a href="/WAI/mobile/">Web Content Accessibility and Mobile Web: Making a Web Site Accessible Both for People with Disabilities and for Mobile Devices</a>, which shows how design goals for accessibility and mobile access overlap. A third document, <a href="/WAI/mobile/experiences">Shared Web Experiences: Barriers Common to Mobile Device Users and People with Disabilities</a>, provides examples of barriers that people (without disabilities) face when interacting with Web content via mobile devices, and similar barriers for people with disabilities using desktop computers. Learn more about the <a href="/Mobile/">Mobile Web Initiative (MWI)</a> and the <a href="/WAI/">Web Accessibility Initiative (WAI)</a>.<span class="archive"> (<a title="Relationship Between Mobile Web (MWBP) and Web Content Accessibility (WCAG) Note Published" href="/News/2009#item127" rel="details">Permalink</a>) </span></p></div>
<div id="item126" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />XPath 2.0 and XQuery 1.0 Full Text Facility Test Suite Published</h3><p><span class="date">2009-07-09:</span> The XSL and XML Query Working Groups have published version 1.0 of the <a href="http://dev.w3.org/cvsweb/2007/xpath-full-text-10-test-suite/">XPath 2.0 and XQuery 1.0 Full Text Facility Test Suite</a>, and are requesting that people with implementations report results. The Full Text Facility provides a standard way of searching by word or phrase across multilingual documents or data represented using the XPath and XQuery Data Model. As a result of preliminary implementation experience, and to reflect comments received, the <a href="/TR/2009/CR-xpath-full-text-10-20090709/">Candidate Recommendation for the Full Text Facility</a> has also been republished: the new version incorporates editorial changes but also clarifies some ambiguities that had been reported. The Working Groups hope to move the document to Proposed Recommendation once more test results have been submitted. The <a href="/XML/Query/">XML Query</a> and <a href="/Style/XSL/">XSL</a> Working Groups also published today an update of <a href="/TR/2009/WD-xpath-full-text-10-use-cases-20090709/">XQuery and XPath Full Text 1.0 Use Cases</a>. Learn more about the <a href="/XML/Activity">XML Activity</a>.<span class="archive"> (<a title="XPath 2.0 and XQuery 1.0 Full Text Facility Test Suite Published" href="/News/2009#item126" rel="details">Permalink</a>) </span></p></div>
<div id="item125" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Last Call: Geolocation API Specification</h3><p><span class="date">2009-07-07:</span> The <a href="/2008/geolocation/">Geolocation Working Group</a> has published a Last Call Working Draft of <a href="/TR/2009/WD-geolocation-API-20090707/">Geolocation API Specification</a>. The Geolocation API defines a high-level interface to location information associated only with the device hosting the implementation, such as latitude and longitude. Common sources of location information include Global Positioning System (GPS) and location inferred from network signals such as IP address, RFID, WiFi and Bluetooth MAC addresses, and GSM/CDMA cell IDs, as well as user input. Comments are welcome through 10 August. Learn more about the <a href="/2007/uwa/">Ubiquitous Web Applications Activity</a>.<span class="archive"> (<a title="Last Call: Geolocation API Specification" href="/News/2009#item125" rel="details">Permalink</a>) </span></p></div>
<div id="item122" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />W3C Launches Device APIs and Policy Working Group</h3><p><span class="date">2009-07-03:</span> W3C launched a new <a href="/2009/dap/">Device APIs and Policy Working Group</a>, co-Chaired by Robin Berjon (Vodafone) and Frederick Hirsch (Nokia). The group's mission is to create client-side APIs that enable the development of Web Applications and Web Widgets that interact with devices services such as Calendar, Contacts, and Camera. Additionally, the group will produce a framework for the expression of security policies that govern access to security-critical APIs (such as the APIs listed previously). Per its <a href="/2009/05/DeviceAPICharter">charter</a>, this group will conduct its work in public. Learn more about the <a href="/2009/dap/">Device APIs and Policy Working Group</a>.<span class="archive"> (<a title="W3C Launches Device APIs and Policy Working Group" href="/News/2009#item122" rel="details">Permalink</a>) </span></p></div>
<div id="item123" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Last Call for Six Rule Interchange Format (RIF) Drafts</h3><p><span class="date">2009-07-03:</span> The <a href="/2005/rules">Rule Interchange Format (RIF) Working Group</a> has published six Last Call Working Drafts. Together, they allow systems using a variety of rule languages and rule-based technologies to interoperate with each other and with other Semantic Web technologies. Three of the drafts define XML formats with formal semantics for storing and transmitting rules: </p> <ul><li> The <a href="/TR/rif-prd/">RIF Production Rule Dialect (PRD)</a> is designed for the kinds of rules used in modern Business Rule Management systems. </li><li> The <a href="/TR/rif-bld/">RIF Basic Logic Dialect (BLD)</a> is a foundation for Logic Programming, classical logic, and related formalisms. </li><li> The <a href="/TR/rif-core/">RIF Core Dialect</a> is the common subset of PRD and BLD, useful when having a ubiquitous platform is paramount. </li></ul> <p>The other drafts:</p> <ul><li> <a href="/TR/rif-dtb/">RIF Datatypes and Builtins (DTB)</a> specifies the datatypes and standard operations (modeled on <a href="/TR/xpath-functions/">XPath Functions</a>) available in all RIF dialects </li><li> <a href="/TR/rif-rdf-owl/">RIF RDF and OWL Compatibility</a> specifies how RIF works with RDF, RDFS, OWL 1, and OWL 2. </li><li> <a href="/TR/rif-fld">RIF Framework for Logic Dialects (FLD)</a> provides a mechanism for specifying extended dialects, beyond BLD, when more expressive power is required. </li></ul> <p>The Working Group requests comments be sent to public-rif-comments@w3.org by 31 July 2009. Learn more about the <a href="/2001/sw">Semantic Web Activity</a>. <span class="archive"> (<a title="Last Call for Six Rule Interchange Format (RIF) Drafts" href="/News/2009#item123" rel="details">Permalink</a>) </span></p></div>
<div id="item124" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Live Training Sessions On Mobile Web Design Rescheduled</h3><p><span class="date">2009-07-03:</span> Originally scheduled for July, W3C has rescheduled a <a href="/2009/04/MobiWeb103/">Live Training Sessions On Mobile Web Design</a> for 13 October 2009. Students will attend a full day of lectures and hands on sessions about the <a href="/TR/2008/REC-mobile-bp-20080729/">W3C Mobile Web Best Practices</a> standard, and more generally on mobile Web design. Read the full <a href="/2009/06/live_mobile_training.html">announcement</a>, <a href="http://www.3gwebtrain.com/moodle/course/view.php?id=14">register</a>, and learn more about the <a href="/Mobile">W3C Mobile Web Initiative</a>.<span class="archive"> (<a title="Live Training Sessions On Mobile Web Design Rescheduled" href="/News/2009#item124" rel="details">Permalink</a>) </span></p></div>
<div id="item119" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />XHTML 2 Working Group Expected to Stop Work End of 2009, W3C to Increase Resources on HTML 5</h3><p><span class="date">2009-07-02:</span> Today the Director announces that when the <a href="/2007/03/XHTML2-WG-charter">XHTML 2 Working Group charter</a> expires as scheduled at the end of 2009, the charter will not be renewed. By doing so, and by increasing resources in the <a href="/html/wg/">HTML Working Group</a>, W3C hopes to accelerate the progress of <a href="/TR/html5">HTML 5</a> and clarify W3C's position regarding the future of HTML. A <a href="/2009/06/xhtml-faq.html">FAQ</a> answers questions about the future of deliverables of the XHTML 2 Working Group, and the status of various discussions related to HTML. Learn more about the <a href="/MarkUp/Activity">HTML Activity</a>. <span class="archive"> (<a title="XHTML 2 Working Group Expected to Stop Work End of 2009, W3C to Increase Resources on HTML 5" href="/News/2009#item119" rel="details">Permalink</a>) </span></p></div>
<div id="item121" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Summary of Workshop on Speaker Biometrics and VoiceXML 3.0 Available</h3><p><a href="/2008/08/siv/summary.html"><img height="112" width="150" class="newsImage" alt="photo of Voice biometrics Workshop" src="/2008/08/siv/dsc_0004_480x360.jpg" /></a><span class="date">2009-07-02:</span> W3C has published a <a href="/2008/08/siv/summary.html">summary </a> and <a href="/2008/08/siv/minutes.html">full minutes</a> of the <a href="/2008/08/siv/cfp.html">Workshop on Speaker biometrics and VoiceXML 3.0</a>, that took place in Menlo Park, California on 5-6 March. Participants from 15 organizations focused discussion on Speaker Identification and Verification (SIV) functionality within VoiceXML 3.0, and identifying and prioritizing directions for the functionality. The major "takeaways" from the Workshop were confirmation that SIV fits into the VoiceXML space and creation of the "<a href="/2008/08/siv/MenloParkModel-v003.png">Menlo Park Model</a>", a SIV available VoiceXML architecture. The Working Group will continue to discuss how to include the requirements expressed at the Workshop into VoiceXML 3.0 and improve the specification. Learn more about the <a href="/Voice/">Voice Browser Activity</a>.<span class="archive"> (<a title="Summary of Workshop on Speaker biometrics and VoiceXML 3.0 Available" href="/News/2009#item121" rel="details">Permalink</a>) </span></p></div>
<div id="item120" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />First Draft of SPARQL New Features and Rationale</h3><p><span class="date">2009-07-02:</span> The <a href="/2001/sw/DataAccess/">SPARQL Working Group</a> has published the First Public Working Draft of <a href="/TR/2009/WD-sparql-features-20090702/">SPARQL New Features and Rationale</a>. This document provides an overview of the main new features of SPARQL and their rationale. This is an update to SPARQL adding several new features that have been agreed by the SPARQL WG. These language features were determined based on real applications and user and tool-developer experience. Learn more about the <a href="/2001/sw/">Semantic Web Activity</a>.<span class="archive"> (<a title="First Draft of SPARQL New Features and Rationale" href="/News/2009#item120" rel="details">Permalink</a>) </span></p></div>
<h3 class="pastNews"><a href="/News/2009">Past News</a></h3>
</div>
<div class="navBlock">
<h2 class="navhead"><a name="search" id="search">Search</a></h2>
<p class="invisible"><a class="navlink" title="Skip search" href="#contents">Skip to Contents</a></p>
<form method="get" action="http://www.google.com/custom" enctype="application/x-www-form-urlencoded">
<div>
<a class="navlink" href="http://www.google.com"><img src="/Icons/Logo_25wht.gif" width="75" height="32" alt="Google" /></a><br />
<label for="inputField">Search W3C<br />
<input type="text" size="15" id="inputField" name="q" accesskey="E" maxlength="255" /></label>
<input type="submit" value="Go" id="goButton" name="sa" accesskey="G" /><br />
<input type="hidden" name="cof" value="T:black;LW:72;ALC:#ff3300;L:http://www.w3.org/Icons/w3c_home;LC:#000099;LH:48;BGC:white;AH:left;VLC:#660066;GL:0;AWFID:0b9847e42caf283e;" /> <input type="hidden" id="searchW3C" name="sitesearch" checked="checked" value="www.w3.org" /><input type="hidden" name="domains" value="www.w3.org" /> </div>
</form>
<p><a class="navlink" href="/Search/Mail/Public/">Search W3C Mailing
Lists</a></p>
<h2 class="navhead"><a name="contents" id="contents">Testimonials</a></h2>
<div class="hpmt"><div class="hpmt-name">Opera Software</div><div class="hpmt-logo"><a rel="nofollow" href="http://www.opera.com/"><img alt="Opera Software" src="http://www.w3.org/Consortium/Member/Testimonial/Logo/394" /></a></div><p class="hpmt-testimonial">Opera makes real cross-platform standards support a reality on mobile, desktop, and home media devices. Opera is proud to contribute its experience developing smaller, faster, more functional, friendly, secure browsers to W3C's open standards process, through significant participation. <a class="hpmt-more" href="http://www.w3.org/Consortium/Member/Testimonial/List">(Member testimonials)</a></p></div>
<h2 class="navhead">Members</h2>
<ul>
<li><a href="/Member/" class="navlink">Member Home Page</a></li>
<li><a href="/Submission/" class="navlink">Member Submissions</a></li>
<li><a href="/Consortium/Member/List" class="navlink">Current
Members</a></li>
<li><a href="/Consortium/meetings" class="navlink">Meetings</a></li>
<li><a href="/Consortium/Recruitment/Fellows" class="navlink">Fellows</a>
(<a href="/Consortium/Recruitment/Fellows#openings">New Openings</a>)</li>
</ul>
<h2 class="navhead">Get Involved</h2>
<ul>
<li><a href="/Consortium/membership-benefits" class="navlink">W3C
Membership Benefits</a></li>
<li><a href="/Consortium/membership#bizcase" class="navlink">Reasons to
Join W3C</a></li>
<li><a href="/Mail/" class="navlink">Mailing Lists</a></li>
<li><a href="http://lists.w3.org/Archives/Public/public-new-work/latest">Potential
New Work</a></li>
<li><a href="/Consortium/Translation/" class="navlink">Translations</a></li>
<li><a href="/2003/08/Workshops/" class="navlink">Workshops</a></li>
<li><a href="/2001/11/StdLiaison" class="navlink">Liaisons</a></li>
<li><a href="/Status" class="navlink">Open Source Software</a></li>
<li><a href="/QA/" class="navlink">Q&amp;A Blog</a></li>
<li><a href="/Consortium/Recruitment/" class="navlink">Employment</a></li>
<li><span class="navText">More ways to</span> <a href="/Consortium/org#public" class="navlink">participate</a></li>
</ul>
<h2 class="navhead">Introduction</h2>
<ul>
<li><a href="/Consortium/" class="navlink">About W3C</a></li>
<li><a href="/Consortium/faq" class="navlink">Frequently Asked Questions
(FAQ)</a></li>
<li><a href="/2003/glossary/" class="navlink">Glossary</a></li>
<li><a href="/Consortium/Process/" class="navlink">Process Document</a></li>
<li><a href="/2002/03/tutorials" class="navlink">Tutorials</a></li>
<li><a href="/2002/03/new-to-w3c" class="navlink">More...</a></li>
</ul>
<h2 class="navhead">W3C Team</h2>
<ul>
<li><a href="/People/" class="navlink">People</a></li>
<li><a href="/TeamSubmission/" class="navlink">Team Submissions</a></li>
</ul>
<h2 class="navhead">Presentations</h2>
<ul>
<li><a href="/Talks/" class="navlink">Public Presentations</a></li>
</ul>
<h2 class="navhead">News Room</h2>
<ul>
<li><a href="/News/" class="navlink">W3C News Archive</a> <span class="navText">(</span><a href="/2000/08/w3c-synd/home.rss" class="navlink">RSS</a><span class="navText">)</span></li>
<li><a href="/News/Public/" class="navlink">Weekly Public
Newsletter</a></li>
<li><a href="/Press/" class="navlink">Press Releases</a></li>
<li><a href="/Press/#rss" class="navlink">Multilingual Press Release
RSS</a></li>
<li><a href="/Press/Articles" class="navlink">W3C in the Press</a></li>
</ul>
<h2 class="navhead"><a name="Offices" id="Offices">World Offices</a></h2>
<p class="navPara">The <a href="/Consortium/Offices/" class="navlink">W3C
Offices</a>, part of the <a href="/2007/IntlRel.html">W3C International
Relations team</a> translate many W3C home page news items. W3C Offices are
located in these parts of the world:</p>
<ul>
<li><a href="http://www.w3c.org.au/" class="navlink" title="Australia">Australia</a></li>
<li><a href="http://www.w3c.nl/index.shtml.nl" class="navlink" hreflang="nl" title="Benelux"><span xml:lang="nl" lang="nl">Benelux</span></a>/<a href="http://www.w3c.nl/index.shtml.fr" class="navlink" title="Benelux" hreflang="fr"><span xml:lang="fr" lang="fr">Bénélux</span></a></li>
<li><a href="http://www.w3c.br/" class="navlink" title="Brazil" hreflang="pt-br"><span xml:lang="pt-br" lang="pt-br">Brasil</span>
(Brazil)</a></li>
<li><a href="http://www.chinaw3c.org/" class="navlink" title="China" hreflang="zh-hans"><span xml:lang="zh-hans" lang="zh-hans">中国</span>
(China)</a></li>
<li><a href="http://www.w3c.tut.fi/" class="navlink" title="Finland" hreflang="fi"><span xml:lang="fi" lang="fi">Suomi</span>
(Finland)</a></li>
<li><a href="http://www.w3c.de/" class="navlink" title="German and Austria" hreflang="de"><span xml:lang="de" lang="de">Deutschland und
Österreich</span> (Germany and Austria)</a></li>
<li><a href="http://www.w3c.gr/" class="navlink" title="Greece" hreflang="el"><span xml:lang="el" lang="el">Ελλάδα</span>
(Greece)</a></li>
<li><a href="http://www.w3c.hu/" class="navlink" title="Hungary" hreflang="hu"><span xml:lang="hu" lang="hu">Magyarország</span>
(Hungary)</a></li>
<li><a href="http://www.w3c.org.il/" class="navlink" title="Israel" hreflang="he"><span xml:lang="he" lang="he">ישראל</span>
(Israel)</a></li>
<li><a href="http://www.w3c.it/" class="navlink" title="Italy" hreflang="it"><span xml:lang="it" lang="it">Italia</span> (Italy)</a></li>
<li><a href="http://www.w3c.or.kr/" class="navlink" title="Korea" hreflang="ko"><span xml:lang="ko" lang="ko">한국</span> (Korea)</a></li>
<li><a href="http://www.w3c.org.ma/" class="navlink" title="Morocco" hreflang="ar"><span xml:lang="ar" lang="ar">المغرب</span>
(Morocco)</a></li>
<li><a href="http://www.w3c.sn/" class="navlink" title="Senegal" hreflang="fr">Sénégal</a></li>
<li><a href="http://www.w3c.org.za/" class="navlink" title="Southern Africa" hreflang="en">Southern Africa</a></li>
<li><a href="http://www.w3c.es/" class="navlink" title="Spain" hreflang="es"><span xml:lang="es" lang="es">España</span>
(Spain)</a></li>
<li><a href="http://www.w3c.se" class="navlink" title="Sweden" hreflang="sv"><span xml:lang="sv" lang="sv">Sverige</span>
(Sweden)</a></li>
<li><a href="http://www.w3c.rl.ac.uk/" class="navlink" title="UK and Ireland" hreflang="en-uk">United Kingdom and
Ireland</a></li>
</ul>
<h2 class="navhead"><a name="systems" id="systems">Systems</a></h2>
<ul>
<li><a href="/Help/Account/" class="navlink">Get Password</a></li>
<li><a href="/2003/08/system-status" class="navlink">System Status</a></li>
</ul>
<h2 class="navhead">World Wide Web Foundation</h2>
<p class="navPara">In 2008, W3C helped to create a separate organization, the
<a href="http://www.webfoundation.org/" class="navlink">World
Wide Web Foundation</a> with a
mission to advance the Web to connect humanity and empower people.
</p>
</div>
<hr class="hide" />
<p class="small">W3C would like to thank the <a name="donors" id="donors" href="/Consortium/sup">Supporters</a> who have contributed financially or
through a donation of goods to W3C.</p>
<p class="small"><a name="footnotes" id="footnotes">Read</a> <a href="/2002/11/homepage">about the layout</a> and <a href="http://lists.w3.org/Archives/Public/site-comments/">send comments</a>
about this page. <a href="/2000/08/w3c-synd/home.rss">Syndicate</a> this page
with <a href="http://purl.org/rss/1.0/">RSS 1.0</a>, an <a href="/RDF/">RDF</a> vocabulary used for <a href="/2000/08/w3c-synd/#">site
summaries</a>. </p>
<address class="small">
<a href="/Help/Webmaster">Webmaster</a> · Last modified:
$Date: 2009/07/31 02:15:25 $
<span class="whiteout">|</span><br />
<a href="http://validator.w3.org/check?uri=referer"><img src="/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a> <span class="whiteout">|</span> <a href="http://jigsaw.w3.org/css-validator/"><img src="/Icons/valid-css" alt="Valid CSS!" height="31" width="88" /></a> <span class="whiteout">|</span> <a href="/WAI/WCAG1AA-Conformance" title="Explanation of Level Double-A Conformance"><img class="conform" height="31" width="88" src="/WAI/wcag1AA" alt="Level Double-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0" /> </a> <span class="whiteout">|</span>
</address>
<p class="copyright"><a rel="Copyright" href="/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 1994-2009 <a href="/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>, <a rel="Copyright" href="/Consortium/Legal/copyright-documents">document use</a>
and <a rel="Copyright" href="/Consortium/Legal/copyright-software">software
licensing</a> rules apply. Your interactions with this site are in accordance
with our <a href="/Consortium/Legal/privacy-statement#Public">public</a> and
<a href="/Consortium/Legal/privacy-statement#Members">Member</a> privacy
statements.</p>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,978 @@
<!--
Extensible HTML version 1.0 Strict DTD
This is the same as HTML 4 Strict except for
changes due to the differences between XML and SGML.
Namespace = http://www.w3.org/1999/xhtml
For further information, see: http://www.w3.org/TR/xhtml1
Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
All Rights Reserved.
This DTD module is identified by the PUBLIC and SYSTEM identifiers:
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
$Revision: 1.1 $
$Date: 2002/08/01 13:56:03 $
-->
<!--================ Character mnemonic entities =========================-->
<!ENTITY % HTMLlat1 PUBLIC
"-//W3C//ENTITIES Latin 1 for XHTML//EN"
"xhtml-lat1.ent">
%HTMLlat1;
<!ENTITY % HTMLsymbol PUBLIC
"-//W3C//ENTITIES Symbols for XHTML//EN"
"xhtml-symbol.ent">
%HTMLsymbol;
<!ENTITY % HTMLspecial PUBLIC
"-//W3C//ENTITIES Special for XHTML//EN"
"xhtml-special.ent">
%HTMLspecial;
<!--================== Imported Names ====================================-->
<!ENTITY % ContentType "CDATA">
<!-- media type, as per [RFC2045] -->
<!ENTITY % ContentTypes "CDATA">
<!-- comma-separated list of media types, as per [RFC2045] -->
<!ENTITY % Charset "CDATA">
<!-- a character encoding, as per [RFC2045] -->
<!ENTITY % Charsets "CDATA">
<!-- a space separated list of character encodings, as per [RFC2045] -->
<!ENTITY % LanguageCode "NMTOKEN">
<!-- a language code, as per [RFC3066] -->
<!ENTITY % Character "CDATA">
<!-- a single character, as per section 2.2 of [XML] -->
<!ENTITY % Number "CDATA">
<!-- one or more digits -->
<!ENTITY % LinkTypes "CDATA">
<!-- space-separated list of link types -->
<!ENTITY % MediaDesc "CDATA">
<!-- single or comma-separated list of media descriptors -->
<!ENTITY % URI "CDATA">
<!-- a Uniform Resource Identifier, see [RFC2396] -->
<!ENTITY % UriList "CDATA">
<!-- a space separated list of Uniform Resource Identifiers -->
<!ENTITY % Datetime "CDATA">
<!-- date and time information. ISO date format -->
<!ENTITY % Script "CDATA">
<!-- script expression -->
<!ENTITY % StyleSheet "CDATA">
<!-- style sheet data -->
<!ENTITY % Text "CDATA">
<!-- used for titles etc. -->
<!ENTITY % Length "CDATA">
<!-- nn for pixels or nn% for percentage length -->
<!ENTITY % MultiLength "CDATA">
<!-- pixel, percentage, or relative -->
<!ENTITY % Pixels "CDATA">
<!-- integer representing length in pixels -->
<!-- these are used for image maps -->
<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA">
<!-- comma separated list of lengths -->
<!--=================== Generic Attributes ===============================-->
<!-- core attributes common to most elements
id document-wide unique id
class space separated list of classes
style associated style info
title advisory title/amplification
-->
<!ENTITY % coreattrs
"id ID #IMPLIED
class CDATA #IMPLIED
style %StyleSheet; #IMPLIED
title %Text; #IMPLIED"
>
<!-- internationalization attributes
lang language code (backwards compatible)
xml:lang language code (as per XML 1.0 spec)
dir direction for weak/neutral text
-->
<!ENTITY % i18n
"lang %LanguageCode; #IMPLIED
xml:lang %LanguageCode; #IMPLIED
dir (ltr|rtl) #IMPLIED"
>
<!-- attributes for common UI events
onclick a pointer button was clicked
ondblclick a pointer button was double clicked
onmousedown a pointer button was pressed down
onmouseup a pointer button was released
onmousemove a pointer was moved onto the element
onmouseout a pointer was moved away from the element
onkeypress a key was pressed and released
onkeydown a key was pressed down
onkeyup a key was released
-->
<!ENTITY % events
"onclick %Script; #IMPLIED
ondblclick %Script; #IMPLIED
onmousedown %Script; #IMPLIED
onmouseup %Script; #IMPLIED
onmouseover %Script; #IMPLIED
onmousemove %Script; #IMPLIED
onmouseout %Script; #IMPLIED
onkeypress %Script; #IMPLIED
onkeydown %Script; #IMPLIED
onkeyup %Script; #IMPLIED"
>
<!-- attributes for elements that can get the focus
accesskey accessibility key character
tabindex position in tabbing order
onfocus the element got the focus
onblur the element lost the focus
-->
<!ENTITY % focus
"accesskey %Character; #IMPLIED
tabindex %Number; #IMPLIED
onfocus %Script; #IMPLIED
onblur %Script; #IMPLIED"
>
<!ENTITY % attrs "%coreattrs; %i18n; %events;">
<!--=================== Text Elements ====================================-->
<!ENTITY % special.pre
"br | span | bdo | map">
<!ENTITY % special
"%special.pre; | object | img ">
<!ENTITY % fontstyle "tt | i | b | big | small ">
<!ENTITY % phrase "em | strong | dfn | code | q |
samp | kbd | var | cite | abbr | acronym | sub | sup ">
<!ENTITY % inline.forms "input | select | textarea | label | button">
<!-- these can occur at block or inline level -->
<!ENTITY % misc.inline "ins | del | script">
<!-- these can only occur at block level -->
<!ENTITY % misc "noscript | %misc.inline;">
<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
<!-- %Inline; covers inline or "text-level" elements -->
<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
<!--================== Block level elements ==============================-->
<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
<!ENTITY % lists "ul | ol | dl">
<!ENTITY % blocktext "pre | hr | blockquote | address">
<!ENTITY % block
"p | %heading; | div | %lists; | %blocktext; | fieldset | table">
<!ENTITY % Block "(%block; | form | %misc;)*">
<!-- %Flow; mixes block and inline and is used for list items etc. -->
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
<!--================== Content models for exclusions =====================-->
<!-- a elements use %Inline; excluding a -->
<!ENTITY % a.content
"(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
<!-- pre uses %Inline excluding big, small, sup or sup -->
<!ENTITY % pre.content
"(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
| %inline.forms;)*">
<!-- form uses %Block; excluding form -->
<!ENTITY % form.content "(%block; | %misc;)*">
<!-- button uses %Flow; but excludes a, form and form controls -->
<!ENTITY % button.content
"(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
table | %special; | %fontstyle; | %phrase; | %misc;)*">
<!--================ Document Structure ==================================-->
<!-- the namespace URI designates the document profile -->
<!ELEMENT html (head, body)>
<!ATTLIST html
%i18n;
id ID #IMPLIED
xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
>
<!--================ Document Head =======================================-->
<!ENTITY % head.misc "(script|style|meta|link|object)*">
<!-- content model is %head.misc; combined with a single
title and an optional base element in any order -->
<!ELEMENT head (%head.misc;,
((title, %head.misc;, (base, %head.misc;)?) |
(base, %head.misc;, (title, %head.misc;))))>
<!ATTLIST head
%i18n;
id ID #IMPLIED
profile %URI; #IMPLIED
>
<!-- The title element is not considered part of the flow of text.
It should be displayed, for example as the page header or
window title. Exactly one title is required per document.
-->
<!ELEMENT title (#PCDATA)>
<!ATTLIST title
%i18n;
id ID #IMPLIED
>
<!-- document base URI -->
<!ELEMENT base EMPTY>
<!ATTLIST base
href %URI; #REQUIRED
id ID #IMPLIED
>
<!-- generic metainformation -->
<!ELEMENT meta EMPTY>
<!ATTLIST meta
%i18n;
id ID #IMPLIED
http-equiv CDATA #IMPLIED
name CDATA #IMPLIED
content CDATA #REQUIRED
scheme CDATA #IMPLIED
>
<!--
Relationship values can be used in principle:
a) for document specific toolbars/menus when used
with the link element in document head e.g.
start, contents, previous, next, index, end, help
b) to link to a separate style sheet (rel="stylesheet")
c) to make a link to a script (rel="script")
d) by stylesheets to control how collections of
html nodes are rendered into printed documents
e) to make a link to a printable version of this document
e.g. a PostScript or PDF version (rel="alternate" media="print")
-->
<!ELEMENT link EMPTY>
<!ATTLIST link
%attrs;
charset %Charset; #IMPLIED
href %URI; #IMPLIED
hreflang %LanguageCode; #IMPLIED
type %ContentType; #IMPLIED
rel %LinkTypes; #IMPLIED
rev %LinkTypes; #IMPLIED
media %MediaDesc; #IMPLIED
>
<!-- style info, which may include CDATA sections -->
<!ELEMENT style (#PCDATA)>
<!ATTLIST style
%i18n;
id ID #IMPLIED
type %ContentType; #REQUIRED
media %MediaDesc; #IMPLIED
title %Text; #IMPLIED
xml:space (preserve) #FIXED 'preserve'
>
<!-- script statements, which may include CDATA sections -->
<!ELEMENT script (#PCDATA)>
<!ATTLIST script
id ID #IMPLIED
charset %Charset; #IMPLIED
type %ContentType; #REQUIRED
src %URI; #IMPLIED
defer (defer) #IMPLIED
xml:space (preserve) #FIXED 'preserve'
>
<!-- alternate content container for non script-based rendering -->
<!ELEMENT noscript %Block;>
<!ATTLIST noscript
%attrs;
>
<!--=================== Document Body ====================================-->
<!ELEMENT body %Block;>
<!ATTLIST body
%attrs;
onload %Script; #IMPLIED
onunload %Script; #IMPLIED
>
<!ELEMENT div %Flow;> <!-- generic language/style container -->
<!ATTLIST div
%attrs;
>
<!--=================== Paragraphs =======================================-->
<!ELEMENT p %Inline;>
<!ATTLIST p
%attrs;
>
<!--=================== Headings =========================================-->
<!--
There are six levels of headings from h1 (the most important)
to h6 (the least important).
-->
<!ELEMENT h1 %Inline;>
<!ATTLIST h1
%attrs;
>
<!ELEMENT h2 %Inline;>
<!ATTLIST h2
%attrs;
>
<!ELEMENT h3 %Inline;>
<!ATTLIST h3
%attrs;
>
<!ELEMENT h4 %Inline;>
<!ATTLIST h4
%attrs;
>
<!ELEMENT h5 %Inline;>
<!ATTLIST h5
%attrs;
>
<!ELEMENT h6 %Inline;>
<!ATTLIST h6
%attrs;
>
<!--=================== Lists ============================================-->
<!-- Unordered list -->
<!ELEMENT ul (li)+>
<!ATTLIST ul
%attrs;
>
<!-- Ordered (numbered) list -->
<!ELEMENT ol (li)+>
<!ATTLIST ol
%attrs;
>
<!-- list item -->
<!ELEMENT li %Flow;>
<!ATTLIST li
%attrs;
>
<!-- definition lists - dt for term, dd for its definition -->
<!ELEMENT dl (dt|dd)+>
<!ATTLIST dl
%attrs;
>
<!ELEMENT dt %Inline;>
<!ATTLIST dt
%attrs;
>
<!ELEMENT dd %Flow;>
<!ATTLIST dd
%attrs;
>
<!--=================== Address ==========================================-->
<!-- information on author -->
<!ELEMENT address %Inline;>
<!ATTLIST address
%attrs;
>
<!--=================== Horizontal Rule ==================================-->
<!ELEMENT hr EMPTY>
<!ATTLIST hr
%attrs;
>
<!--=================== Preformatted Text ================================-->
<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
<!ELEMENT pre %pre.content;>
<!ATTLIST pre
%attrs;
xml:space (preserve) #FIXED 'preserve'
>
<!--=================== Block-like Quotes ================================-->
<!ELEMENT blockquote %Block;>
<!ATTLIST blockquote
%attrs;
cite %URI; #IMPLIED
>
<!--=================== Inserted/Deleted Text ============================-->
<!--
ins/del are allowed in block and inline content, but its
inappropriate to include block content within an ins element
occurring in inline content.
-->
<!ELEMENT ins %Flow;>
<!ATTLIST ins
%attrs;
cite %URI; #IMPLIED
datetime %Datetime; #IMPLIED
>
<!ELEMENT del %Flow;>
<!ATTLIST del
%attrs;
cite %URI; #IMPLIED
datetime %Datetime; #IMPLIED
>
<!--================== The Anchor Element ================================-->
<!-- content is %Inline; except that anchors shouldn't be nested -->
<!ELEMENT a %a.content;>
<!ATTLIST a
%attrs;
%focus;
charset %Charset; #IMPLIED
type %ContentType; #IMPLIED
name NMTOKEN #IMPLIED
href %URI; #IMPLIED
hreflang %LanguageCode; #IMPLIED
rel %LinkTypes; #IMPLIED
rev %LinkTypes; #IMPLIED
shape %Shape; "rect"
coords %Coords; #IMPLIED
>
<!--===================== Inline Elements ================================-->
<!ELEMENT span %Inline;> <!-- generic language/style container -->
<!ATTLIST span
%attrs;
>
<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
<!ATTLIST bdo
%coreattrs;
%events;
lang %LanguageCode; #IMPLIED
xml:lang %LanguageCode; #IMPLIED
dir (ltr|rtl) #REQUIRED
>
<!ELEMENT br EMPTY> <!-- forced line break -->
<!ATTLIST br
%coreattrs;
>
<!ELEMENT em %Inline;> <!-- emphasis -->
<!ATTLIST em %attrs;>
<!ELEMENT strong %Inline;> <!-- strong emphasis -->
<!ATTLIST strong %attrs;>
<!ELEMENT dfn %Inline;> <!-- definitional -->
<!ATTLIST dfn %attrs;>
<!ELEMENT code %Inline;> <!-- program code -->
<!ATTLIST code %attrs;>
<!ELEMENT samp %Inline;> <!-- sample -->
<!ATTLIST samp %attrs;>
<!ELEMENT kbd %Inline;> <!-- something user would type -->
<!ATTLIST kbd %attrs;>
<!ELEMENT var %Inline;> <!-- variable -->
<!ATTLIST var %attrs;>
<!ELEMENT cite %Inline;> <!-- citation -->
<!ATTLIST cite %attrs;>
<!ELEMENT abbr %Inline;> <!-- abbreviation -->
<!ATTLIST abbr %attrs;>
<!ELEMENT acronym %Inline;> <!-- acronym -->
<!ATTLIST acronym %attrs;>
<!ELEMENT q %Inline;> <!-- inlined quote -->
<!ATTLIST q
%attrs;
cite %URI; #IMPLIED
>
<!ELEMENT sub %Inline;> <!-- subscript -->
<!ATTLIST sub %attrs;>
<!ELEMENT sup %Inline;> <!-- superscript -->
<!ATTLIST sup %attrs;>
<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
<!ATTLIST tt %attrs;>
<!ELEMENT i %Inline;> <!-- italic font -->
<!ATTLIST i %attrs;>
<!ELEMENT b %Inline;> <!-- bold font -->
<!ATTLIST b %attrs;>
<!ELEMENT big %Inline;> <!-- bigger font -->
<!ATTLIST big %attrs;>
<!ELEMENT small %Inline;> <!-- smaller font -->
<!ATTLIST small %attrs;>
<!--==================== Object ======================================-->
<!--
object is used to embed objects as part of HTML pages.
param elements should precede other content. Parameters
can also be expressed as attribute/value pairs on the
object element itself when brevity is desired.
-->
<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
<!ATTLIST object
%attrs;
declare (declare) #IMPLIED
classid %URI; #IMPLIED
codebase %URI; #IMPLIED
data %URI; #IMPLIED
type %ContentType; #IMPLIED
codetype %ContentType; #IMPLIED
archive %UriList; #IMPLIED
standby %Text; #IMPLIED
height %Length; #IMPLIED
width %Length; #IMPLIED
usemap %URI; #IMPLIED
name NMTOKEN #IMPLIED
tabindex %Number; #IMPLIED
>
<!--
param is used to supply a named property value.
In XML it would seem natural to follow RDF and support an
abbreviated syntax where the param elements are replaced
by attribute value pairs on the object start tag.
-->
<!ELEMENT param EMPTY>
<!ATTLIST param
id ID #IMPLIED
name CDATA #IMPLIED
value CDATA #IMPLIED
valuetype (data|ref|object) "data"
type %ContentType; #IMPLIED
>
<!--=================== Images ===========================================-->
<!--
To avoid accessibility problems for people who aren't
able to see the image, you should provide a text
description using the alt and longdesc attributes.
In addition, avoid the use of server-side image maps.
Note that in this DTD there is no name attribute. That
is only available in the transitional and frameset DTD.
-->
<!ELEMENT img EMPTY>
<!ATTLIST img
%attrs;
src %URI; #REQUIRED
alt %Text; #REQUIRED
longdesc %URI; #IMPLIED
height %Length; #IMPLIED
width %Length; #IMPLIED
usemap %URI; #IMPLIED
ismap (ismap) #IMPLIED
>
<!-- usemap points to a map element which may be in this document
or an external document, although the latter is not widely supported -->
<!--================== Client-side image maps ============================-->
<!-- These can be placed in the same document or grouped in a
separate document although this isn't yet widely supported -->
<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
<!ATTLIST map
%i18n;
%events;
id ID #REQUIRED
class CDATA #IMPLIED
style %StyleSheet; #IMPLIED
title %Text; #IMPLIED
name NMTOKEN #IMPLIED
>
<!ELEMENT area EMPTY>
<!ATTLIST area
%attrs;
%focus;
shape %Shape; "rect"
coords %Coords; #IMPLIED
href %URI; #IMPLIED
nohref (nohref) #IMPLIED
alt %Text; #REQUIRED
>
<!--================ Forms ===============================================-->
<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
<!ATTLIST form
%attrs;
action %URI; #REQUIRED
method (get|post) "get"
enctype %ContentType; "application/x-www-form-urlencoded"
onsubmit %Script; #IMPLIED
onreset %Script; #IMPLIED
accept %ContentTypes; #IMPLIED
accept-charset %Charsets; #IMPLIED
>
<!--
Each label must not contain more than ONE field
Label elements shouldn't be nested.
-->
<!ELEMENT label %Inline;>
<!ATTLIST label
%attrs;
for IDREF #IMPLIED
accesskey %Character; #IMPLIED
onfocus %Script; #IMPLIED
onblur %Script; #IMPLIED
>
<!ENTITY % InputType
"(text | password | checkbox |
radio | submit | reset |
file | hidden | image | button)"
>
<!-- the name attribute is required for all but submit & reset -->
<!ELEMENT input EMPTY> <!-- form control -->
<!ATTLIST input
%attrs;
%focus;
type %InputType; "text"
name CDATA #IMPLIED
value CDATA #IMPLIED
checked (checked) #IMPLIED
disabled (disabled) #IMPLIED
readonly (readonly) #IMPLIED
size CDATA #IMPLIED
maxlength %Number; #IMPLIED
src %URI; #IMPLIED
alt CDATA #IMPLIED
usemap %URI; #IMPLIED
onselect %Script; #IMPLIED
onchange %Script; #IMPLIED
accept %ContentTypes; #IMPLIED
>
<!ELEMENT select (optgroup|option)+> <!-- option selector -->
<!ATTLIST select
%attrs;
name CDATA #IMPLIED
size %Number; #IMPLIED
multiple (multiple) #IMPLIED
disabled (disabled) #IMPLIED
tabindex %Number; #IMPLIED
onfocus %Script; #IMPLIED
onblur %Script; #IMPLIED
onchange %Script; #IMPLIED
>
<!ELEMENT optgroup (option)+> <!-- option group -->
<!ATTLIST optgroup
%attrs;
disabled (disabled) #IMPLIED
label %Text; #REQUIRED
>
<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
<!ATTLIST option
%attrs;
selected (selected) #IMPLIED
disabled (disabled) #IMPLIED
label %Text; #IMPLIED
value CDATA #IMPLIED
>
<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
<!ATTLIST textarea
%attrs;
%focus;
name CDATA #IMPLIED
rows %Number; #REQUIRED
cols %Number; #REQUIRED
disabled (disabled) #IMPLIED
readonly (readonly) #IMPLIED
onselect %Script; #IMPLIED
onchange %Script; #IMPLIED
>
<!--
The fieldset element is used to group form fields.
Only one legend element should occur in the content
and if present should only be preceded by whitespace.
-->
<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
<!ATTLIST fieldset
%attrs;
>
<!ELEMENT legend %Inline;> <!-- fieldset label -->
<!ATTLIST legend
%attrs;
accesskey %Character; #IMPLIED
>
<!--
Content is %Flow; excluding a, form and form controls
-->
<!ELEMENT button %button.content;> <!-- push button -->
<!ATTLIST button
%attrs;
%focus;
name CDATA #IMPLIED
value CDATA #IMPLIED
type (button|submit|reset) "submit"
disabled (disabled) #IMPLIED
>
<!--======================= Tables =======================================-->
<!-- Derived from IETF HTML table standard, see [RFC1942] -->
<!--
The border attribute sets the thickness of the frame around the
table. The default units are screen pixels.
The frame attribute specifies which parts of the frame around
the table should be rendered. The values are not the same as
CALS to avoid a name clash with the valign attribute.
-->
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
<!--
The rules attribute defines which rules to draw between cells:
If rules is absent then assume:
"none" if border is absent or border="0" otherwise "all"
-->
<!ENTITY % TRules "(none | groups | rows | cols | all)">
<!-- horizontal alignment attributes for cell contents
char alignment char, e.g. char=':'
charoff offset for alignment char
-->
<!ENTITY % cellhalign
"align (left|center|right|justify|char) #IMPLIED
char %Character; #IMPLIED
charoff %Length; #IMPLIED"
>
<!-- vertical alignment attributes for cell contents -->
<!ENTITY % cellvalign
"valign (top|middle|bottom|baseline) #IMPLIED"
>
<!ELEMENT table
(caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
<!ELEMENT caption %Inline;>
<!ELEMENT thead (tr)+>
<!ELEMENT tfoot (tr)+>
<!ELEMENT tbody (tr)+>
<!ELEMENT colgroup (col)*>
<!ELEMENT col EMPTY>
<!ELEMENT tr (th|td)+>
<!ELEMENT th %Flow;>
<!ELEMENT td %Flow;>
<!ATTLIST table
%attrs;
summary %Text; #IMPLIED
width %Length; #IMPLIED
border %Pixels; #IMPLIED
frame %TFrame; #IMPLIED
rules %TRules; #IMPLIED
cellspacing %Length; #IMPLIED
cellpadding %Length; #IMPLIED
>
<!ATTLIST caption
%attrs;
>
<!--
colgroup groups a set of col elements. It allows you to group
several semantically related columns together.
-->
<!ATTLIST colgroup
%attrs;
span %Number; "1"
width %MultiLength; #IMPLIED
%cellhalign;
%cellvalign;
>
<!--
col elements define the alignment properties for cells in
one or more columns.
The width attribute specifies the width of the columns, e.g.
width=64 width in screen pixels
width=0.5* relative width of 0.5
The span attribute causes the attributes of one
col element to apply to more than one column.
-->
<!ATTLIST col
%attrs;
span %Number; "1"
width %MultiLength; #IMPLIED
%cellhalign;
%cellvalign;
>
<!--
Use thead to duplicate headers when breaking table
across page boundaries, or for static headers when
tbody sections are rendered in scrolling panel.
Use tfoot to duplicate footers when breaking table
across page boundaries, or for static footers when
tbody sections are rendered in scrolling panel.
Use multiple tbody sections when rules are needed
between groups of table rows.
-->
<!ATTLIST thead
%attrs;
%cellhalign;
%cellvalign;
>
<!ATTLIST tfoot
%attrs;
%cellhalign;
%cellvalign;
>
<!ATTLIST tbody
%attrs;
%cellhalign;
%cellvalign;
>
<!ATTLIST tr
%attrs;
%cellhalign;
%cellvalign;
>
<!-- Scope is simpler than headers attribute for common tables -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
<!-- th is for headers, td for data and for cells acting as both -->
<!ATTLIST th
%attrs;
abbr %Text; #IMPLIED
axis CDATA #IMPLIED
headers IDREFS #IMPLIED
scope %Scope; #IMPLIED
rowspan %Number; "1"
colspan %Number; "1"
%cellhalign;
%cellvalign;
>
<!ATTLIST td
%attrs;
abbr %Text; #IMPLIED
axis CDATA #IMPLIED
headers IDREFS #IMPLIED
scope %Scope; #IMPLIED
rowspan %Number; "1"
colspan %Number; "1"
%cellhalign;
%cellvalign;
>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,146 @@
<?xml version="1.0"?>
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
<xs:annotation>
<xs:documentation>
See http://www.w3.org/XML/1998/namespace.html and
http://www.w3.org/TR/REC-xml for information about this namespace.
This schema document describes the XML namespace, in a form
suitable for import by other schema documents.
Note that local names in this namespace are intended to be defined
only by the World Wide Web Consortium or its subgroups. The
following names are currently defined in this namespace and should
not be used with conflicting semantics by any Working Group,
specification, or document instance:
base (as an attribute name): denotes an attribute whose value
provides a URI to be used as the base for interpreting any
relative URIs in the scope of the element on which it
appears; its value is inherited. This name is reserved
by virtue of its definition in the XML Base specification.
id (as an attribute name): denotes an attribute whose value
should be interpreted as if declared to be of type ID.
The xml:id specification is not yet a W3C Recommendation,
but this attribute is included here to facilitate experimentation
with the mechanisms it proposes. Note that it is _not_ included
in the specialAttrs attribute group.
lang (as an attribute name): denotes an attribute whose value
is a language code for the natural language of the content of
any element; its value is inherited. This name is reserved
by virtue of its definition in the XML specification.
space (as an attribute name): denotes an attribute whose
value is a keyword indicating what whitespace processing
discipline is intended for the content of the element; its
value is inherited. This name is reserved by virtue of its
definition in the XML specification.
Father (in any context at all): denotes Jon Bosak, the chair of
the original XML Working Group. This name is reserved by
the following decision of the W3C XML Plenary and
XML Coordination groups:
In appreciation for his vision, leadership and dedication
the W3C XML Plenary on this 10th day of February, 2000
reserves for Jon Bosak in perpetuity the XML name
xml:Father
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>This schema defines attributes and an attribute group
suitable for use by
schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
attributes on elements they define.
To enable this, such a schema must import this schema
for the XML namespace, e.g. as follows:
&lt;schema . . .&gt;
. . .
&lt;import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/&gt;
Subsequently, qualified reference to any of the attributes
or the group defined below will have the desired effect, e.g.
&lt;type . . .&gt;
. . .
&lt;attributeGroup ref="xml:specialAttrs"/&gt;
will define a type which will schema-validate an instance
element with any of those attributes</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>In keeping with the XML Schema WG's standard versioning
policy, this schema document will persist at
http://www.w3.org/2005/08/xml.xsd.
At the date of issue it can also be found at
http://www.w3.org/2001/xml.xsd.
The schema document at that URI may however change in the future,
in order to remain compatible with the latest version of XML Schema
itself, or with the XML namespace itself. In other words, if the XML
Schema or XML namespaces change, the version of this document at
http://www.w3.org/2001/xml.xsd will change
accordingly; the version at
http://www.w3.org/2005/08/xml.xsd will not change.
</xs:documentation>
</xs:annotation>
<xs:attribute name="lang">
<xs:annotation>
<xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
codes as the enumerated possible values is probably never
going to be a realistic possibility. See
RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
at http://www.iana.org/assignments/lang-tag-apps.htm for
further information.
The union allows for the 'un-declaration' of xml:lang with
the empty string.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:union memberTypes="xs:language">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="space">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="default"/>
<xs:enumeration value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="base" type="xs:anyURI">
<xs:annotation>
<xs:documentation>See http://www.w3.org/TR/xmlbase/ for
information about this attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="id" type="xs:ID">
<xs:annotation>
<xs:documentation>See http://www.w3.org/TR/xml-id/ for
information about this attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup name="specialAttrs">
<xs:attribute ref="xml:base"/>
<xs:attribute ref="xml:lang"/>
<xs:attribute ref="xml:space"/>
</xs:attributeGroup>
</xs:schema>

View File

@@ -0,0 +1,402 @@
<!-- DTD for XML Schemas: Part 1: Structures
Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
<!-- $Id: XMLSchema.dtd,v 1.31 2001/10/24 15:50:16 ht Exp $ -->
<!-- Note this DTD is NOT normative, or even definitive. --> <!--d-->
<!-- prose copy in the structures REC is the definitive version --> <!--d-->
<!-- (which shouldn't differ from this one except for this --> <!--d-->
<!-- comment and entity expansions, but just in case) --> <!--d-->
<!-- With the exception of cases with multiple namespace
prefixes for the XML Schema namespace, any XML document which is
not valid per this DTD given redefinitions in its internal subset of the
'p' and 's' parameter entities below appropriate to its namespace
declaration of the XML Schema namespace is almost certainly not
a valid schema. -->
<!-- The simpleType element and its constituent parts
are defined in XML Schema: Part 2: Datatypes -->
<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
schema document to establish a different
namespace prefix -->
<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
also define %s as the suffix for the appropriate
namespace declaration (e.g. :foo) -->
<!ENTITY % nds 'xmlns%s;'>
<!-- Define all the element names, with optional prefix -->
<!ENTITY % schema "%p;schema">
<!ENTITY % complexType "%p;complexType">
<!ENTITY % complexContent "%p;complexContent">
<!ENTITY % simpleContent "%p;simpleContent">
<!ENTITY % extension "%p;extension">
<!ENTITY % element "%p;element">
<!ENTITY % unique "%p;unique">
<!ENTITY % key "%p;key">
<!ENTITY % keyref "%p;keyref">
<!ENTITY % selector "%p;selector">
<!ENTITY % field "%p;field">
<!ENTITY % group "%p;group">
<!ENTITY % all "%p;all">
<!ENTITY % choice "%p;choice">
<!ENTITY % sequence "%p;sequence">
<!ENTITY % any "%p;any">
<!ENTITY % anyAttribute "%p;anyAttribute">
<!ENTITY % attribute "%p;attribute">
<!ENTITY % attributeGroup "%p;attributeGroup">
<!ENTITY % include "%p;include">
<!ENTITY % import "%p;import">
<!ENTITY % redefine "%p;redefine">
<!ENTITY % notation "%p;notation">
<!-- annotation elements -->
<!ENTITY % annotation "%p;annotation">
<!ENTITY % appinfo "%p;appinfo">
<!ENTITY % documentation "%p;documentation">
<!-- Customisation entities for the ATTLIST of each element type.
Define one of these if your schema takes advantage of the
anyAttribute='##other' in the schema for schemas -->
<!ENTITY % schemaAttrs ''>
<!ENTITY % complexTypeAttrs ''>
<!ENTITY % complexContentAttrs ''>
<!ENTITY % simpleContentAttrs ''>
<!ENTITY % extensionAttrs ''>
<!ENTITY % elementAttrs ''>
<!ENTITY % groupAttrs ''>
<!ENTITY % allAttrs ''>
<!ENTITY % choiceAttrs ''>
<!ENTITY % sequenceAttrs ''>
<!ENTITY % anyAttrs ''>
<!ENTITY % anyAttributeAttrs ''>
<!ENTITY % attributeAttrs ''>
<!ENTITY % attributeGroupAttrs ''>
<!ENTITY % uniqueAttrs ''>
<!ENTITY % keyAttrs ''>
<!ENTITY % keyrefAttrs ''>
<!ENTITY % selectorAttrs ''>
<!ENTITY % fieldAttrs ''>
<!ENTITY % includeAttrs ''>
<!ENTITY % importAttrs ''>
<!ENTITY % redefineAttrs ''>
<!ENTITY % notationAttrs ''>
<!ENTITY % annotationAttrs ''>
<!ENTITY % appinfoAttrs ''>
<!ENTITY % documentationAttrs ''>
<!ENTITY % complexDerivationSet "CDATA">
<!-- #all or space-separated list drawn from derivationChoice -->
<!ENTITY % blockSet "CDATA">
<!-- #all or space-separated list drawn from
derivationChoice + 'substitution' -->
<!ENTITY % mgs '%all; | %choice; | %sequence;'>
<!ENTITY % cs '%choice; | %sequence;'>
<!ENTITY % formValues '(qualified|unqualified)'>
<!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
<!-- This is used in part2 -->
<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
%xs-datatypes;
<!-- the duplication below is to produce an unambiguous content model
which allows annotation everywhere -->
<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
((%simpleType; | %complexType;
| %element; | %attribute;
| %attributeGroup; | %group;
| %notation; ),
(%annotation;)*)* )>
<!ATTLIST %schema;
targetNamespace %URIref; #IMPLIED
version CDATA #IMPLIED
%nds; %URIref; #FIXED 'http://www.w3.org/2001/XMLSchema'
xmlns CDATA #IMPLIED
finalDefault %complexDerivationSet; ''
blockDefault %blockSet; ''
id ID #IMPLIED
elementFormDefault %formValues; 'unqualified'
attributeFormDefault %formValues; 'unqualified'
xml:lang CDATA #IMPLIED
%schemaAttrs;>
<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
because at the Infoset level where schemas operate,
xmlns(:prefix) is NOT an attribute! -->
<!-- The declaration of xmlns is a convenience for schema authors -->
<!-- The id attribute here and below is for use in external references
from non-schemas using simple fragment identifiers.
It is NOT used for schema-to-schema reference, internal or
external. -->
<!-- a type is a named content type specification which allows attribute
declarations-->
<!-- -->
<!ELEMENT %complexType; ((%annotation;)?,
(%simpleContent;|%complexContent;|
%particleAndAttrs;))>
<!ATTLIST %complexType;
name %NCName; #IMPLIED
id ID #IMPLIED
abstract %boolean; #IMPLIED
final %complexDerivationSet; #IMPLIED
block %complexDerivationSet; #IMPLIED
mixed (true|false) 'false'
%complexTypeAttrs;>
<!-- particleAndAttrs is shorthand for a root type -->
<!-- mixed is disallowed if simpleContent, overriden if complexContent
has one too. -->
<!-- If anyAttribute appears in one or more referenced attributeGroups
and/or explicitly, the intersection of the permissions is used -->
<!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))>
<!ATTLIST %complexContent;
mixed (true|false) #IMPLIED
id ID #IMPLIED
%complexContentAttrs;>
<!-- restriction should use the branch defined above, not the simple
one from part2; extension should use the full model -->
<!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))>
<!ATTLIST %simpleContent;
id ID #IMPLIED
%simpleContentAttrs;>
<!-- restriction should use the simple branch from part2, not the
one defined above; extension should have no particle -->
<!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))>
<!ATTLIST %extension;
base %QName; #REQUIRED
id ID #IMPLIED
%extensionAttrs;>
<!-- an element is declared by either:
a name and a type (either nested or referenced via the type attribute)
or a ref to an existing element declaration -->
<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
(%unique; | %key; | %keyref;)*)>
<!-- simpleType or complexType only if no type|ref attribute -->
<!-- ref not allowed at top level -->
<!ATTLIST %element;
name %NCName; #IMPLIED
id ID #IMPLIED
ref %QName; #IMPLIED
type %QName; #IMPLIED
minOccurs %nonNegativeInteger; #IMPLIED
maxOccurs CDATA #IMPLIED
nillable %boolean; #IMPLIED
substitutionGroup %QName; #IMPLIED
abstract %boolean; #IMPLIED
final %complexDerivationSet; #IMPLIED
block %blockSet; #IMPLIED
default CDATA #IMPLIED
fixed CDATA #IMPLIED
form %formValues; #IMPLIED
%elementAttrs;>
<!-- type and ref are mutually exclusive.
name and ref are mutually exclusive, one is required -->
<!-- In the absence of type AND ref, type defaults to type of
substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
<!-- default and fixed are mutually exclusive -->
<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
<!ATTLIST %group;
name %NCName; #IMPLIED
ref %QName; #IMPLIED
minOccurs %nonNegativeInteger; #IMPLIED
maxOccurs CDATA #IMPLIED
id ID #IMPLIED
%groupAttrs;>
<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
<!ATTLIST %all;
minOccurs (1) #IMPLIED
maxOccurs (1) #IMPLIED
id ID #IMPLIED
%allAttrs;>
<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
<!ATTLIST %choice;
minOccurs %nonNegativeInteger; #IMPLIED
maxOccurs CDATA #IMPLIED
id ID #IMPLIED
%choiceAttrs;>
<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
<!ATTLIST %sequence;
minOccurs %nonNegativeInteger; #IMPLIED
maxOccurs CDATA #IMPLIED
id ID #IMPLIED
%sequenceAttrs;>
<!-- an anonymous grouping in a model, or
a top-level named group definition, or a reference to same -->
<!-- Note that if order is 'all', group is not allowed inside.
If order is 'all' THIS group must be alone (or referenced alone) at
the top level of a content model -->
<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
<!-- Should allow minOccurs=0 inside order='all' . . . -->
<!ELEMENT %any; (%annotation;)?>
<!ATTLIST %any;
namespace CDATA '##any'
processContents (skip|lax|strict) 'strict'
minOccurs %nonNegativeInteger; '1'
maxOccurs CDATA '1'
id ID #IMPLIED
%anyAttrs;>
<!-- namespace is interpreted as follows:
##any - - any non-conflicting WFXML at all
##other - - any non-conflicting WFXML from namespace other
than targetNamespace
##local - - any unqualified non-conflicting WFXML/attribute
one or - - any non-conflicting WFXML from
more URI the listed namespaces
references
##targetNamespace ##local may appear in the above list,
with the obvious meaning -->
<!ELEMENT %anyAttribute; (%annotation;)?>
<!ATTLIST %anyAttribute;
namespace CDATA '##any'
processContents (skip|lax|strict) 'strict'
id ID #IMPLIED
%anyAttributeAttrs;>
<!-- namespace is interpreted as for 'any' above -->
<!-- simpleType only if no type|ref attribute -->
<!-- ref not allowed at top level, name iff at top level -->
<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
<!ATTLIST %attribute;
name %NCName; #IMPLIED
id ID #IMPLIED
ref %QName; #IMPLIED
type %QName; #IMPLIED
use (prohibited|optional|required) #IMPLIED
default CDATA #IMPLIED
fixed CDATA #IMPLIED
form %formValues; #IMPLIED
%attributeAttrs;>
<!-- type and ref are mutually exclusive.
name and ref are mutually exclusive, one is required -->
<!-- default for use is optional when nested, none otherwise -->
<!-- default and fixed are mutually exclusive -->
<!-- type attr and simpleType content are mutually exclusive -->
<!-- an attributeGroup is a named collection of attribute decls, or a
reference thereto -->
<!ELEMENT %attributeGroup; ((%annotation;)?,
(%attribute; | %attributeGroup;)*,
(%anyAttribute;)?) >
<!ATTLIST %attributeGroup;
name %NCName; #IMPLIED
id ID #IMPLIED
ref %QName; #IMPLIED
%attributeGroupAttrs;>
<!-- ref iff no content, no name. ref iff not top level -->
<!-- better reference mechanisms -->
<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
<!ATTLIST %unique;
name %NCName; #REQUIRED
id ID #IMPLIED
%uniqueAttrs;>
<!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)>
<!ATTLIST %key;
name %NCName; #REQUIRED
id ID #IMPLIED
%keyAttrs;>
<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
<!ATTLIST %keyref;
name %NCName; #REQUIRED
refer %QName; #REQUIRED
id ID #IMPLIED
%keyrefAttrs;>
<!ELEMENT %selector; ((%annotation;)?)>
<!ATTLIST %selector;
xpath %XPathExpr; #REQUIRED
id ID #IMPLIED
%selectorAttrs;>
<!ELEMENT %field; ((%annotation;)?)>
<!ATTLIST %field;
xpath %XPathExpr; #REQUIRED
id ID #IMPLIED
%fieldAttrs;>
<!-- Schema combination mechanisms -->
<!ELEMENT %include; (%annotation;)?>
<!ATTLIST %include;
schemaLocation %URIref; #REQUIRED
id ID #IMPLIED
%includeAttrs;>
<!ELEMENT %import; (%annotation;)?>
<!ATTLIST %import;
namespace %URIref; #IMPLIED
schemaLocation %URIref; #IMPLIED
id ID #IMPLIED
%importAttrs;>
<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
%attributeGroup; | %group;)*>
<!ATTLIST %redefine;
schemaLocation %URIref; #REQUIRED
id ID #IMPLIED
%redefineAttrs;>
<!ELEMENT %notation; (%annotation;)?>
<!ATTLIST %notation;
name %NCName; #REQUIRED
id ID #IMPLIED
public CDATA #REQUIRED
system %URIref; #IMPLIED
%notationAttrs;>
<!-- Annotation is either application information or documentation -->
<!-- By having these here they are available for datatypes as well
as all the structures elements -->
<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
<!ATTLIST %annotation; %annotationAttrs;>
<!-- User must define annotation elements in internal subset for this
to work -->
<!ELEMENT %appinfo; ANY> <!-- too restrictive -->
<!ATTLIST %appinfo;
source %URIref; #IMPLIED
id ID #IMPLIED
%appinfoAttrs;>
<!ELEMENT %documentation; ANY> <!-- too restrictive -->
<!ATTLIST %documentation;
source %URIref; #IMPLIED
id ID #IMPLIED
xml:lang CDATA #IMPLIED
%documentationAttrs;>
<!NOTATION XMLSchemaStructures PUBLIC
'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
<!NOTATION XML PUBLIC
'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,203 @@
<!--
DTD for XML Schemas: Part 2: Datatypes
$Id: datatypes.dtd,v 1.23 2001/03/16 17:36:30 ht Exp $
Note this DTD is NOT normative, or even definitive. - - the
prose copy in the datatypes REC is the definitive version
(which shouldn't differ from this one except for this comment
and entity expansions, but just in case)
-->
<!--
This DTD cannot be used on its own, it is intended
only for incorporation in XMLSchema.dtd, q.v.
-->
<!-- Define all the element names, with optional prefix -->
<!ENTITY % simpleType "%p;simpleType">
<!ENTITY % restriction "%p;restriction">
<!ENTITY % list "%p;list">
<!ENTITY % union "%p;union">
<!ENTITY % maxExclusive "%p;maxExclusive">
<!ENTITY % minExclusive "%p;minExclusive">
<!ENTITY % maxInclusive "%p;maxInclusive">
<!ENTITY % minInclusive "%p;minInclusive">
<!ENTITY % totalDigits "%p;totalDigits">
<!ENTITY % fractionDigits "%p;fractionDigits">
<!ENTITY % length "%p;length">
<!ENTITY % minLength "%p;minLength">
<!ENTITY % maxLength "%p;maxLength">
<!ENTITY % enumeration "%p;enumeration">
<!ENTITY % whiteSpace "%p;whiteSpace">
<!ENTITY % pattern "%p;pattern">
<!--
Customisation entities for the ATTLIST of each element
type. Define one of these if your schema takes advantage
of the anyAttribute='##other' in the schema for schemas
-->
<!ENTITY % simpleTypeAttrs "">
<!ENTITY % restrictionAttrs "">
<!ENTITY % listAttrs "">
<!ENTITY % unionAttrs "">
<!ENTITY % maxExclusiveAttrs "">
<!ENTITY % minExclusiveAttrs "">
<!ENTITY % maxInclusiveAttrs "">
<!ENTITY % minInclusiveAttrs "">
<!ENTITY % totalDigitsAttrs "">
<!ENTITY % fractionDigitsAttrs "">
<!ENTITY % lengthAttrs "">
<!ENTITY % minLengthAttrs "">
<!ENTITY % maxLengthAttrs "">
<!ENTITY % enumerationAttrs "">
<!ENTITY % whiteSpaceAttrs "">
<!ENTITY % patternAttrs "">
<!-- Define some entities for informative use as attribute
types -->
<!ENTITY % URIref "CDATA">
<!ENTITY % XPathExpr "CDATA">
<!ENTITY % QName "NMTOKEN">
<!ENTITY % QNames "NMTOKENS">
<!ENTITY % NCName "NMTOKEN">
<!ENTITY % nonNegativeInteger "NMTOKEN">
<!ENTITY % boolean "(true|false)">
<!ENTITY % simpleDerivationSet "CDATA">
<!--
#all or space-separated list drawn from derivationChoice
-->
<!--
Note that the use of 'facet' below is less restrictive
than is really intended: There should in fact be no
more than one of each of minInclusive, minExclusive,
maxInclusive, maxExclusive, totalDigits, fractionDigits,
length, maxLength, minLength within datatype,
and the min- and max- variants of Inclusive and Exclusive
are mutually exclusive. On the other hand, pattern and
enumeration may repeat.
-->
<!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
<!ENTITY % bounds "%minBound; | %maxBound;">
<!ENTITY % numeric "%totalDigits; | %fractionDigits;">
<!ENTITY % ordered "%bounds; | %numeric;">
<!ENTITY % unordered
"%pattern; | %enumeration; | %whiteSpace; | %length; |
%maxLength; | %minLength;">
<!ENTITY % facet "%ordered; | %unordered;">
<!ENTITY % facetAttr
"value CDATA #REQUIRED
id ID #IMPLIED">
<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
<!ENTITY % facetModel "(%annotation;)?">
<!ELEMENT %simpleType;
((%annotation;)?, (%restriction; | %list; | %union;))>
<!ATTLIST %simpleType;
name %NCName; #IMPLIED
final %simpleDerivationSet; #IMPLIED
id ID #IMPLIED
%simpleTypeAttrs;>
<!-- name is required at top level -->
<!ELEMENT %restriction; ((%annotation;)?,
(%restriction1; |
((%simpleType;)?,(%facet;)*)),
(%attrDecls;))>
<!ATTLIST %restriction;
base %QName; #IMPLIED
id ID #IMPLIED
%restrictionAttrs;>
<!--
base and simpleType child are mutually exclusive,
one is required.
restriction is shared between simpleType and
simpleContent and complexContent (in XMLSchema.xsd).
restriction1 is for the latter cases, when this
is restricting a complex type, as is attrDecls.
-->
<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
<!ATTLIST %list;
itemType %QName; #IMPLIED
id ID #IMPLIED
%listAttrs;>
<!--
itemType and simpleType child are mutually exclusive,
one is required
-->
<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
<!ATTLIST %union;
id ID #IMPLIED
memberTypes %QNames; #IMPLIED
%unionAttrs;>
<!--
At least one item in memberTypes or one simpleType
child is required
-->
<!ELEMENT %maxExclusive; %facetModel;>
<!ATTLIST %maxExclusive;
%facetAttr;
%fixedAttr;
%maxExclusiveAttrs;>
<!ELEMENT %minExclusive; %facetModel;>
<!ATTLIST %minExclusive;
%facetAttr;
%fixedAttr;
%minExclusiveAttrs;>
<!ELEMENT %maxInclusive; %facetModel;>
<!ATTLIST %maxInclusive;
%facetAttr;
%fixedAttr;
%maxInclusiveAttrs;>
<!ELEMENT %minInclusive; %facetModel;>
<!ATTLIST %minInclusive;
%facetAttr;
%fixedAttr;
%minInclusiveAttrs;>
<!ELEMENT %totalDigits; %facetModel;>
<!ATTLIST %totalDigits;
%facetAttr;
%fixedAttr;
%totalDigitsAttrs;>
<!ELEMENT %fractionDigits; %facetModel;>
<!ATTLIST %fractionDigits;
%facetAttr;
%fixedAttr;
%fractionDigitsAttrs;>
<!ELEMENT %length; %facetModel;>
<!ATTLIST %length;
%facetAttr;
%fixedAttr;
%lengthAttrs;>
<!ELEMENT %minLength; %facetModel;>
<!ATTLIST %minLength;
%facetAttr;
%fixedAttr;
%minLengthAttrs;>
<!ELEMENT %maxLength; %facetModel;>
<!ATTLIST %maxLength;
%facetAttr;
%fixedAttr;
%maxLengthAttrs;>
<!-- This one can be repeated -->
<!ELEMENT %enumeration; %facetModel;>
<!ATTLIST %enumeration;
%facetAttr;
%enumerationAttrs;>
<!ELEMENT %whiteSpace; %facetModel;>
<!ATTLIST %whiteSpace;
%facetAttr;
%fixedAttr;
%whiteSpaceAttrs;>
<!-- This one can be repeated -->
<!ELEMENT %pattern; %facetModel;>
<!ATTLIST %pattern;
%facetAttr;
%patternAttrs;>

View File

@@ -0,0 +1,309 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2001 - 2005, International Business Machines Corporation and Microsoft Corporation
All Rights Reserved
License for WSDL Schema Files
The Authors grant permission to copy and distribute the WSDL Schema
Files in any medium without fee or royalty as long as this notice and
license are distributed with them. The originals of these files can
be located at:
http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd
THESE SCHEMA FILES ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS
OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THESE FILES, INCLUDING, BUT NOT
LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
NON-INFRINGEMENT OR TITLE. THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT,
INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR
RELATING TO ANY USE OR DISTRIBUTION OF THESE FILES.
The name and trademarks of the Authors may NOT be used in any manner,
including advertising or publicity pertaining to these files or any program
or service that uses these files, written prior permission. Title to copyright
in these files will at all times remain with the Authors.
No other rights are granted by implication, estoppel or otherwise.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://schemas.xmlsoap.org/wsdl/" elementFormDefault="qualified">
<xs:import namespace="http://schemas.xmlsoap.org/wsdl/soap/" schemaLocation="soap.xsd"/>
<xs:complexType mixed="true" name="tDocumentation">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tDocumented">
<xs:annotation>
<xs:documentation>
This type is extended by component types to allow them to be documented
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="documentation" type="wsdl:tDocumentation" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tExtensibleAttributesDocumented" abstract="true">
<xs:complexContent>
<xs:extension base="wsdl:tDocumented">
<xs:annotation>
<xs:documentation>
This type is extended by component types to allow attributes from other namespaces to be added.
</xs:documentation>
</xs:annotation>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tExtensibleDocumented" abstract="true">
<xs:complexContent>
<xs:extension base="wsdl:tDocumented">
<xs:annotation>
<xs:documentation>
This type is extended by component types to allow elements from other namespaces to be added.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="definitions" type="wsdl:tDefinitions">
<xs:key name="message">
<xs:selector xpath="wsdl:message"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:key name="portType">
<xs:selector xpath="wsdl:portType"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:key name="binding">
<xs:selector xpath="wsdl:binding"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:key name="service">
<xs:selector xpath="wsdl:service"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:key name="import">
<xs:selector xpath="wsdl:import"/>
<xs:field xpath="@namespace"/>
</xs:key>
</xs:element>
<xs:group name="anyTopLevelOptionalElement">
<xs:annotation>
<xs:documentation>
Any top level optional element allowed to appear more then once - any child of definitions element except wsdl:types. Any extensibility element is allowed in any place.
</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="import" type="wsdl:tImport"/>
<xs:element name="types" type="wsdl:tTypes"/>
<xs:element name="message" type="wsdl:tMessage">
<xs:unique name="part">
<xs:selector xpath="wsdl:part"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="portType" type="wsdl:tPortType"/>
<xs:element name="binding" type="wsdl:tBinding"/>
<xs:element name="service" type="wsdl:tService">
<xs:unique name="port">
<xs:selector xpath="wsdl:port"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
</xs:choice>
</xs:group>
<xs:complexType name="tDefinitions">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented">
<xs:sequence>
<xs:group ref="wsdl:anyTopLevelOptionalElement" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="targetNamespace" type="xs:anyURI" use="optional"/>
<xs:attribute name="name" type="xs:NCName" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tImport">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleAttributesDocumented">
<xs:attribute name="namespace" type="xs:anyURI" use="required"/>
<xs:attribute name="location" type="xs:anyURI" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tTypes">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tMessage">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented">
<xs:sequence>
<xs:element name="part" type="wsdl:tPart" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:NCName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tPart">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleAttributesDocumented">
<xs:attribute name="name" type="xs:NCName" use="required"/>
<xs:attribute name="element" type="xs:QName" use="optional"/>
<xs:attribute name="type" type="xs:QName" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tPortType">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleAttributesDocumented">
<xs:sequence>
<xs:element name="operation" type="wsdl:tOperation" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:NCName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tOperation">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented">
<xs:sequence>
<xs:choice>
<xs:group ref="wsdl:request-response-or-one-way-operation"/>
<xs:group ref="wsdl:solicit-response-or-notification-operation"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:NCName" use="required"/>
<xs:attribute name="parameterOrder" type="xs:NMTOKENS" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:group name="request-response-or-one-way-operation">
<xs:sequence>
<xs:element name="input" type="wsdl:tParam"/>
<xs:sequence minOccurs="0">
<xs:element name="output" type="wsdl:tParam"/>
<xs:element name="fault" type="wsdl:tFault" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:sequence>
</xs:group>
<xs:group name="solicit-response-or-notification-operation">
<xs:sequence>
<xs:element name="output" type="wsdl:tParam"/>
<xs:sequence minOccurs="0">
<xs:element name="input" type="wsdl:tParam"/>
<xs:element name="fault" type="wsdl:tFault" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:sequence>
</xs:group>
<xs:complexType name="tParam">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleAttributesDocumented">
<xs:attribute name="name" type="xs:NCName" use="optional"/>
<xs:attribute name="message" type="xs:QName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tFault">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleAttributesDocumented">
<xs:attribute name="name" type="xs:NCName" use="required"/>
<xs:attribute name="message" type="xs:QName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tBinding">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented">
<xs:sequence>
<xs:element name="operation" type="wsdl:tBindingOperation" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:NCName" use="required"/>
<xs:attribute name="type" type="xs:QName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tBindingOperationMessage">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented">
<xs:attribute name="name" type="xs:NCName" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tBindingOperationFault">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented">
<xs:attribute name="name" type="xs:NCName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tBindingOperation">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented">
<xs:sequence>
<xs:element name="input" type="wsdl:tBindingOperationMessage" minOccurs="0"/>
<xs:element name="output" type="wsdl:tBindingOperationMessage" minOccurs="0"/>
<xs:element name="fault" type="wsdl:tBindingOperationFault" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:NCName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tService">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented">
<xs:sequence>
<xs:element name="port" type="wsdl:tPort" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:NCName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tPort">
<xs:complexContent>
<xs:extension base="wsdl:tExtensibleDocumented">
<xs:attribute name="name" type="xs:NCName" use="required"/>
<xs:attribute name="binding" type="xs:QName" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:attribute name="arrayType" type="xs:string"/>
<xs:attribute name="required" type="xs:boolean"/>
<xs:complexType name="tExtensibilityElement" abstract="true">
<xs:attribute ref="wsdl:required" use="optional"/>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,119 @@
<?xml version='1.0'?>
<schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns="http://www.w3.org/2001/XMLSchema" xml:lang="en"
xmlns:xml="http://www.w3.org/XML/1998/namespace">
<annotation>
<documentation>
See http://www.w3.org/XML/1998/namespace.html and
http://www.w3.org/TR/REC-xml for information about this namespace.
This schema document describes the XML namespace, in a form
suitable for import by other schema documents.
Note that local names in this namespace are intended to be defined
only by the World Wide Web Consortium or its subgroups. The
following names are currently defined in this namespace and should
not be used with conflicting semantics by any Working Group,
specification, or document instance:
base (as an attribute name): denotes an attribute whose value
provides a URI to be used as the base for interpreting any
relative URIs in the scope of the element on which it
appears; its value is inherited. This name is reserved
by virtue of its definition in the XML Base specification.
lang (as an attribute name): denotes an attribute whose value
is a language code for the natural language of the content of
any element; its value is inherited. This name is reserved
by virtue of its definition in the XML specification.
space (as an attribute name): denotes an attribute whose
value is a keyword indicating what whitespace processing
discipline is intended for the content of the element; its
value is inherited. This name is reserved by virtue of its
definition in the XML specification.
Father (in any context at all): denotes Jon Bosak, the chair of
the original XML Working Group. This name is reserved by
the following decision of the W3C XML Plenary and
XML Coordination groups:
In appreciation for his vision, leadership and dedication
the W3C XML Plenary on this 10th day of February, 2000
reserves for Jon Bosak in perpetuity the XML name
xml:Father
</documentation>
</annotation>
<annotation>
<documentation>This schema defines attributes and an attribute group
suitable for use by
schemas wishing to allow xml:base, xml:lang or xml:space attributes
on elements they define.
To enable this, such a schema must import this schema
for the XML namespace, e.g. as follows:
&lt;schema . . .>
. . .
&lt;import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
Subsequently, qualified reference to any of the attributes
or the group defined below will have the desired effect, e.g.
&lt;type . . .>
. . .
&lt;attributeGroup ref="xml:specialAttrs"/>
will define a type which will schema-validate an instance
element with any of those attributes</documentation>
</annotation>
<annotation>
<documentation>In keeping with the XML Schema WG's standard versioning
policy, this schema document will persist at
http://www.w3.org/2001/03/xml.xsd.
At the date of issue it can also be found at
http://www.w3.org/2001/xml.xsd.
The schema document at that URI may however change in the future,
in order to remain compatible with the latest version of XML Schema
itself. In other words, if the XML Schema namespace changes, the version
of this document at
http://www.w3.org/2001/xml.xsd will change
accordingly; the version at
http://www.w3.org/2001/03/xml.xsd will not change.
</documentation>
</annotation>
<attribute name="lang" type="language">
<annotation>
<documentation>In due course, we should install the relevant ISO 2- and 3-letter
codes as the enumerated possible values . . .</documentation>
</annotation>
</attribute>
<attribute name="space">
<simpleType>
<restriction base="NCName">
<enumeration value="default"/>
<enumeration value="preserve"/>
</restriction>
</simpleType>
</attribute>
<attribute name="base" type="anyURI">
<annotation>
<documentation>See http://www.w3.org/TR/xmlbase/ for
information about this attribute.</documentation>
</annotation>
</attribute>
<attributeGroup name="specialAttrs">
<attribute ref="xml:base"/>
<attribute ref="xml:lang"/>
<attribute ref="xml:space"/>
</attributeGroup>
<attribute name="id" type="string"/>
</schema>

View File

@@ -0,0 +1,484 @@
<?xml version="1.0" encoding="UTF-8"?><?xar XSLT?>
<!--
==============================================================
DOCUMENTATION
==============================================================
Input: valid ISO 19575-3 document: a Schematron schema
Output: valid TR 9537-11 fragment: an annex for an ISO Standard
This stylesheet converts a Schematron schema into an annex for
an ISO standard or technical report, using the TR 9537-11 schema.
* Titles become annex or clause titles
* Each pattern is a clause
* Within each pattern, all the assertions are presented in a numbered
list as constraints.
* Within each pattern, all the reports are gathered into a separate
numbered lists, as thing that an implementations should report
* Abstract rules may be used. These are repeated each time, with the <name>
element acting correctly (for elements at least)
* A paragraph of documentation uses the plain <p> element. Other kinds of
blocks elements from TR9537-11 can be represented using the class attribute
on the <p> element. Warnings, list items, examples, and pre elements,
in particular; consecutive list items will be wrapped in the appropriate
container; multi-paragraph warnings, list items, etc are not supported.
* Tables, images and definition lists are not supported.
* The Schematron phase mechanism can be used to generate conformance classes
or levels, by selecting patterns.
* The inline elements can be used with the <span> element by providing their
name in the class attribute, except for tables and artwork.
* The following Schematron features are not transformed: diagnostics, namespace
and query language.
* The following Schematron features are probably not useful: abstract patterns,
abstract rules
* The @see attribute can be used for bibliographic references (to URLs) but it
will require hand correction to link to the proper bibliographic items, which
are not generated by this converter.
-->
<!--
Open Source Initiative OSI - The MIT License:Licensing
[OSI Approved License]
The MIT License
Copyright (c) 2008-2010 Rick Jelliffe
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<xsl:stylesheet version="1.0"
xmlns:sch="http://purl.oclc.org/dsdl/schematron"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://purl.oclc.org/dsdl/9573-11amd1/ns/structure/1.0" >
<!--
==============================================================
DECLARATIONS
==============================================================
-->
<xsl:output method="xml" omit-xml-declaration="no" standalone="yes" indent="yes" />
<!--
==============================================================
SCHEMA ELEMENT
==============================================================
-->
<xsl:template match="sch:schema">
<annex normative="true" id="schematron-derived-annex" xmlns="http://purl.oclc.org/dsdl/9573-11amd1/ns/structure/1.0">
<xsl:comment>May need xmlns="http://purl.oclc.org/dsdl/9573-11amd1/ns/structure/1.0"</xsl:comment>
<xsl:apply-templates select="sch:title" />
<clause id="schematron-derived-annex-intro">
<title>Introduction</title>
<xsl:apply-templates select="sch:p[not(preceding-sibling::sch:pattern)]" />
<xsl:if test="sch:ns">
<p>The following table lists the namespaces and typical prefixes.</p>
<p><tabular frame="all">
<tgroup cols="2">
<thead>
<row><entry>Prefix</entry><entry>Namespace IRI</entry></row>
</thead>
<tbody>
<xsl:apply-templates select="sch:ns" />
</tbody>
</tgroup>
</tabular>
</p>
</xsl:if>
<xsl:if test="not(sch:ns)">
<p>The constraints in this document apply to elements which are not in any namespace.</p>
</xsl:if>
</clause>
<xsl:if test="sch:phase">
<clause id="schematron-derived-annex-conform">
<title>Conformance Profiles</title>
<p>The following clauses define named conformance profiles. Each profile specifies a subset of
the constraints and reporting requirements.</p>
<xsl:apply-templates select="sch:phase" />
</clause>
</xsl:if>
<xsl:apply-templates select="sch:phase" />
<xsl:apply-templates select="sch:pattern" />
<xsl:apply-templates select="sch:p[preceding-sibling::sch:pattern]" />
</annex>
</xsl:template>
<!-- INCLUDE -->
<xsl:template match="sch:include[not(normalize-space(@href))]" priority="1">
<xsl:message terminate="yes">Schema error: Empty href= attribute for include directive.</xsl:message>
</xsl:template>
<!-- Extend the URI syntax to allow # refererences -->
<xsl:template match="sch:include">
<xsl:variable name="document-uri" select="substring-before(concat(@href,'#'), '#')"/>
<xsl:variable name="fragment-id" select="substring-after(@href, '#')"/>
<xsl:choose>
<xsl:when test="$fragment-id">
<xsl:apply-templates select="document( $document-uri,/ )//sch:*[@id= $fragment-id ]"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="document( $document-uri,/ )/*"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!--
==============================================================
OTHER SCHEMA ELEMENTS
==============================================================
-->
<!-- ACTIVE -->
<xsl:template match="sch:active">
<li><p><xref to="{@pattern}" />
<xsl:if test="@see"><footnote>Refer <code><xsl:value-of select="@see"/></code>.
<xsl:comment>Hand edit required to replace this with proper xref to bibliography!</xsl:comment></footnote></xsl:if>
</p>
</li>
</xsl:template>
<!-- ASSERT and REPORT-->
<xsl:template match="sch:assert" mode="handle-asserts">
<xsl:param name="context">UNAVAILABLE</xsl:param>
<li><p><xsl:apply-templates >
<xsl:with-param name="a-context" select="$context" />
</xsl:apply-templates>
<xsl:if test="@see"><footnote>Refer <code><xsl:value-of select="@see"/></code>.
<xsl:comment>Hand edit required to replace this with proper xref to bibliography!</xsl:comment></footnote></xsl:if>
</p></li>
</xsl:template>
<xsl:template match="sch:report" mode="handle-reports">
<xsl:param name="context">UNAVAILABLE</xsl:param>
<li><p><xsl:apply-templates >
<xsl:with-param name="a-context" select="$context" />
</xsl:apply-templates>
<xsl:if test="@see"><footnote>Refer <code><xsl:value-of select="@see"/></code>.
<xsl:comment>Hand edit required to replace this with proper xref to bibliography!</xsl:comment></footnote></xsl:if>
</p></li>
</xsl:template>
<xsl:template match="sch:assert | sch:report " />
<!-- DIAGNOSTIC -->
<xsl:template match="sch:diagnostic">
</xsl:template>
<!-- DIAGNOSTICS -->
<!-- no diagnostics -->
<xsl:template match="sch:diagnostics">
</xsl:template>
<!-- DIR -->
<xsl:template match="sch:dir">
<xsl:apply-templates />
</xsl:template>
<!-- EMPH -->
<xsl:template match="sch:emph">
<strong><xsl:apply-templates /></strong>
</xsl:template>
<!-- EXTENDS -->
<xsl:template match="sch:extends" />
<!-- Handle asserts when a normal rule has an extension -->
<xsl:template match="sch:rule[not(@abstract='true')]/sch:extends" mode="handle-asserts">
<xsl:apply-templates select="//sch:rule[@abstract='true'][@id=current()/@rule]" mode="handle-asserts" >
<xsl:with-param name="context" select="../@context" />
</xsl:apply-templates>
</xsl:template>
<!-- Handle asserts when an abstract rule has an extension -->
<xsl:template match="sch:rule[@abstract='true']/sch:extends" mode="handle-asserts">
<xsl:param name="context">UNKNOWN</xsl:param>
<xsl:apply-templates select="//sch:rule[@abstract='true'][@id=current()/@rule]" mode="handle-asserts" >
<xsl:with-param name="context" select="$context" />
</xsl:apply-templates>
</xsl:template>
<!-- Handle reports when a normal rule has an extension -->
<xsl:template match="sch:rule[not(@abstract='true')]/sch:extends" mode="handle-reports">
<xsl:apply-templates select="//sch:rule[@abstract='true'][@id=current()/@rule]" mode="handle-reports" >
<xsl:with-param name="context" select="../@context" />
</xsl:apply-templates>
</xsl:template>
<!-- Handle reports when an abstract rule has an extension -->
<xsl:template match="sch:rule[@abstract='true']/sch:extends" mode="handle-reports">
<xsl:param name="context">UNKNOWN</xsl:param>
<xsl:variable name="context" select="../@context" />
<xsl:apply-templates select="//sch:rule[@abstract='true'][@id=current()/@rule]" mode="handle-reports" >
<xsl:with-param name="context" select="$context" />
</xsl:apply-templates>
</xsl:template>
<!-- XSL:KEY -->
<xsl:template match="xsl:key">
</xsl:template>
<!-- LET -->
<xsl:template match="sch:let">
</xsl:template>
<!-- NAME -->
<!-- Handle names in abstract rules -->
<xsl:template match="sch:name[ancestor::sch:rule[not(@abstract='true')]]" priority="3">
<!-- not quite right. need to handle subject and name having explicit path -->
<code><xsl:value-of select="../../@context"/></code>
</xsl:template>
<xsl:template match="sch:name[ancestor::sch:rule[not(@abstract='true')]][ancestor::sch:pattern[@abstract='true']]" priority="4">
<!-- not quite right. need to handle subject and name having explicit path -->
<code><i><xsl:value-of select="../../@context"/></i></code>
</xsl:template>
<xsl:template match="sch:name[ancestor::sch:pattern[@abstract='true']]" priority="2">
<xsl:param name="a-context">MISSING</xsl:param>
<!-- not quite right. need to handle subject and name having explicit path -->
<code><i><xsl:value-of select="$a-context"/></i></code>
</xsl:template>
<xsl:template match="sch:name">
<xsl:param name="a-context">MISSING</xsl:param>
<!-- not quite right. need to handle subject and name having explicit path -->
<code><xsl:value-of select="$a-context"/></code>
</xsl:template>
<!-- NS -->
<xsl:template match="sch:ns">
<row><entry><xsl:value-of select="@prefix" /></entry>
<entry><xsl:value-of select="@uri" /></entry></row>
</xsl:template>
<!-- P -->
<xsl:template match="sch:p[@class]" priority="1">
<!-- common case is that class = ol or ul need to become list items -->
<xsl:choose>
<xsl:when test="@class='ul'">
<xsl:if test="not(preceding-sibling::sch:p[@class='ul'])">
<xsl:text disable-output-escaping="yes">&lt;ul&gt;</xsl:text>
</xsl:if>
<li><p><xsl:apply-templates />
<xsl:if test="@see"><footnote>Refer <code><xsl:value-of select="@see"/></code>.
<xsl:comment>Hand edit required to replace this with proper xref to bibliography!</xsl:comment></footnote></xsl:if>
</p></li>
<xsl:if test="not(following-sibling::sch:p[@class='ul'])">
<xsl:text disable-output-escaping="yes">&lt;/ul&gt;</xsl:text>
</xsl:if>
</xsl:when>
<xsl:when test="@class='ol'">
<xsl:if test="not(preceding-sibling::sch:p[@class='ol'])">
<xsl:text disable-output-escaping="yes">&lt;ol&gt;</xsl:text>
</xsl:if>
<li><p><xsl:apply-templates />
<xsl:if test="@see"><footnote>Refer <code><xsl:value-of select="@see"/></code>.
<xsl:comment>Hand edit required to replace this with proper xref to bibliography!</xsl:comment></footnote></xsl:if>
</p>
</li>
<xsl:if test="not(following-sibling::sch:p[@class='ol'])">
<xsl:text disable-output-escaping="yes">&lt;/ol&gt;</xsl:text>
</xsl:if>
</xsl:when>
<xsl:when test="@class='note'">
<!-- only single para notes -->
<note><p><xsl:apply-templates/>
<xsl:if test="@see"><footnote>Refer <code><xsl:value-of select="@see"/></code>.
<xsl:comment>Hand edit required to replace this with proper xref to bibliography!</xsl:comment></footnote></xsl:if>
</p></note>
</xsl:when>
<xsl:when test="@class='genwarn'or @class='warning' or @class='caution' or @class='remark'">
<!-- only single para warnings -->
<warn format="{@class}"><p><xsl:apply-templates/>
<xsl:if test="@see"><footnote>Refer <code><xsl:value-of select="@see"/></code>.
<xsl:comment>Hand edit required to replace this with proper xref to bibliography!</xsl:comment></footnote></xsl:if>
</p></warn>
</xsl:when>
<xsl:when test="@class='example'">
<!-- only single para example -->
<example><p><xsl:apply-templates/></p></example>
</xsl:when>
<xsl:when test="@class='pre'">
<!-- only single para example -->
<pre xml:space="preserve"><xsl:apply-templates/></pre>
</xsl:when>
<xsl:otherwise>
<p><xsl:comment><xsl:value-of select="@class"/></xsl:comment><xsl:apply-templates />
<xsl:if test="@see"><footnote>Refer <code><xsl:value-of select="@see"/></code>.
<xsl:comment>Hand edit required to replace this with proper xref to bibliography!</xsl:comment></footnote></xsl:if>
</p>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="sch:p">
<p><xsl:apply-templates />
<xsl:if test="@see"><footnote>Refer <code><xsl:value-of select="@see"/></code>.
<xsl:comment>Hand edit required to replace this with proper xref to bibliography!</xsl:comment></footnote></xsl:if>
</p>
</xsl:template>
<!-- PATTERN -->
<xsl:template match="sch:pattern[@abstract='true']" priority="1" >
<clause id="{concat('schematron-derived-annex-', @id)}">
<xsl:apply-templates select="sch:title"/>
<xsl:apply-templates select="sch:p"/>
<p>For each of the following parameter tables, the constraints below apply.</p>
<note><p>The following names and values may be XPath expressions. <code>@</code> is
selects an attribute name. <code>$</code> selects a parameter. </p></note>
<ol>
<xsl:for-each select="//sch:pattern[@is-a=current()/@id]">
<li><p>
<tabular frame="all">
<tgroup cols="2">
<thead><row><entry>Parameter Name</entry><entry>Parameter Value</entry></row></thead>
<tbody>
<xsl:for-each select="sch:param">
<row><entry><code><i><xsl:value-of select="@name"/></i></code></entry>
<entry><xsl:value-of select="@value"/></entry>
</row>
</xsl:for-each>
</tbody>
</tgroup>
</tabular>
</p></li>
</xsl:for-each>
</ol>
<xsl:if test="sch:rule/sch:assert">
<p>To conform to this clause, a document should conform to the following constraints,
after substituting named parameters with the value above in each each case:</p>
<ol><xsl:apply-templates select="sch:rule[not(@abstract='true')]" mode="handle-asserts" /></ol>
</xsl:if>
<xsl:if test="sch:rule/sch:report">
<p>To conform to this clause, an application should report the following cases,
after substituting named parameters with the value above in each each case:</p>
<ol><xsl:apply-templates select="sch:rule[not(@abstract='true')]" mode="handle-reports" /></ol>
</xsl:if>
</clause>
</xsl:template>
<xsl:template match="sch:pattern[@is-a]" priority="1">
</xsl:template>
<xsl:template match="sch:pattern">
<clause id="{concat('schematron-derived-annex-', @id)}">
<xsl:apply-templates select="sch:title"/>
<xsl:apply-templates select="sch:p"/>
<xsl:if test="sch:rule/sch:assert">
<p>To conform to this clause, a document should conform to the following constraints:</p>
<ol><xsl:apply-templates select="sch:rule[not(@abstract='true')]" mode="handle-asserts" /></ol>
</xsl:if>
<xsl:if test="sch:rule/sch:report">
<p>To conform to this clause, an application should report the following cases:</p>
<ol><xsl:apply-templates select="sch:rule[not(@abstract='true')]" mode="handle-reports" /></ol>
</xsl:if>
</clause>
</xsl:template>
<!-- PHASE -->
<xsl:template match="sch:phase">
<!-- Phases are turned into conformance settings -->
<clause id="{concat('schematron-derived-annex-conform-', @id)}"><title><xsl:value-of select="@id"/></title>
<p>A document conforms to this clause if the following clauses are
satisfied:</p>
<ul>
<xsl:apply-templates />
</ul>
</clause>
</xsl:template>
<!-- RULE -->
<xsl:template match="sch:rule" />
<xsl:template match="sch:rule[@abstract='true']" mode="handle-asserts">
<xsl:param name="context">UNKNOWN</xsl:param>
<xsl:apply-templates select="sch:assert | sch:extends" mode="handle-asserts" >
<xsl:with-param name="context" select="$context" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="sch:rule[@abstract='true']" mode="handle-reports">
<xsl:param name="context">UNKNOWN</xsl:param>
<xsl:apply-templates select="sch:report | sch:extends " mode="handle-reports" >
<xsl:with-param name="context" select="$context" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="sch:rule[not(@abstract='true')]" mode="handle-asserts">
<xsl:apply-templates select="sch:assert | sch:extends" mode="handle-asserts" />
</xsl:template>
<xsl:template match="sch:rule[not(@abstract='true')]" mode="handle-reports">
<xsl:apply-templates select="sch:report | sch:extends " mode="handle-reports" />
</xsl:template>
<!-- SPAN -->
<xsl:template match="sch:title/sch:span" priority="1">
<code><xsl:apply-templates /></code>
</xsl:template>
<xsl:template match="sch:span">
<xsl:element name="{@class}"><xsl:apply-templates /></xsl:element>
</xsl:template>
<!-- TITLE -->
<xsl:template match="sch:title">
<title ><xsl:apply-templates /></title>
</xsl:template>
<!-- VALUE-OF -->
<xsl:template match="sch:value-of[ancestor::sch:pattern[@abstract='true']]" priority="1">
<code><i><xsl:value-of select="@select" /></i></code>
</xsl:template>
<xsl:template match="sch:value-of">
<code><xsl:value-of select="@select" /></code>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,819 @@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:src="http://purl.oclc.org/dsdl/9573-11amd1/ns/structure/1.0"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:import href="stdex_front.xsl" />
<xsl:import href="stdex_toc.xsl" />
<xsl:import href="stdex_back.xsl" />
<xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.0//EN" encoding="UTF-8" />
<!-- XSLT stylesheet for ISO/IEC stdex.rnc -->
<!-- version.0.51 -->
<xsl:template match="/">
<!-- contents: { document } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="/src:document">
<!-- contents: { head, body } -->
<html>
<head>
<title>ISO/IEC IT --- Ver.0.50 ---</title>
</head>
<link rel="stylesheet" href="stdex.css" type="text/css" />
<body>
<xsl:call-template name="frontm" />
<hr />
<xsl:call-template name="toc" />
<hr />
<xsl:apply-templates />
<xsl:call-template name="backm" />
</body>
</html>
</xsl:template>
<xsl:template match="src:head">
<!-- contents: { organization & ... } -->
</xsl:template>
<xsl:template match="src:foreword">
<!-- contents: { block*, part-list? } -->
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Foreword</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Avant-propos</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc">foreword</xsl:with-param>
<xsl:with-param name="text" select="$text"/>
</xsl:call-template>
</h1>
<xsl:apply-templates />
<hr />
</xsl:template>
<xsl:template match="src:part-list">
<!-- contents: { part+ } -->
<ul>
<xsl:apply-templates />
</ul>
</xsl:template>
<xsl:template match="src:part">
<!-- contents: { number, title } -->
<li>
<span class="italic">
<xsl:text>-&#160;Part&#160;</xsl:text>
<xsl:apply-templates select="src:number"/>
<xsl:text>:&#160;</xsl:text>
<xsl:apply-templates select="src:title"/>
</span>
</li>
</xsl:template>
<xsl:template match="src:part/src:number">
<!-- contents: { positive-integer } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:part/src:title">
<!-- contents: { text } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:introduction">
<!-- contents: { block } -->
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc">introduction</xsl:with-param>
<xsl:with-param name="text">Introduction</xsl:with-param>
</xsl:call-template>
</h1>
<xsl:apply-templates />
<hr />
</xsl:template>
<xsl:template name="anchor-text">
<xsl:param name="anc" />
<xsl:param name="text" />
<span id="{$anc}">
<xsl:value-of select="$text" />
</span>
</xsl:template>
<xsl:template match="src:warning">
<!-- contents: { attlist.warning, p* } -->
<xsl:text>WARNING-</xsl:text>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:scope">
<!-- contents: { block } -->
<xsl:variable name="nth">
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" />
</xsl:variable>
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Scope</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Domaine d'application</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="concat($nth, ' ', $text)" />
</xsl:call-template>
</h1>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:conf">
<!-- contents: { titled-clause } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:normative-references">
<!-- contents: { block*, referenced-document+ } -->
<xsl:variable name="nth">
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" />
</xsl:variable>
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Normative references</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>R&#233;f&#233;rences normatives</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="concat($nth, ' ', $text)" />
</xsl:call-template>
</h1>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:referenced-document">
<!-- contents: { id, abbrev, title, field*, url } -->
<dl>
<dd>
<xsl:apply-templates />
</dd>
</dl>
</xsl:template>
<xsl:template match="src:abbrev">
<xsl:apply-templates />
<xsl:text>, </xsl:text>
</xsl:template>
<xsl:template match="src:referenced-document/src:title">
<span class="italic">
<xsl:apply-templates />
</span>
</xsl:template>
<xsl:template match="src:terms-and-definitions">
<!-- contents: { terms-and-definitions-content } -->
<xsl:variable name="nth">
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" />
</xsl:variable>
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Terms and definitions</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Termes, d&#233;finitions et symboles</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="concat($nth, ' ', $text)" />
</xsl:call-template>
</h1>
<dl>
<xsl:apply-templates />
</dl>
</xsl:template>
<xsl:template match="src:term-and-definition">
<!-- contents: { term, term*, definition, (example, note, warning)* } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:term-and-definition/src:term">
<!-- contents: { text } -->
<dt>
<xsl:apply-templates />
</dt>
</xsl:template>
<xsl:template match="src:term-and-definition/src:definition">
<!-- contents: { inline } -->
<dd>
<xsl:apply-templates />
</dd>
</xsl:template>
<xsl:template match="src:clause">
<!-- contents: { id, title, clause-content } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:clause/src:title">
<!-- contents: { text | code } -->
<xsl:variable name="level" select="count(ancestor::src:clause|ancestor::src:annex)" />
<xsl:variable name="nth">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:annex//src:clause" format="A.1" />
</xsl:when>
<xsl:otherwise>
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" format="1.1" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="h{$level}">
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="concat($nth, ' ', .)" />
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template match="src:annex">
<!-- contents: { id, @normative, title, clause-content } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:annex/src:title">
<!-- contents: { text | code } -->
<xsl:variable name="nth">
<xsl:number level="multiple" count="src:annex" format="A" />
</xsl:variable>
<h1 class="annex">
<xsl:text>Annex </xsl:text>
<xsl:value-of select="$nth" />
<br />
<xsl:choose>
<xsl:when test="../@normative = 'true'">
<xsl:text>(normative)</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>(informative)</xsl:text>
</xsl:otherwise>
</xsl:choose>
<br />
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="." />
</xsl:call-template>
</h1>
</xsl:template>
<xsl:template match="src:bibliography">
<!-- contents: { referenced-document+ } -->
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Bibliography</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Bibliographie</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc">bibliography</xsl:with-param>
<xsl:with-param name="text" select="$text"/>
</xsl:call-template>
</h1>
<ol>
<xsl:apply-templates />
</ol>
</xsl:template>
<xsl:template match="src:bibliography/src:referenced-document">
<li>
<xsl:number format="[1] " />
<xsl:apply-templates />
</li>
</xsl:template>
<xsl:template match="src:index">
<!-- contents: { attlist.index, text } -->
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc">index</xsl:with-param>
<xsl:with-param name="text">Index</xsl:with-param>
</xsl:call-template>
</h1>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:p">
<!-- contents: { inline } -->
<p>
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="src:ol">
<!-- contents: { li } -->
<ol>
<xsl:apply-templates />
</ol>
</xsl:template>
<xsl:template match="src:ol/src:li">
<!-- contents: { id, block+ } -->
<xsl:variable name="level" select="count(ancestor::src:ol) mod 3" />
<xsl:variable name="format">
<xsl:choose>
<xsl:when test="$level=1">
<xsl:text>a) </xsl:text>
</xsl:when>
<xsl:when test="$level=2">
<xsl:text>1) </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>i) </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<li>
<xsl:number format="{$format}" />
<xsl:apply-templates />
</li>
</xsl:template>
<xsl:template match="src:ul">
<!-- contents: { li } -->
<ul>
<xsl:apply-templates />
</ul>
</xsl:template>
<xsl:template match="src:ul/src:li">
<!-- contents: { block+ } -->
<xsl:variable name="level" select="count(ancestor::src:ul)" />
<xsl:choose>
<xsl:when test="$level=2">
<li>&#183; <xsl:apply-templates /></li>
</xsl:when>
<xsl:otherwise>
<li>- <xsl:apply-templates /></li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="src:notation-list">
<!-- contents: { notation-item+ } -->
<dl compact="1">
<xsl:apply-templates />
</dl>
</xsl:template>
<xsl:template match="src:notation-item">
<!-- contents: { notation, notation-definition } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:notation">
<!-- contents: { inline } -->
<dt>
<xsl:apply-templates />
</dt>
</xsl:template>
<xsl:template match="src:notation-definition">
<!-- contents: { p, (p | note)* } -->
<dd>
<xsl:apply-templates />
</dd>
</xsl:template>
<xsl:template match="src:example">
<!-- contents: { p+ } -->
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>EXAMPLE</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>EXEMPLE</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<p>
<xsl:value-of select="$text" />
<xsl:text> </xsl:text>
<xsl:if test="count(../src:xmp) &gt; 1">
<xsl:number level="single" count="src:xmp" format="1 " />
</xsl:if>
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="src:note">
<!-- contents: { p+ } -->
<p class="note">
<xsl:text>NOTE&#160;&#160;</xsl:text>
<xsl:if test="count(../src:note) &gt; 1">
<xsl:number level="single" count="src:note" format="1 " />
</xsl:if>
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="src:code">
<!-- contents: { text } -->
<code>
<xsl:apply-templates />
</code>
</xsl:template>
<xsl:template match="src:b">
<!-- contents: { text } -->
<b>
<xsl:apply-templates />
</b>
</xsl:template>
<xsl:template match="src:i">
<!-- contents: { text } -->
<span class="italic">
<xsl:apply-templates />
</span>
</xsl:template>
<xsl:template match="src:u">
<!-- contents: { text } -->
<u>
<xsl:apply-templates />
</u>
</xsl:template>
<xsl:template match="src:sup">
<!-- contents: { text } -->
<sup>
<xsl:apply-templates />
</sup>
</xsl:template>
<xsl:template match="src:sub">
<!-- contents: { text } -->
<sub>
<xsl:apply-templates />
</sub>
</xsl:template>
<xsl:template match="src:var">
<!-- contents: { text } -->
<var>
<xsl:apply-templates />
</var>
</xsl:template>
<xsl:template match="src:This | src:this">
<!-- contents: { empty } -->
<!-- F: la pr&#233;sente Norme internationale -->
<xsl:choose>
<xsl:when test="/src:document/src:head/src:part-number">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:value-of select="local-name()"/>
<xsl:text> part of </xsl:text>
</xsl:when>
</xsl:choose>
<xsl:value-of select="/src:document/src:head/src:organization"/>
<xsl:text> </xsl:text>
<xsl:value-of select="/src:document/src:head/src:document-number"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:value-of select="local-name()"/>
<xsl:value-of select="/src:document/src:head/src:document-type"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="local-name()='This'">
<xsl:text>La</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>la</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text> pr&#233;sente </xsl:text>
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-type='International Standard'">
<xsl:text>Norme internationale</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="src:Xref | src:xref">
<xsl:variable name="to" select="@to" />
<xsl:for-each select="//src:*[@id=$to]">
<xsl:call-template name="xref-one" />
</xsl:for-each>
</xsl:template>
<xsl:template name="xref-one">
<xsl:choose>
<xsl:when test="self::src:figure">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:figure" format="A.1 " />
</xsl:when>
<xsl:otherwise>
<xsl:number level="any" count="src:figure" />
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="self::src:table">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:table" format="A.1 " />
</xsl:when>
<xsl:otherwise>
<xsl:number level="any" count="src:table" />
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="self::src:li">
<xsl:variable name="level" select="count(ancestor::src:ol) mod 3" />
<xsl:variable name="format">
<xsl:choose>
<xsl:when test="$level=1">
<xsl:text>a) </xsl:text>
</xsl:when>
<xsl:when test="$level=2">
<xsl:text>1) </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>i) </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:number format="{$format}" />
</xsl:when>
<xsl:when test="ancestor::src:clause">
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" format="1.1 " />
</xsl:when>
<xsl:when test="self::src:referenced-document">
<xsl:value-of select="src:abbrev" />
</xsl:when>
<xsl:otherwise>
<xsl:number level="multiple" count="src:annex" format="A.1 " />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="src:firstterm">
<!-- contents: { text } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:strong">
<!-- contents: { text } -->
<strong>
<xsl:apply-templates />
</strong>
</xsl:template>
<xsl:template match="src:artwork">
<!-- contents: { attlist.artwork } -->
<img src="{@entity}.jpg" />
</xsl:template>
<xsl:template match="src:footnote">
<!-- contents: { id, (text | p)+ } -->
<xsl:element name="a">
<xsl:attribute name="onClick">
<xsl:text>alert('</xsl:text>
<xsl:call-template name="fn-mark" />
<xsl:apply-templates />
<xsl:text>')</xsl:text>
</xsl:attribute>
<sup>
<xsl:call-template name="fn-mark" />
</sup>
</xsl:element>
</xsl:template>
<xsl:template name="fn-mark">
<xsl:choose>
<xsl:when test="ancestor::src:figure">
<xsl:number level="single" count="src:fn" format="a) " />
</xsl:when>
<xsl:when test="ancestor::src:table">
<xsl:number level="single" count="src:fn" format="a) " />
</xsl:when>
<xsl:otherwise>
<xsl:number value="count(preceding::src:fn)-count(preceding::src:fn[ancestor::src:figure or
ancestor::src:table])+1" format="1) " />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="src:table">
<!-- contents: { @pgwide, title?, block+ } -->
<div align="center">
<xsl:apply-templates />
<br />
</div>
</xsl:template>
<xsl:template match="src:table/src:title">
<xsl:variable name="ref">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:table" format="A.1 " />
</xsl:when>
<xsl:otherwise>
<xsl:number level="any" count="src:table" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Table</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Tableau</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- caption -->
<b>
<span id="tab{$ref}">
<xsl:value-of select="concat($text, ' ', $ref)" /> &#8211; <xsl:value-of select="." />
</span>
</b>
<!-- /caption -->
</xsl:template>
<xsl:template match="src:figure">
<!-- contents: { @pgwide, title?, block+ } -->
<div align="center">
<xsl:apply-templates select="*[not(self::src:title)]"/>
<xsl:apply-templates select="src:title"/>
</div>
</xsl:template>
<xsl:template match="src:figure/src:title">
<xsl:variable name="ref">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:figure" format="A.1 " />
</xsl:when>
<xsl:otherwise>
<xsl:number level="any" count="src:figure" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<div align="center">
<b>
<span id="fig{$ref}">
<xsl:text>Figure </xsl:text>
<xsl:value-of select="$ref" /> &#8211; <xsl:value-of select="." />
</span>
</b>
</div>
</xsl:template>
<xsl:template match="src:tabular">
<table>
<xsl:choose>
<xsl:when test="@frame=&quot;none&quot;" />
<xsl:otherwise>
<xsl:attribute name="border" />
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates />
</table>
</xsl:template>
<xsl:template match="src:tgroup">
<xsl:apply-templates select="src:colspec" />
<xsl:apply-templates select="src:thead" />
<xsl:apply-templates select="src:tbody" />
<xsl:apply-templates select="src:tfoot" />
<tr>
<td colspan="100">
<xsl:apply-templates select=".//src:note" />
</td>
</tr>
</xsl:template>
<xsl:template match="src:colspec" />
<xsl:template match="src:thead">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:tbody">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:tfoot">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:row">
<tr>
<xsl:choose>
<xsl:when test="parent::src:thead or parent::src:tfoot">
<xsl:attribute name="bgcolor">#d0d0d0</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="@valign">
<xsl:attribute name="valign">
<xsl:value-of select="@valign" />
</xsl:attribute>
</xsl:when>
<xsl:when test="parent::src:*[@valign]">
<xsl:attribute name="valign">
<xsl:value-of select="parent::src:*[@valign]/@valign" />
</xsl:attribute>
</xsl:when>
<xsl:when test="parent::src:thead">
<xsl:attribute name="valign">bottom</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="valign">top</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="@align">
<xsl:attribute name="align">
<xsl:value-of select="@align" />
</xsl:attribute>
</xsl:when>
<xsl:when test="ancestor::src:*[@align]">
<xsl:attribute name="align">
<xsl:value-of select="ancestor::src:*[@align]/@align" />
</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:apply-templates />
</tr>
</xsl:template>
<xsl:template match="src:entry">
<xsl:choose>
<xsl:when test="ancestor::src:thead">
<xsl:call-template name="ent">
<xsl:with-param name="tag">th</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="ent">
<xsl:with-param name="tag">td</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="ent">
<xsl:param name="tag" />
<xsl:element name="{$tag}">
<xsl:if test="@valign">
<xsl:attribute name="valign">
<xsl:value-of select="@valign" />
</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="@align">
<xsl:attribute name="align">
<xsl:value-of select="@align" />
</xsl:attribute>
</xsl:when>
<xsl:when test="ancestor::src:*[@align]">
<xsl:attribute name="align">
<xsl:value-of select="ancestor::src:*[@align]/@align" />
</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:if test="@morerows">
<xsl:attribute name="rowspan">
<xsl:value-of select="@morerows + 1" />
</xsl:attribute>
</xsl:if>
<xsl:if test="@namest and @nameend">
<xsl:call-template name="colspan">
<xsl:with-param name="namest" select="@namest" />
<xsl:with-param name="nameend" select="@nameend" />
</xsl:call-template>
</xsl:if>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template name="colspan">
<xsl:param name="namest" />
<xsl:param name="nameend" />
<xsl:call-template name="colspan-sub">
<xsl:with-param name="numst">
<xsl:choose>
<xsl:when test="parent::src:row/preceding-sibling::src:colspec[@colname=$namest]">
<xsl:value-of
select="count(parent::src:row/preceding-sibling::src:colspec[@colname=$namest]/preceding-sibling::src:colspec)"
/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="count(ancestor::src:tgroup/child::src:colspec[@colname=$namest]/preceding-sibling::src:colspec)"
/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="numend">
<xsl:choose>
<xsl:when test="parent::src:row/preceding-sibling::src:colspec[@colname=$nameend]">
<xsl:value-of
select="count(parent::src:row/preceding-sibling::src:colspec[@colname=$nameend]/preceding-sibling::src:colspec)"
/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="count(ancestor::src:tgroup/child::src:colspec[@colname=$nameend]/preceding-sibling::src:colspec)"
/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="colspan-sub">
<xsl:param name="numst" />
<xsl:param name="numend" />
<xsl:attribute name="colspan">
<xsl:value-of select="$numend - $numst + 1" />
</xsl:attribute>
</xsl:template>
<xsl:template match="text()">
<xsl:if test="normalize-space(.)!=' '">
<xsl:value-of select="." />
</xsl:if>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,475 @@
<?xml version="1.0"?>
<!-- EXPAND REFERENCES -->
<!-- Expand references to complexType, attributeGroup and group. -->
<!-- Expand equivalence group heads as choice groups -->
<!-- TODO: Handle redefine problem, if some overridden declarations have snuck in -->
<!-- TODO: This does not handle references to groups in different schemas ?-->
<!--
Programmers: Rick Jelliffe, Cheney Xin, Rahul Grewel
-->
<!--
The code was written under sponsorship of JSTOR The Scholarly Journal Archive
This code is also available under the GPL (v3. http://www.gnu.org/copyleft/gpl.html)
-->
<!--
Open Source Initiative OSI - The MIT License:Licensing
[OSI Approved License]
The MIT License
This code copyright 2007-2009 jointly and severally
Allette Systems Pty. Ltd. (www.allette.com.au),
Topologi Pty. Ltd. (www.topologi.com),
JSTOR (http://www.jstor.org/)
and Rick Jelliffe.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/TR/xpath-functions">
<xsl:output method="xml" encoding="UTF-8" indent="yes"
omit-xml-declaration="no"/>
<!-- ============================================================================= -->
<!-- ================SUBSTITUTION GROUPS========================================== -->
<!-- ============================================================================= -->
<!--
TODO: check up on substitutions across namespaces
-->
<xsl:template
match="xs:element[@abstract='true'][ancestor::xs:element]">
<xsl:comment>Abstract substitution group <xsl:value-of select="@name"/></xsl:comment>
<xs:choice>
<!-- the cardinality of the head becomes the cardinality of the choice group -->
<xsl:copy-of select="@minOccurs"/>
<xsl:copy-of select="@maxOccurs"/>
<xsl:copy-of select="namespace::node()"/>
<xsl:for-each select="//xs:element[not(ancestor::xs:element)]
[@name]
[@substitutionGroup=current()/@name]">
<xs:element ref="@name" />
</xsl:for-each>
</xs:choice>
</xsl:template>
<!-- Now handle the case of an non-abstract element which is the head of a substitution group
where the element is just a ref. -->
<xsl:template
match="xs:element[@ref]">
<xsl:variable name="substitutes" select="//xs:element[not(ancestor::xs:element)]
[@name]
[@substitutionGroup=current()/@ref]"/>
<xsl:choose>
<xsl:when test="$substitutes and parent::xs:choice">
<!-- there are substitutes and we are already in a choice group -->
<xsl:copy-of select="." />
<xsl:for-each select="$substitutes" >
<xs:element ref="{name()}" >
<!-- the cardinality of the head becomes the cardinality of the choice group -->
<xsl:copy-of select="@minOccurs"/>
<xsl:copy-of select="@maxOccurs"/>
</xs:element>
</xsl:for-each>
</xsl:when>
<xsl:when test="substitutes">
<!-- there are substitutes and we are not in a choice group -->
<xs:choice>
<xsl:copy-of select="." />
<xsl:for-each select="$substitutes" >
<xs:element ref="{name()}" >
<!-- the cardinality of the head becomes the cardinality of the choice group -->
<xsl:copy-of select="@minOccurs"/>
<xsl:copy-of select="@maxOccurs"/>
</xs:element>
</xsl:for-each>
</xs:choice>
</xsl:when>
<xsl:otherwise>
<!-- there are no substitutes, so just copy -->
<xsl:copy-of select = "."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- TODO: handle the case where an non-abstract element is the head of a substitution group
and the group has a name but not a type. -->
<xsl:template
match="xs:element[@name][not(@type)][ancestor::xs:element]">
<xsl:variable name="substitutes" select="//xs:element[not(ancestor::xs:element)]
[@name]
[@substitutionGroup=current()/@name]"/>
<xsl:choose>
<xsl:when test="$substitutes and parent::xs:choice">
<!-- there are substitutes and we are already in a choice group -->
<xsl:copy-of select="." />
<xsl:for-each select="$substitutes" >
<xs:element ref="{name()}" >
<!-- the cardinality of the head becomes the cardinality of the choice group -->
<xsl:copy-of select="@minOccurs"/>
<xsl:copy-of select="@maxOccurs"/>
</xs:element>
</xsl:for-each>
</xsl:when>
<xsl:when test="substitutes">
<!-- there are substitutes and we are not in a choice group -->
<xs:choice>
<xs:element ref="{name()}" >
<!-- the cardinality of the head becomes the cardinality of the choice group -->
<xsl:copy-of select="@minOccurs"/>
<xsl:copy-of select="@maxOccurs"/>
</xs:element>
<xsl:for-each select="$substitutes" >
<xs:element ref="{name()}" >
<!-- the cardinality of the head becomes the cardinality of the choice group -->
<xsl:copy-of select="@minOccurs"/>
<xsl:copy-of select="@maxOccurs"/>
</xs:element>
</xsl:for-each>
</xs:choice>
</xsl:when>
<xsl:otherwise>
<!-- there are no substitutes, so just copy -->
<xsl:copy-of select = "."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ============================================================================= -->
<!-- ================TYPE ATTRIBUTE=============================================== -->
<!-- ============================================================================= -->
<!-- dereference for element which has type attribute and found type defined before -->
<xsl:template
match="xs:element[@name][@type]"
priority="10" mode="deep">
<xsl:call-template name="handle-element-with-name-and-type" />
</xsl:template>
<xsl:template name="handle-element-with-name-and-type">
<xsl:choose>
<xsl:when test=" ancestor::xs:complexType[@name = current()/@type]" >
<!-- Reported PH
Workaround to prevent recursion: in the case where an element in a complexType
has the same type as the currently defined one: just swallow it.
TODO: need to figure out something better for this case.
-->
</xsl:when>
<!-- dereference for element which has type attribute and found type defined in the same schema -->
<xsl:when test="ancestor::xs:schema/xs:complexType[@name=current()/@type]">
<xs:element name="{@name}">
<xsl:for-each select="@*[name() != 'name' and name() != 'type']|namespace::node()">
<xsl:copy/>
</xsl:for-each>
<!-- handle reference to complex type in same schema -->
<xsl:comment>Expanded from a reference to <xsl:value-of select="@type"/></xsl:comment>
<xsl:apply-templates
select="ancestor::xs:schema/xs:complexType[@name=current()/@type]"
mode="deep"/>
</xs:element>
</xsl:when>
<!-- dereference for element which has type and there is : inside the type means external schema reference -->
<!-- if it is a embedded xsd type, then don't expand it -->
<xsl:when test="contains(@type,':') and substring-before(@type,':') != 'xs' and substring-before(@type,':') != 'xsd' and substring-before(@type,':') != 'xsi'">
<xsl:variable name="prefix" select="substring-before(@type,':')"/>
<xsl:variable name="typename" select="substring-after(@type,':')"/>
<xsl:variable name="uri" select="namespace-uri-for-prefix($prefix,.)"/>
<xsl:comment>Found element who reference external complexType:: prefix=<xsl:value-of select="$prefix"/></xsl:comment>
<xsl:comment> typename=<xsl:value-of select="$typename"/> uri=<xsl:value-of select="$uri"/></xsl:comment>
<xsl:choose>
<!-- if found the complexType with the same name in that schema then replace it -->
<xsl:when
test="//xs:schema[@targetNamespace = $uri]/xs:complexType[@name=$typename]">
<xs:element name="{@name}">
<xsl:for-each select="@*[name() != 'name' and name() != 'type']|namespace::node()">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates
select="//xs:schema[@targetNamespace = $uri]/xs:complexType[@name=$typename]"
mode="deep"/>
</xs:element>
</xsl:when>
<!-- otherwise just copy it over without any changes -->
<xsl:otherwise>
<xsl:copy>
<xsl:for-each select="@*|namespace::node()">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates mode="deep"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<!-- can't find type reference, copy over it as original -->
<xsl:otherwise>
<xsl:copy>
<xsl:for-each select="@*|namespace::node()">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates mode="deep"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!--
<xsl:template match="xs:complexType[@ref]"
priority="10" mode="deep">
<xsl:comment>Expanded from a reference to <xsl:value-of select="@ref"/></xsl:comment>
<xsl:apply-templates select="ancestor::xs:schema/xs:complexType[@name=current()/@ref]" mode="deep"/>
</xsl:template>
-->
<!-- ============================================================================= -->
<!-- ================REMOVE GROUPS ETC============================================ -->
<!-- ============================================================================= -->
<xsl:template match="xs:group[@ref]" priority="10" mode="deep">
<xsl:choose>
<xsl:when test="contains(@ref,':')">
<xsl:variable name="prefix" select="substring-before(@ref,':')"/>
<xsl:variable name="typename" select="substring-after(@ref,':')"/>
<xsl:variable name="uri" select="namespace-uri-for-prefix($prefix,.)"/>
<xsl:comment>Found group who reference external group prefix= <xsl:value-of select="$prefix"/></xsl:comment>
<xsl:comment> typename= <xsl:value-of select="$typename"/> uri= <xsl:value-of select="$uri"/></xsl:comment>
<xsl:comment>Expanded from a reference to <xsl:value-of select="@ref"/></xsl:comment>
<xsl:choose>
<!-- handle group occurrence on reference by a synthetic sequence -->
<xsl:when test="@minOccurs or @maxOccurs">
<xs:sequence>
<xsl:if test="@minOccurs">
<xsl:attribute name="minOccurs"><xsl:value-of select="@minOccurs"/></xsl:attribute>
</xsl:if>
<xsl:if test="@maxOccurs">
<xsl:attribute name="maxOccurs"><xsl:value-of select="@maxOccurs"/></xsl:attribute>
</xsl:if>
<xsl:apply-templates
select="//xs:schema[@targetNamespace = $uri]/xs:group[@name=@typename]"
mode="deep"/>
</xs:sequence>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates
select="//xs:schema[@targetNamespace = $uri]/xs:group[@name=@typename]"
mode="deep"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:comment>Expanded from a reference to <xsl:value-of select="@ref"/></xsl:comment>
<xsl:choose>
<!-- handle group occurrence on reference by a synthetic sequence -->
<xsl:when test="@minOccurs or @maxOccurs">
<xs:sequence>
<xsl:if test="@minOccurs">
<xsl:attribute name="minOccurs"><xsl:value-of select="@minOccurs"/></xsl:attribute>
</xsl:if>
<xsl:if test="@maxOccurs">
<xsl:attribute name="maxOccurs"><xsl:value-of select="@maxOccurs"/></xsl:attribute>
</xsl:if>
<xsl:apply-templates
select="ancestor::xs:schema/xs:group[@name=current()/@ref]"
mode="deep"/>
</xs:sequence>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates
select="ancestor::xs:schema/xs:group[@name=current()/@ref]"
mode="deep"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="xs:attributeGroup[@ref]" priority="10" mode="deep">
<xsl:choose>
<xsl:when test="contains(@ref,':')">
<xsl:variable name="prefix" select="substring-before(@ref,':')"/>
<xsl:variable name="typename" select="substring-after(@ref,':')"/>
<xsl:variable name="uri" select="namespace-uri-for-prefix($prefix,.)"/>
<xsl:comment>Found attributeGroup who reference external group prefix= <xsl:value-of select="$prefix"/></xsl:comment>
<xsl:comment> typename= <xsl:value-of select="$typename"/> uri= <xsl:value-of select="$uri"/></xsl:comment>
<xsl:comment>Expanded from a reference to <xsl:value-of select="@ref"/></xsl:comment>
<xsl:apply-templates
select="//xs:schema[@targetNamespace = $uri]/xs:attributeGroup[@name=@typename]"
mode="deep"/>
</xsl:when>
<xsl:otherwise>
<xsl:comment>Expanded from a reference to <xsl:value-of select="@ref"/></xsl:comment>
<xsl:apply-templates
select="ancestor::xs:schema/xs:attributeGroup[@name=current()/@ref]"
mode="deep"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Groups get added, just their contents -->
<xsl:template match="xs:schema/xs:group[@name] "
priority="10" mode="deep">
<xsl:apply-templates mode="deep"/>
</xsl:template>
<!-- When expanding, remove the name attribute for validity -->
<xsl:template match="xs:schema/xs:complexType[@name] | xs:schema/xs:attributeGroup[@name]"
priority="10" mode="deep">
<xsl:copy>
<xsl:for-each select="@*[not(name()='name')] |namespace::node()">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates mode="deep"/>
</xsl:copy>
</xsl:template>
<!-- Strip out global complex type declarations, group declarations, and attribute group declarations-->
<xsl:template
match="xs:schema/xs:complexType[@name] | xs:schema/xs:group[@name] | xs:schema/xs:attributeGroup[@name]"
priority="5">
<xsl:comment> <xsl:value-of select="@name"/> stripped out</xsl:comment>
</xsl:template>
<!-- ============================================================================= -->
<!-- ================EXTENSION==================================================== -->
<!-- ============================================================================= -->
<!-- TODO -->
<xsl:template match="xs:simpleContent/xs:extension" mode="deep">
<xsl:variable name="base-decl"
select="ancestor::xs:schema/xs:complexType[xs:simpleContent][@name=current()/@base] |
ancestor::xs:schema/xs:simpleType[@name=current()/@base]"/>
<xsl:variable name="simple-base" select="ancestor::xs:schema/xs:simpleType[@name=current()/@base]"/>
<xsl:variable name="complex-base" select="ancestor::xs:schema/xs:complexType[xs:simpleContent][@name=current()/@base]"/>
<xsl:choose>
<xsl:when test="$simple-base">
<xsl:variable name="rest" select="$simple-base/xs:restriction"/>
<xs:apply-templates select="$simple-base" mode="deep"/>
</xsl:when>
<xsl:when test="$complex-base">
<xsl:choose>
<xsl:when test="$complex-base/xs:simpleContent/xs:extension">
<xsl:apply-templates select="$complex-base" mode="deep"/>
<xsl:apply-templates select="xs:attribute | xs:attributeGroup" mode="deep"/>
</xsl:when>
<xsl:when test="$complex-base/xs:simpleContent/xs:restriction">
</xsl:when>
</xsl:choose>
</xsl:when>
<!-- can't find base reference, copy over it as original -->
<xsl:otherwise>
<xsl:copy>
<xsl:for-each select="@*|namespace::node()">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates mode="deep"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- TODO: what if the base type also extends from another? need 2 modes - one for elem and one for attrib -->
<xsl:template match="xs:complexContent/xs:extension" mode="deep">
<xsl:variable name="base-decl" select="ancestor::xs:schema/xs:complexType[@name=current()/@base]"/>
<xsl:choose>
<xsl:when test="$base-decl">
<xs:sequence>
<xsl:apply-templates select="$base-decl/*[not(self::xs:attribute or self::xs:attributeGroup)]" mode="deep"/>
<xsl:apply-templates select="*[not(self::xs:attribute or self::xs:attributeGroup)]" mode="deep"/>
</xs:sequence>
<xsl:apply-templates select="$base-decl/(xs:attribute | xs:attributeGroup)" mode="deep"/>
<xsl:apply-templates select="xs:attribute | xs:attributeGroup" mode="deep"/>
</xsl:when>
<!-- can't find base reference, copy over it as original -->
<xsl:otherwise>
<xsl:copy>
<xsl:for-each select="@*|namespace::node()">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates mode="deep"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ============================================================================= -->
<!-- ================DEFAULT====================================================== -->
<!-- ============================================================================= -->
<!-- for children of schema (that are not matched above) switch mode and reprocess -->
<xsl:template match="xs:schema/*" priority="1">
<xsl:apply-templates mode="deep" select="."/>
</xsl:template>
<!-- copy everything else -->
<xsl:template match="schemas | namespace |xs:schema ">
<xsl:copy>
<xsl:for-each select="@*|namespace::node()">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<!-- copy everything else -->
<xsl:template match="*" mode="deep">
<xsl:copy>
<xsl:for-each select="@*|namespace::node()">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates mode="deep"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,313 @@
<?xml version="1.0" encoding="UTF-8"?><?xar XSLT?>
<!--
OVERVIEW - iso_abstract_expand.xsl
This is a preprocessor for ISO Schematron, which implements abstract patterns.
It also
* extracts a particular schema using an ID, where there are multiple
schemas, such as when they are embedded in the same NVDL script
* allows parameter substitution inside @context, @test, @select, @path
* experimentally, allows parameter recognition and substitution inside
text (NOTE: to be removed, for compataibility with other implementations,
please do not use this)
This should be used after iso-dsdl-include.xsl and before the skeleton or
meta-stylesheet (e.g. iso-svrl.xsl) . It only requires XSLT 1.
Each kind of inclusion can be turned off (or on) on the command line.
-->
<!--
Open Source Initiative OSI - The MIT License:Licensing
[OSI Approved License]
This source code was previously available under the zlib/libpng license.
Attribution is polite.
The MIT License
Copyright (c) 2004-2010 Rick Jellife and Academia Sinica Computing Centre, Taiwan
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<!--
VERSION INFORMATION
2013-09-19 RJ
* Allow macro expansion in @path attributes, eg. for sch:name/@path
2010-07-10 RJ
* Move to MIT license
2008-09-18 RJ
* move out param test from iso:schema template to work with XSLT 1. (Noah Fontes)
2008-07-29 RJ
* Create. Pull out as distinct XSL in its own namespace from old iso_pre_pro.xsl
* Put everything in private namespace
* Rewrite replace_substring named template so that copyright is clear
2008-07-24 RJ
* correct abstract patterns so for correct names: param/@name and
param/@value
2007-01-12 RJ
* Use ISO namespace
* Use pattern/@id not pattern/@name
* Add Oliver Becker's suggests from old Schematron-love-in list for <copy>
* Add XT -ism?
2003 RJ
* Original written for old namespace
* http://www.topologi.com/resources/iso-pre-pro.xsl
-->
<xslt:stylesheet version="1.0" xmlns:xslt="http://www.w3.org/1999/XSL/Transform"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl"
xmlns:iae="http://www.schematron.com/namespace/iae"
>
<xslt:param name="schema-id"></xslt:param>
<!-- Driver for the mode -->
<xsl:template match="/">
<xsl:apply-templates select="." mode="iae:go" />
</xsl:template>
<!-- ================================================================================== -->
<!-- Normal processing rules -->
<!-- ================================================================================== -->
<!-- Output only the selected schema -->
<xslt:template match="iso:schema" >
<xsl:if test="string-length($schema-id) =0 or @id= $schema-id ">
<xslt:copy>
<xslt:copy-of select="@*" />
<xslt:apply-templates mode="iae:go" />
</xslt:copy>
</xsl:if>
</xslt:template>
<!-- Strip out any foreign elements above the Schematron schema .
-->
<xslt:template match="*[not(ancestor-or-self::iso:*)]" mode="iae:go" >
<xslt:apply-templates mode="iae:go" />
</xslt:template>
<!-- ================================================================================== -->
<!-- Handle Schematron abstract pattern preprocessing -->
<!-- abstract-to-real calls
do-pattern calls
macro-expand calls
multi-macro-expand
replace-substring -->
<!-- ================================================================================== -->
<!--
Abstract patterns allow you to say, for example
<pattern name="htmlTable" is-a="table">
<param name="row" value="html:tr"/>
<param name="cell" value="html:td" />
<param name="table" value="html:table" />
</pattern>
For a good introduction, see Uche Ogbujii's article for IBM DeveloperWorks
"Discover the flexibility of Schematron abstract patterns"
http://www-128.ibm.com/developerworks/xml/library/x-stron.html
However, note that ISO Schematron uses @name and @value attributes on
the iso:param element, and @id not @name on the pattern element.
-->
<!-- Suppress declarations of abstract patterns -->
<xslt:template match="iso:pattern[@abstract='true']" mode="iae:go" >
<xslt:comment>Suppressed abstract pattern <xslt:value-of select="@id"/> was here</xslt:comment>
</xslt:template>
<!-- Suppress uses of abstract patterns -->
<xslt:template match="iso:pattern[@is-a]" mode="iae:go" >
<xslt:comment>Start pattern based on abstract <xslt:value-of select="@is-a"/></xslt:comment>
<xslt:call-template name="iae:abstract-to-real" >
<xslt:with-param name="caller" select="@id" />
<xslt:with-param name="is-a" select="@is-a" />
</xslt:call-template>
</xslt:template>
<!-- output everything else unchanged -->
<xslt:template match="*" priority="-1" mode="iae:go" >
<xslt:copy>
<xslt:copy-of select="@*" />
<xslt:apply-templates mode="iae:go"/>
</xslt:copy>
</xslt:template>
<!-- Templates for macro expansion of abstract patterns -->
<!-- Sets up the initial conditions for the recursive call -->
<xslt:template name="iae:macro-expand">
<xslt:param name="caller"/>
<xslt:param name="text" />
<xslt:call-template name="iae:multi-macro-expand">
<xslt:with-param name="caller" select="$caller"/>
<xslt:with-param name="text" select="$text"/>
<xslt:with-param name="paramNumber" select="1"/>
</xslt:call-template>
</xslt:template>
<!-- Template to replace the current parameter and then
recurse to replace subsequent parameters. -->
<xslt:template name="iae:multi-macro-expand">
<xslt:param name="caller"/>
<xslt:param name="text" />
<xslt:param name="paramNumber" />
<xslt:choose>
<xslt:when test="//iso:pattern[@id=$caller]/iso:param[ $paramNumber]">
<xslt:call-template name="iae:multi-macro-expand">
<xslt:with-param name="caller" select="$caller"/>
<xslt:with-param name="paramNumber" select="$paramNumber + 1"/>
<xslt:with-param name="text" >
<xslt:call-template name="iae:replace-substring">
<xslt:with-param name="original" select="$text"/>
<xslt:with-param name="substring"
select="concat('$', //iso:pattern[@id=$caller]/iso:param[ $paramNumber ]/@name)"/>
<xslt:with-param name="replacement"
select="//iso:pattern[@id=$caller]/iso:param[ $paramNumber ]/@value"/>
</xslt:call-template>
</xslt:with-param>
</xslt:call-template>
</xslt:when>
<xslt:otherwise><xslt:value-of select="$text" /></xslt:otherwise>
</xslt:choose>
</xslt:template>
<!-- generate the real pattern from an abstract pattern + parameters-->
<xslt:template name="iae:abstract-to-real" >
<xslt:param name="caller"/>
<xslt:param name="is-a" />
<xslt:for-each select="//iso:pattern[@id= $is-a]">
<xslt:copy>
<xslt:choose>
<xslt:when test=" string-length( $caller ) = 0">
<xslt:attribute name="id"><xslt:value-of select="concat( generate-id(.) , $is-a)" /></xslt:attribute>
</xslt:when>
<xslt:otherwise>
<xslt:attribute name="id"><xslt:value-of select="$caller" /></xslt:attribute>
</xslt:otherwise>
</xslt:choose>
<xslt:apply-templates select="*|text()" mode="iae:do-pattern" >
<xslt:with-param name="caller"><xslt:value-of select="$caller"/></xslt:with-param>
</xslt:apply-templates>
</xslt:copy>
</xslt:for-each>
</xslt:template>
<!-- Generate a non-abstract pattern -->
<xslt:template mode="iae:do-pattern" match="*">
<xslt:param name="caller"/>
<xslt:copy>
<xslt:for-each select="@*[name()='test' or name()='context' or name()='select' or name()='path' ]">
<xslt:attribute name="{name()}">
<xslt:call-template name="iae:macro-expand">
<xslt:with-param name="text"><xslt:value-of select="."/></xslt:with-param>
<xslt:with-param name="caller"><xslt:value-of select="$caller"/></xslt:with-param>
</xslt:call-template>
</xslt:attribute>
</xslt:for-each>
<xslt:copy-of select="@*[name()!='test'][name()!='context'][name()!='select'][name()!='path']" />
<xsl:for-each select="node()">
<xsl:choose>
<!-- Experiment: replace macros in text as well, to allow parameterized assertions
and so on, without having to have spurious <iso:value-of> calls and multiple
delimiting.
NOTE: THIS FUNCTIONALITY WILL BE REMOVED IN THE FUTURE -->
<xsl:when test="self::text()">
<xslt:call-template name="iae:macro-expand">
<xslt:with-param name="text"><xslt:value-of select="."/></xslt:with-param>
<xslt:with-param name="caller"><xslt:value-of select="$caller"/></xslt:with-param>
</xslt:call-template>
</xsl:when>
<xsl:otherwise>
<xslt:apply-templates select="." mode="iae:do-pattern">
<xslt:with-param name="caller"><xslt:value-of select="$caller"/></xslt:with-param>
</xslt:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xslt:copy>
</xslt:template>
<!-- UTILITIES -->
<!-- Simple version of replace-substring function -->
<xslt:template name="iae:replace-substring">
<xslt:param name="original" />
<xslt:param name="substring" />
<xslt:param name="replacement" select="''"/>
<xsl:choose>
<xsl:when test="not($original)" />
<xsl:when test="not(string($substring))">
<xsl:value-of select="$original" />
</xsl:when>
<xsl:when test="contains($original, $substring)">
<xsl:variable name="before" select="substring-before($original, $substring)" />
<xsl:variable name="after" select="substring-after($original, $substring)" />
<xsl:value-of select="$before" />
<xsl:value-of select="$replacement" />
<!-- recursion -->
<xsl:call-template name="iae:replace-substring">
<xsl:with-param name="original" select="$after" />
<xsl:with-param name="substring" select="$substring" />
<xsl:with-param name="replacement" select="$replacement" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<!-- no substitution -->
<xsl:value-of select="$original" />
</xsl:otherwise>
</xsl:choose>
</xslt:template>
</xslt:stylesheet>

View File

@@ -0,0 +1,559 @@
<?xml version="1.0" ?>
<!--
NOTE: Early code, probably does not work
-->
<!--
OVERVIEW - iso_crdl_expand.xsl
This is a preprocessor for ISO Schematron, which expands ISO CREPDL
(Character Repertoire Definition Language) properties into Schematron
assertions. The CRDL rules must be in property elements linked to
assertions.
The implementation below is aimed at following XPath2, to fit with XSLT2 implementation.
There is scope to add outputs for other regex dialects.
-->
<!--
VERSION INFORMATION
2010-04-22 RJ BETA
* Get going with complex Xpaths to match code point by codepoint
* Works on CDRL embedded in properties element.
2008-09-20 RJ
* Add XPath2 Regex code contributed by David Carlisle with thanks
2008-07-29 RJ
* Beta
-->
<!--
Open Source Initiative OSI - The MIT License:Licensing
[OSI Approved License]
The MIT License
This code copyright 2010 Rick Jelliffe.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<!--
The code follows the method of Appendix L of the 2010 Committee Draft of the
updated ISO Schematron.
The following schema:
============================================================
<sch:rule context="/*">
<sch:assert test="true()" properties="iso8859-6alt">The document text should be ISO 8859-6</sch:assert>
</sch:rule>
...
<sch:property id="iso8859-6alt">
<union xmlns="http://purl.oclc.org/dsdl/crepdl/ns/structure/1.0" xml:id="iso8859-6alt" >
<char>\p{IsBasicLatin}</char>
<char>&#xA0;</char>
<char>&#xA4;</char>
<char>&#xAD;</char>
<char>&#x60C;</char>
<char>&#x61B;</char>
<char>&#x61F;</char>
<char>[&#x621;-&#x63A;]</char>
<char>[&#x640;-&#x652;]</char>
</union>
</sch:property>
============================================================
will be transformed to this Schematron schema assertion
============================================================
<sch:rule context="/*">
<iso:let
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
xmlns:crdl="http://purl.oclc.org/dsdl/crepdl/ns/structure/1.0"
name=" badCharactersString "
value="( string-join(
distinct-values (
for $i in string-to-codepoints( . )
return for $c in codepoints-to-string( $i)
return if ( matches($c,'\p{IsBasicLatin}')&#xA;
or matches($c,' ')&#xA;
or matches($c,'¤')&#xA;
or matches($c,'­')&#xA;
or matches($c,'،')&#xA;
or matches($c,'؛')&#xA;
or matches($c,'؟')&#xA;
or matches($c,'[ء-غ]')&#xA;
or matches($c,'[ـ-ْ]') )
then &#34;&#34;
else $c ), &#34;&#34;) )"/>
<iso:assert
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
xmlns:crdl="http://purl.oclc.org/dsdl/crepdl/ns/structure/1.0"
test="true() and not( string-length( $badCharactersString ))"
properties="iso8859-6alt"
>The text is ISO 8859-6: not <iso:value-of select="$badCharactersString"/>
</iso:assert>
</sch:rule>
============================================================
This assertion works by
* converting the input string into a sequence of codepoints
* converting each single codepoint back into a string
* testing that string (character) against the referenced CRDL and producing Y or N
Which gives a sequence of Y or N strings as long as the input string. So
* reduce it to only a sequence of the distinct values
* convert it to a string
* test that string for any 'N'
The reason for all this convolution is that XSLT2 does not seem to have a way to apply an AND function to a sequence of booleans. Hence the convoluted approach. I hope there is a better method.
-->
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
xmlns:crdl="http://purl.oclc.org/dsdl/crepdl/ns/structure/1.0"
>
<!-- First, enable or disable CRDL processing based on
whether this is XSLT2 and whether there are any elements.
-->
<xsl:template match="/" >
<xsl:choose>
<xsl:when test="//iso:properties/iso:property/crdl:* and
( //iso:schema[@queryBinding='xpath2' or
@queryBinding='xslt2'])">
<!-- ENABLE CRDL PROCESSING -->
<xsl:message>ENABLE CRDL PROCESSING</xsl:message>
<xsl:copy>
<xsl:apply-templates mode="add-crdl" />
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:if test=
"not(//iso:schema[@queryBinding='xpath2' or
@queryBinding='xslt2'])">
<xsl:message>Query Language Error: CRDL requires xpath2 or xslt2. Assertions not generated.</xsl:message>
</xsl:if>
<!-- DISABLE CRDL PROCESSING -->
<xsl:message>DISABLE CRDL PROCESSING</xsl:message>
<xsl:copy-of select="/" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- =================================================================== -->
<!-- Generate Regular Expression from CREPDL -->
<!-- Process document. Strip any CRDL from properties. Add assertions -->
<!-- for them. -->
<!-- =================================================================== -->
<xsl:template mode="add-crdl" priority="-1"
match="*" >
<xsl:message>COPY <xsl:value-of select=" name() "/></xsl:message>
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates mode="add-crdl" />
</xsl:copy>
</xsl:template>
<!-- Special treatment for asserts which have a properties
attribute, which contains a reference to a property that
contains crdl elements.
-->
<xsl:template match="iso:assert[@properties]
[//iso:property[contains(
concat( ' ', current()/@properties, ' '),
concat( ' ', @id, ' '))]
[crdl:*]]"
mode="add-crdl" >
<xsl:variable name="theRegexes">
<!-- handle-crdl-regex returns a sequence of elements,
each being regexes to be used in an assertion. -->
<xsl:call-template name="handle-crdl-regex" >
<xsl:with-param name="theProperties" select=" @properties "/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="theOriginalTest" >
<xsl:value-of select="@test" />
</xsl:variable>
<xsl:variable name="this" as=" element()" >
<xsl:copy-of select="." />
</xsl:variable>
<!-- first copy the current assertion -->
<xsl:for-each select=" $theRegexes ">
<xsl:message>ASSERT {{ <xsl:value-of select=" . " /> }}</xsl:message>
<iso:let name=" badCharactersString " >
<xsl:attribute name="value"
select=" concat(
'( string-join(
distinct-values (
for $i in string-to-codepoints( . )
return for $c in codepoints-to-string( $i)
return if ',
. ,
' then &quot;&quot; else $c ), &quot;&quot;) )'
) " />
</iso:let>
<iso:assert>
<xsl:attribute name="test"
select=" concat ( $theOriginalTest , ' and not( string-length( $badCharactersString ))')" />
<xsl:copy-of select="$this/@*[not(name() = 'test')]" />
<xsl:apply-templates mode="add-crdl" select=" $this/node() " />
<xsl:text>: not </xsl:text>
<iso:value-of select="$badCharactersString" />
</iso:assert>
</xsl:for-each>
</xsl:template >
<!-- Special treatment for reports which have a properties
attribute, which contains a reference to a property that
contains crdl elements.
-->
<xsl:template match="iso:report[@properties]
[//iso:property[contains(
concat( ' ', current()/@properties, ' '),
concat( ' ', @id, ' '))]
[crdl:*]]
"
mode="add-crdl" >
<xsl:variable name="theRegexes">
<!-- handle-crdl-regex returns a sequence of elements,
each being regexes to be used in an report. -->
<xsl:call-template name="handle-crdl-regex" >
<xsl:with-param name="theProperties" select=" @properties "/>
</xsl:call-template>
</xsl:variable>
<xsl:message>REPORT {{ <xsl:value-of select=" $theRegexes " /> }}</xsl:message>
<xsl:variable name="this" as=" element()">
<xsl:copy-of select="." />
</xsl:variable>
<xsl:variable name="theOriginalTest" >
<xsl:value-of select="@test" />
</xsl:variable>
<!-- first copy the current assertion -->
<xsl:for-each select=" $theRegexes ">
<iso:let name=" badCharactersString " >
<xsl:attribute name="value"
select=" concat(
'( string-join(
distinct-values (
for $i in string-to-codepoints( . )
return for $c in codepoints-to-string( $i)
return if ',
. ,
' then &quot;&quot; else $c ), &quot;&quot;) )'
) " />
</iso:let>
<iso:report>
<xsl:attribute name="test"
select=" concat ( $theOriginalTest, ' and not( string-length( $badCharactersString ))')" />
<xsl:copy-of select="$this/@*[not(name() = 'test')]" />
<xsl:apply-templates mode="add-crdl" select=" $this/node() " />
<xsl:text>: found </xsl:text>
<iso:value-of select="$badCharactersString" />
</iso:report>
</xsl:for-each>
</xsl:template >
<!-- swallow crdl elements -->
<xsl:template match="crdl:*" mode="add-crdl" />
<!-- ================================================================================== -->
<!-- Handle embedded ISO DSDL Part 7 crdl character repertoire elements in assertions -->
<!-- ================================================================================== -->
<!-- This is a simple non-conforming implementation of crdl. It converts a crdl schema inside a
Schematron property element into the corresponding assertion using XPath2 regular expressions.
It has the following limitations:
* Except for top-level intersections, the difference and intersection elements are just
treated as unions. This generates no false negatives, which is what we want from an open schema.
* The repertoire element does not work.
* The UCS version attributes are ignored
The usage is this:
* the crdl elements are children of iso:schema or iso:pattern
* the top-level crdl element has an xml:id attribute
* an assertion or report element may have an ext:crdl-type attribute which references a crdl element
* such an assert or report is treated as two (or more) asserts or reports, each with the same assertion text, but
with different tests: the explicit @test from Schematron, and the generated tests from the crdl elements.
E.g.
<iso:schema ...>
...
<iso:rule context="para/text()">
<iso:assert test="true()" properties="shiftJIS" >
The para element should only contain characters provided by shift JIS
</iso:assert>
</iso:rule>
...
<iso:properties>
<iso:property id="shiftJIS"
<crdl:ref href="shiftJIS.credpl" />
</iso:property>
...
</iso:properties>
...
</iso:schema>
The same model can be used for implementing XSD datatypes ( @ext:xsd-type) and DTTL datatypes (@ext:dttl-type).
-->
<!-- =================================================================== -->
<!-- Handles referencing schemas with an @ext:crdl-type reference -->
<!-- This is obsolete, and will be reimplemented using @properties -->
<!-- =================================================================== -->
<!-- This template generates the output assert statements, and generates the particular
regular expressions for the Xpath2 matches() function (in a mode crdl:xpath).
This allows us to have smaller regexes in some cases, because whereever the XPath is
a series of matches() functions connected by and, we can instead use multiple assert elements
at the output. -->
<xsl:template name="handle-crdl-regex">
<xsl:param name="theProperties" />
<xsl:message>PROPERTIES <xsl:value-of select=" $theProperties " /></xsl:message>
<xsl:choose>
<xsl:when test="//iso:property[contains(
concat( ' ', $theProperties, ' '),
concat( ' ', @id, ' '))]
/crdl:intersection" >
<xsl:message>INTERSECTION </xsl:message>
<!-- Top-level intersections are handled as multiple assertions -->
<xsl:for-each select="//iso:property[contains(
concat( ' ', $theProperties, ' '),
concat( ' ', @id, ' '))]
/crdl:intersection/*">
<regex>matches(., "^[<xsl:apply-templates select="." mode="crdl:xpath" />]*$")</regex>
</xsl:for-each>
</xsl:when>
<!-- NOT FINISHED -->
<xsl:when test="//iso:property[contains(
concat( ' ', $theProperties, ' '),
concat( ' ', @id, ' '))]
/crdl:difference">
<!-- Top-level differences are handled approximately -->
<xsl:message>DIFFERENCE </xsl:message>
<!-- So difference(A, B, C) is assert(A or B or C) and assert(not(A and B and C)) -->
<regex>not(<xsl:for-each select="//iso:property[contains(
concat( ' ', $theProperties, ' '),
concat( ' ', @id, ' '))]
/crdl:difference/*"
>matches($c, "^[<xsl:apply-templates select="." mode="crdl:xpath" />]*$")
<xsl:if test="position() != last()"> and </xsl:if>
</xsl:for-each>)</regex>
</xsl:when>
<xsl:when test="//iso:property[contains(
concat( ' ', $theProperties, ' '),
concat( ' ', @id, ' '))]
[crdl:*]">
<!-- Handle the type as a single assertions -->
<xsl:message>OTHER <xsl:value-of select="//iso:property[contains(
concat( ' ', $theProperties, ' '),
concat( ' ', @id, ' '))]
/crdl:*/name() "/> </xsl:message>
<regex> <xsl:apply-templates
select="//iso:property[contains(
concat( ' ', $theProperties, ' '),
concat( ' ', @id, ' '))]
/crdl:*" mode="crdl:xpath" /> </regex>
</xsl:when>
<xsl:otherwise>
<xsl:message>Programming Error or Limitation: CRDL case not handled </xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ==================================================================================== -->
<!-- crdl-xpath MODE generates regular expressions using the XPath2 regexes -->
<!-- Generate the contents of the regular expressions that implement the char rep testing -->
<!-- ==================================================================================== -->
<xsl:template mode="crdl:xpath" match="crdl:ref">
<!-- Insert subschema -->
<xsl:variable name="document-uri" select="substring-before(@href, '#')"/>
<xsl:variable name="fragment-id" select="substring-after(@href, '#')"/>
<xsl:choose>
<xsl:when test="string-length( $document-uri ) = 0 and string-length( $fragment-id ) = 0" >
<xsl:message>Impossible URL in crdl reference</xsl:message>
</xsl:when>
<xsl:when test="string-length( $document-uri ) != 0">
<xsl:apply-templates select="//crdl:*[@xml:id= $fragment-id ]" mode="crdl:xpath"/>
</xsl:when>
<xsl:when test="string-length( $fragment-id ) != 0">
<xsl:apply-templates select="document( $document-uri )//crdl:*[@xml:id= $fragment-id ]" mode="crdl:xpath"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="document( $document-uri )/*" mode="crdl:xpath"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template mode="crdl:xpath" match="crdl:repertoire">
<!-- Dereference repertoires and insert -->
<!-- TODO: build some charreps in and make some parameter system to allow them -->
<xsl:message>Named character repertoires not supported in this version</xsl:message>
</xsl:template>
<!-- The following code courtesy of David Carlisle -->
<xsl:template match="crdl:union" mode="crdl:xpath">
<xsl:text>( </xsl:text>
<xsl:for-each select="*">
<xsl:apply-templates select="." mode="crdl:xpath"/>
<xsl:if test="position()!=last()"><xsl:text >
or </xsl:text></xsl:if>
</xsl:for-each>
<xsl:text> )</xsl:text>
</xsl:template>
<!-- The following code courtesy of David Carlisle -->
<xsl:template match="crdl:intersection" mode="crdl:xpath">
<xsl:text>( </xsl:text>
<xsl:for-each select="*">
<xsl:apply-templates select="." mode="crdl:xpath"/>
<xsl:if test="position()!=last()"><xsl:text >
and </xsl:text></xsl:if>
</xsl:for-each>
<xsl:text> )</xsl:text>
</xsl:template>
<!-- The following code courtesy of David Carlisle -->
<xsl:template match="crdl:difference" mode="crdl:xpath">
<xsl:text>( </xsl:text>
<xsl:apply-templates select="*[1]" mode="crdl:xpath"/>
<xsl:for-each select="*[position()!=1]">
<xsl:if test="position()=1">
and not( </xsl:if>
<xsl:apply-templates select="." mode="crdl:xpath"/>
<xsl:choose>
<xsl:when test="position()!=last()"><xsl:text >
or </xsl:text></xsl:when>
<xsl:otherwise> ) </xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:text> )</xsl:text>
</xsl:template>
<!-- The following code courtesy of David Carlisle -->
<xsl:template match="crdl:char[not(*)]" mode="crdl:xpath">
<xsl:text>matches($c,'</xsl:text>
<xsl:value-of select="replace(.,'''','''''')"/>
<xsl:text>')</xsl:text>
</xsl:template>
<!--
Obsolete code. This code was to help convert between different regex syntaxes.
CREPDL now uses XSLT2 regex syntax, so we only need to worry about escaping
string delimiters.
<xsl:choose>
<xsl:when test=".='\'"><xsl:text>\\</xsl:text></xsl:when>
<xsl:when test=".='.'"><xsl:text>\.</xsl:text></xsl:when>
<xsl:when test=".='['"><xsl:text>\[</xsl:text></xsl:when>
<xsl:when test=".=']'"><xsl:text>\]</xsl:text></xsl:when>
<xsl:when test=".='-'"><xsl:text>\-</xsl:text></xsl:when>
<xsl:when test=".='('"><xsl:text>\(</xsl:text></xsl:when>
<xsl:when test=".=')'"><xsl:text>\)</xsl:text></xsl:when>
<xsl:when test=".=' '"><xsl:text>\s</xsl:text></xsl:when>
<xsl:when test=".=' '"><xsl:text>\t</xsl:text></xsl:when>
<xsl:when test=".='|'"><xsl:text>\|</xsl:text></xsl:when>
<xsl:when test=".='&amp;'"><xsl:text>\&amp;</xsl:text></xsl:when>
<xsl:otherwise>
<xsl:value-of select="." />
</xsl:otherwise>
</xsl:choose>
-->
<xsl:template match="crdl:char[crdl:kernel]" mode="crdl:xpath">
<!-- Note: no hull processing because ??? -->
<xsl:text>matches($c,'</xsl:text>
<xsl:value-of select="replace(crdl:kernel,'''','''''')"/>
<xsl:text>')</xsl:text>
</xsl:template>
<!-- FIX THIS -->
<xsl:template mode="crdl:xpath" match="crdl:hull">
<xsl:text>^</xsl:text><xsl:value-of select="." /><xsl:text></xsl:text>
</xsl:template>
<xsl:template mode="crdl:xpath" match="*" priority="-1">
<xsl:comment>Unhandled element <xsl:value-of select="name(.)"/></xsl:comment>
</xsl:template>
</xsl:stylesheet>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,558 @@
<?xml version="1.0" ?>
<!--
ISO_SVRL_1.6 .xsl WARNING: Schematron 1.6 is obsolete use ISO Schematron
Implementation of Schematron Validation Report Language from ISO Schematron
ISO/IEC 19757 Document Schema Definition Languages (DSDL)
Part 3: Rule-based validation Schematron
Annex D: Schematron Validation Report Language
This ISO Standard is available free as a Publicly Available Specification in PDF from ISO.
Also see www.schematron.com for drafts and other information.
This implementation of SVRL is designed to run with the "Skeleton" implementation
of Schematron which Oliver Becker devised. The skeleton code provides a
Schematron implementation but with named templates for handling all output;
the skeleton provides basic templates for output using this API, but client
validators can be written to import the skeleton and override the default output
templates as required. (In order to understand this, you must understand that
a named template such as "process-assert" in this XSLT stylesheet overrides and
replaces any template with the same name in the imported skeleton XSLT file.)
The other important thing to understand in this code is that there are different
versions of the Schematron skeleton. These track the development of Schematron through
Schematron 1.5, Schematron 1.6 and now ISO Schematron. One only skeleton must be
imported. The code has templates for the different skeletons commented out for
convenience. ISO Schematron has a different namespace than Schematron 1.5 and 1.6;
so the ISO Schematron skeleton has been written itself with an optional import
statement to in turn import the Schematron 1.6 skeleton. This will allow you to
validate with schemas from either namespace.
History:
2008-08-11
* RJ Fix attribute/@select which saxon allows in XSLT 1
2008-08-07
* RJ Add output-encoding attribute to specify final encoding to use
* Alter allow-foreign functionality so that Schematron span, emph and dir elements make
it to the output, for better formatting and because span can be used to mark up
semantically interesting information embedded in diagnostics, which reduces the
need to extend SVRL itself
* Diagnostic-reference had an invalid attribute @id that duplicated @diagnostic: removed
2008-08-06
* RJ Fix invalid output: svrl:diagnostic-reference is not contained in an svrl:text
* Output comment to SVRL file giving filename if available (from command-line parameter)
2008-08-04
* RJ move sch: prefix to schold: prefix to prevent confusion (we want people to
be able to switch from old namespace to new namespace without changing the
sch: prefix, so it is better to keep that prefix completely out of the XSLT)
* Extra signature fixes (PH)
2008-08-03
* Repair missing class parameter on process-p
2008-07-31
* Update skeleton names
2007-04-03
* Add option generate-fired-rule (RG)
2007-02-07
* Prefer true|false for parameters. But allow yes|no on some old for compatability
* DP Diagnostics output to svrl:text. Diagnosis put out after assertion text.
* Removed non-SVRL elements and attributes: better handled as an extra layer that invokes this one
* Add more formal parameters
* Correct confusion between $schemaVersion and $queryBinding
* Indent
* Validate against RNC schemas for XSLT 1 and 2 (with regex tests removed)
* Validate output with UniversalTest.sch against RNC schema for ISO SVRL
2007-02-01
* DP. Update formal parameters of overriding named templates to handle more attributes.
* DP. Refactor handling of rich and linkable parameters to a named template.
2007-01-22
* DP change svrl:ns to svrl:ns-in-attribute-value
* Change default when no queryBinding from "unknown" to "xslt"
2007-01-18:
* Improve documentation
* KH Add command-line options to generate paths or not
* Use axsl:attribute rather than xsl:attribute to shut XSLT2 up
* Add extra command-line options to pass to the iso_schematron_skeleton
2006-12-01: iso_svrl.xsl Rick Jelliffe,
* update namespace,
* update phase handling,
* add flag param to process-assert and process-report & @ flag on output
2001: Conformance1-5.xsl Rick Jelliffe,
* Created, using the skeleton code contributed by Oliver Becker
-->
<!--
Derived from Conformance1-5.xsl.
Copyright (c) 2001, 2006 Rick Jelliffe and Academia Sinica Computing Center, Taiwan
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from
the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim
that you wrote the original software. If you use this software in a product,
an acknowledgment in the product documentation would be appreciated but is
not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!-- Ideas nabbed from schematrons by Francis N., Miloslav N. and David C. -->
<!-- The command-line parameters are:
phase NMTOKEN | "#ALL" (default) Select the phase for validation
allow-foreign "true" | "false" (default) Pass non-Schematron elements to the generated stylesheet
diagnose= true | false|yes|no Add the diagnostics to the assertion test in reports (yes|no are obsolete)
generate-paths=true|false|yes|no generate the @location attribute with XPaths (yes|no are obsolete)
sch.exslt.imports semi-colon delimited string of filenames for some EXSLT implementations
optimize "visit-no-attributes" Use only when the schema has no attributes as the context nodes
generate-fired-rule "true"(default) | "false" Generate fired-rule elements
-->
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias"
xmlns:schold="http://www.ascc.net/xml/schematron"
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
>
<!-- Select the import statement and adjust the path as
necessary for your system.
-->
<xsl:import href="skeleton1-6_XT.xsl"/>
<!--
<xsl:import href="iso_schematron_skeleton_for_saxon.xsl"/>
<xsl:import href="iso_schematron_skeleton_for_xslt1.xsl"/>
<xsl:import href="iso_schematron_skeleton.xsl"/>
<xsl:import href="skeleton1-5.xsl"/>
<xsl:import href="skeleton1-6.xsl"/>
-->
<xsl:param name="diagnose">true</xsl:param>
<xsl:param name="phase">
<xsl:choose>
<!-- Handle Schematron 1.5 and 1.6 phases -->
<xsl:when test="//schold:schema/@defaultPhase">
<xsl:value-of select="//schold:schema/@defaultPhase"/>
</xsl:when>
<!-- Handle ISO Schematron phases -->
<xsl:when test="//iso:schema/@defaultPhase">
<xsl:value-of select="//iso:schema/@defaultPhase"/>
</xsl:when>
<xsl:otherwise>#ALL</xsl:otherwise>
</xsl:choose>
</xsl:param>
<xsl:param name="allow-foreign">false</xsl:param>
<xsl:param name="generate-paths">true</xsl:param>
<xsl:param name="generate-fired-rule">true</xsl:param>
<xsl:param name="optimize" />
<!-- e.g. saxon file.xml file.xsl "sch.exslt.imports=.../string.xsl;.../math.xsl" -->
<xsl:param name="sch.exslt.imports"/>
<!-- Set the language code for messages -->
<xsl:param name="langCode">default</xsl:param>
<xsl:param name="output-encoding"/>
<!-- Set the default for schematron-select-full-path, i.e. the notation for svrl's @location-->
<xsl:param name="full-path-notation">1</xsl:param>
<!-- Experimental: If this file called, then must be generating svrl -->
<xsl:variable name="svrlTest" select="true()" />
<!-- ================================================================ -->
<xsl:template name="process-prolog">
<axsl:output method="xml" omit-xml-declaration="no" standalone="yes"
indent="yes">
<xsl:if test=" string-length($output-encoding) &gt; 0">
<xsl:attribute name="encoding"><xsl:value-of select=" $output-encoding" /></xsl:attribute>
</xsl:if>
</axsl:output>
</xsl:template>
<!-- Overrides skeleton.xsl -->
<xsl:template name="process-root">
<xsl:param name="title"/>
<xsl:param name="contents" />
<xsl:param name="queryBinding" >xslt1</xsl:param>
<xsl:param name="schemaVersion" />
<xsl:param name="id" />
<xsl:param name="version"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:schematron-output title="{$title}" schemaVersion="{$schemaVersion}" >
<xsl:if test=" string-length( normalize-space( $phase )) &gt; 0 and
not( normalize-space( $phase ) = '#ALL') ">
<axsl:attribute name="phase">
<xsl:value-of select=" $phase " />
</axsl:attribute>
</xsl:if>
<axsl:comment><axsl:value-of select="$archiveDirParameter"/> &#xA0;
<axsl:value-of select="$archiveNameParameter"/> &#xA0;
<axsl:value-of select="$fileNameParameter"/> &#xA0;
<axsl:value-of select="$fileDirParameter"/></axsl:comment>&#xA0;
<xsl:apply-templates mode="do-schema-p" />
<xsl:copy-of select="$contents" />
</svrl:schematron-output>
</xsl:template>
<xsl:template name="process-assert">
<xsl:param name="test"/>
<xsl:param name="diagnostics" />
<xsl:param name="id" />
<xsl:param name="flag" />
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:failed-assert test="{$test}" >
<xsl:if test="string-length( $id ) &gt; 0">
<axsl:attribute name="id">
<xsl:value-of select=" $id " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" string-length( $flag ) &gt; 0">
<axsl:attribute name="flag">
<xsl:value-of select=" $flag " />
</axsl:attribute>
</xsl:if>
<!-- Process rich attributes. -->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:call-template name='linkableParms'>
<xsl:with-param name="role" select="$role" />
<xsl:with-param name="subject" select="$subject"/>
</xsl:call-template>
<xsl:if test=" $generate-paths = 'true' or $generate-paths= 'yes' ">
<!-- true/false is the new way -->
<axsl:attribute name="location">
<axsl:apply-templates select="." mode="schematron-get-full-path"/>
</axsl:attribute>
</xsl:if>
<svrl:text>
<xsl:apply-templates mode="text" />
</svrl:text>
<xsl:if test="$diagnose = 'yes' or $diagnose= 'true' ">
<!-- true/false is the new way -->
<xsl:call-template name="diagnosticsSplit">
<xsl:with-param name="str" select="$diagnostics"/>
</xsl:call-template>
</xsl:if>
</svrl:failed-assert>
</xsl:template>
<xsl:template name="process-report">
<xsl:param name="id"/>
<xsl:param name="test"/>
<xsl:param name="diagnostics"/>
<xsl:param name="flag" />
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:successful-report test="{$test}" >
<xsl:if test=" string-length( $id ) &gt; 0">
<axsl:attribute name="id">
<xsl:value-of select=" $id " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" string-length( $flag ) &gt; 0">
<axsl:attribute name="flag">
<xsl:value-of select=" $flag " />
</axsl:attribute>
</xsl:if>
<!-- Process rich attributes. -->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:call-template name='linkableParms'>
<xsl:with-param name="role" select="$role" />
<xsl:with-param name="subject" select="$subject"/>
</xsl:call-template>
<xsl:if test=" $generate-paths = 'yes' or $generate-paths = 'true' ">
<!-- true/false is the new way -->
<axsl:attribute name="location">
<axsl:apply-templates select="." mode="schematron-get-full-path"/>
</axsl:attribute>
</xsl:if>
<svrl:text>
<xsl:apply-templates mode="text" />
</svrl:text>
<xsl:if test="$diagnose = 'yes' or $diagnose='true' ">
<!-- true/false is the new way -->
<xsl:call-template name="diagnosticsSplit">
<xsl:with-param name="str" select="$diagnostics"/>
</xsl:call-template>
</xsl:if>
</svrl:successful-report>
</xsl:template>
<xsl:template name="process-diagnostic">
<xsl:param name="id"/>
<!-- Rich parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:diagnostic-reference diagnostic="{$id}" >
<!--xsl:if test="string($id)">
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
</xsl:attribute>
</xsl:if-->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:text>
</xsl:text>
<xsl:apply-templates mode="text"/>
</svrl:diagnostic-reference>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-dir" >
<xsl:param name="value" />
<xsl:choose>
<xsl:when test=" $allow-foreign = 'true'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-emph" >
<xsl:param name="class" />
<xsl:choose>
<xsl:when test=" $allow-foreign = 'true'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="process-rule">
<xsl:param name="id"/>
<xsl:param name="context"/>
<xsl:param name="flag"/>
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<xsl:if test=" $generate-fired-rule = 'true'">
<svrl:fired-rule context="{$context}" >
<!-- Process rich attributes. -->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:if test=" string( $id )">
<xsl:attribute name="id">
<xsl:value-of select=" $id " />
</xsl:attribute>
</xsl:if>
<xsl:if test=" string-length( $role ) &gt; 0">
<xsl:attribute name="role">
<xsl:value-of select=" $role " />
</xsl:attribute>
</xsl:if>
</svrl:fired-rule>
</xsl:if>
</xsl:template>
<xsl:template name="process-ns">
<xsl:param name="prefix"/>
<xsl:param name="uri"/>
<svrl:ns-prefix-in-attribute-values uri="{$uri}" prefix="{$prefix}" />
</xsl:template>
<xsl:template name="process-p">
<xsl:param name="icon"/>
<xsl:param name="class"/>
<xsl:param name="id"/>
<xsl:param name="lang"/>
<svrl:text>
<xsl:apply-templates mode="text"/>
</svrl:text>
</xsl:template>
<xsl:template name="process-pattern">
<xsl:param name="name"/>
<xsl:param name="id"/>
<xsl:param name="is-a"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:active-pattern >
<xsl:if test=" string( $id )">
<axsl:attribute name="id">
<xsl:value-of select=" $id " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" string( $name )">
<axsl:attribute name="name">
<xsl:value-of select=" $name " />
</axsl:attribute>
</xsl:if>
<xsl:call-template name='richParms'>
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<!-- ?? report that this screws up iso:title processing -->
<xsl:apply-templates mode="do-pattern-p"/>
<!-- ?? Seems that this apply-templates is never triggered DP -->
<axsl:apply-templates />
</svrl:active-pattern>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-message" >
<xsl:param name="pattern"/>
<xsl:param name="role"/>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-span" >
<xsl:param name="class" />
<xsl:choose>
<xsl:when test=" $allow-foreign = 'true'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- =========================================================================== -->
<!-- processing rich parameters. -->
<xsl:template name='richParms'>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<!-- Process rich attributes. -->
<xsl:if test="string($space)">
<axsl:attribute name="xml:space">
<xsl:value-of select="$space"/>
</axsl:attribute>
</xsl:if>
<xsl:if test="string($lang)">
<axsl:attribute name="xml:lang">
<xsl:value-of select="$lang"/>
</axsl:attribute>
</xsl:if>
</xsl:template>
<!-- processing linkable parameters. -->
<xsl:template name='linkableParms'>
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- ISO SVRL has a role attribute to match the Schematron role attribute -->
<xsl:if test=" string($role )">
<axsl:attribute name="role">
<xsl:value-of select=" $role " />
</axsl:attribute>
</xsl:if>
<!-- ISO SVRL does not have a subject attribute to match the Schematron subject attribute.
Instead, the Schematron subject attribute is folded into the location attribute -->
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,605 @@
<?xml version="1.0" ?>
<!--
ISO_SVRL.xsl
Implementation of Schematron Validation Report Language from ISO Schematron
ISO/IEC 19757 Document Schema Definition Languages (DSDL)
Part 3: Rule-based validation Schematron
Annex D: Schematron Validation Report Language
This ISO Standard is available free as a Publicly Available Specification in PDF from ISO.
Also see www.schematron.com for drafts and other information.
This implementation of SVRL is designed to run with the "Skeleton" implementation
of Schematron which Oliver Becker devised. The skeleton code provides a
Schematron implementation but with named templates for handling all output;
the skeleton provides basic templates for output using this API, but client
validators can be written to import the skeleton and override the default output
templates as required. (In order to understand this, you must understand that
a named template such as "process-assert" in this XSLT stylesheet overrides and
replaces any template with the same name in the imported skeleton XSLT file.)
The other important thing to understand in this code is that there are different
versions of the Schematron skeleton. These track the development of Schematron through
Schematron 1.5, Schematron 1.6 and now ISO Schematron. One only skeleton must be
imported. The code has templates for the different skeletons commented out for
convenience. ISO Schematron has a different namespace than Schematron 1.5 and 1.6;
so the ISO Schematron skeleton has been written itself with an optional import
statement to in turn import the Schematron 1.6 skeleton. This will allow you to
validate with schemas from either namespace.
History:
2010-04-14
* Add command line parameter 'terminate' which will terminate on first failed
assert and (optionally) successful report.
2009-03-18
* Fix atrribute with space "see " which generates wrong name in some processors
2008-08-11
* RJ Fix attribute/@select which saxon allows in XSLT 1
2008-08-07
* RJ Add output-encoding attribute to specify final encoding to use
* Alter allow-foreign functionality so that Schematron span, emph and dir elements make
it to the output, for better formatting and because span can be used to mark up
semantically interesting information embedded in diagnostics, which reduces the
need to extend SVRL itself
* Diagnostic-reference had an invalid attribute @id that duplicated @diagnostic: removed
2008-08-06
* RJ Fix invalid output: svrl:diagnostic-reference is not contained in an svrl:text
* Output comment to SVRL file giving filename if available (from command-line parameter)
2008-08-04
* RJ move sch: prefix to schold: prefix to prevent confusion (we want people to
be able to switch from old namespace to new namespace without changing the
sch: prefix, so it is better to keep that prefix completely out of the XSLT)
* Extra signature fixes (PH)
2008-08-03
* Repair missing class parameter on process-p
2008-07-31
* Update skeleton names
2007-04-03
* Add option generate-fired-rule (RG)
2007-02-07
* Prefer true|false for parameters. But allow yes|no on some old for compatability
* DP Diagnostics output to svrl:text. Diagnosis put out after assertion text.
* Removed non-SVRL elements and attributes: better handled as an extra layer that invokes this one
* Add more formal parameters
* Correct confusion between $schemaVersion and $queryBinding
* Indent
* Validate against RNC schemas for XSLT 1 and 2 (with regex tests removed)
* Validate output with UniversalTest.sch against RNC schema for ISO SVRL
2007-02-01
* DP. Update formal parameters of overriding named templates to handle more attributes.
* DP. Refactor handling of rich and linkable parameters to a named template.
2007-01-22
* DP change svrl:ns to svrl:ns-in-attribute-value
* Change default when no queryBinding from "unknown" to "xslt"
2007-01-18:
* Improve documentation
* KH Add command-line options to generate paths or not
* Use axsl:attribute rather than xsl:attribute to shut XSLT2 up
* Add extra command-line options to pass to the iso_schematron_skeleton
2006-12-01: iso_svrl.xsl Rick Jelliffe,
* update namespace,
* update phase handling,
* add flag param to process-assert and process-report & @ flag on output
2001: Conformance1-5.xsl Rick Jelliffe,
* Created, using the skeleton code contributed by Oliver Becker
-->
<!--
Derived from Conformance1-5.xsl.
Copyright (c) 2001-2010 Rick Jelliffe and Academia Sinica Computing Center, Taiwan
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from
the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim
that you wrote the original software. If you use this software in a product,
an acknowledgment in the product documentation would be appreciated but is
not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!-- Ideas nabbed from schematrons by Francis N., Miloslav N. and David C. -->
<!-- The command-line parameters are:
phase NMTOKEN | "#ALL" (default) Select the phase for validation
allow-foreign "true" | "false" (default) Pass non-Schematron elements and rich markup to the generated stylesheet
diagnose= true | false|yes|no Add the diagnostics to the assertion test in reports (yes|no are obsolete)
generate-paths=true|false|yes|no generate the @location attribute with XPaths (yes|no are obsolete)
sch.exslt.imports semi-colon delimited string of filenames for some EXSLT implementations
optimize "visit-no-attributes" Use only when the schema has no attributes as the context nodes
generate-fired-rule "true"(default) | "false" Generate fired-rule elements
terminate= yes | no | true | false | assert Terminate on the first failed assertion or successful report
Note: whether any output at all is generated depends on the XSLT implementation.
-->
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias"
xmlns:schold="http://www.ascc.net/xml/schematron"
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
>
<!-- Select the import statement and adjust the path as
necessary for your system.
If not XSLT2 then also remove svrl:active-pattern/@document="{document-uri()}" from process-pattern()
-->
<!--
<xsl:import href="iso_schematron_skeleton_for_saxon.xsl"/>
-->
<xsl:import href="iso_schematron_skeleton_for_xslt1.xsl"/>
<!--
<xsl:import href="iso_schematron_skeleton.xsl"/>
<xsl:import href="skeleton1-5.xsl"/>
<xsl:import href="skeleton1-6.xsl"/>
-->
<xsl:param name="diagnose" >true</xsl:param>
<xsl:param name="phase" >
<xsl:choose>
<!-- Handle Schematron 1.5 and 1.6 phases -->
<xsl:when test="//schold:schema/@defaultPhase">
<xsl:value-of select="//schold:schema/@defaultPhase"/>
</xsl:when>
<!-- Handle ISO Schematron phases -->
<xsl:when test="//iso:schema/@defaultPhase">
<xsl:value-of select="//iso:schema/@defaultPhase"/>
</xsl:when>
<xsl:otherwise>#ALL</xsl:otherwise>
</xsl:choose>
</xsl:param>
<xsl:param name="allow-foreign" >false</xsl:param>
<xsl:param name="generate-paths" >true</xsl:param>
<xsl:param name="generate-fired-rule" >true</xsl:param>
<xsl:param name="optimize"/>
<xsl:param name="output-encoding" ></xsl:param>
<!-- e.g. saxon file.xml file.xsl "sch.exslt.imports=.../string.xsl;.../math.xsl" -->
<xsl:param name="sch.exslt.imports" />
<!-- Experimental: If this file called, then must be generating svrl -->
<xsl:variable name="svrlTest" select="true()" />
<!-- ================================================================ -->
<xsl:template name="process-prolog">
<axsl:output method="xml" omit-xml-declaration="no" standalone="yes"
indent="yes">
<xsl:if test=" string-length($output-encoding) &gt; 0">
<xsl:attribute name="encoding"><xsl:value-of select=" $output-encoding" /></xsl:attribute>
</xsl:if>
</axsl:output>
</xsl:template>
<!-- Overrides skeleton.xsl -->
<xsl:template name="process-root">
<xsl:param name="title"/>
<xsl:param name="contents" />
<xsl:param name="queryBinding" >xslt1</xsl:param>
<xsl:param name="schemaVersion" />
<xsl:param name="id" />
<xsl:param name="version"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:schematron-output title="{$title}" schemaVersion="{$schemaVersion}" >
<xsl:if test=" string-length( normalize-space( $phase )) &gt; 0 and
not( normalize-space( $phase ) = '#ALL') ">
<axsl:attribute name="phase">
<xsl:value-of select=" $phase " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" $allow-foreign = 'true'">
</xsl:if>
<xsl:if test=" $allow-foreign = 'true'">
<xsl:call-template name='richParms'>
<xsl:with-param name="fpi" select="$fpi" />
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
</xsl:if>
<axsl:comment><axsl:value-of select="$archiveDirParameter"/> &#xA0;
<axsl:value-of select="$archiveNameParameter"/> &#xA0;
<axsl:value-of select="$fileNameParameter"/> &#xA0;
<axsl:value-of select="$fileDirParameter"/></axsl:comment>
<xsl:apply-templates mode="do-schema-p" />
<xsl:copy-of select="$contents" />
</svrl:schematron-output>
</xsl:template>
<xsl:template name="process-assert">
<xsl:param name="test"/>
<xsl:param name="diagnostics" />
<xsl:param name="id" />
<xsl:param name="flag" />
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:failed-assert test="{$test}" >
<xsl:if test="string-length( $id ) &gt; 0">
<axsl:attribute name="id">
<xsl:value-of select=" $id " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" string-length( $flag ) &gt; 0">
<axsl:attribute name="flag">
<xsl:value-of select=" $flag " />
</axsl:attribute>
</xsl:if>
<!-- Process rich attributes. -->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:call-template name='linkableParms'>
<xsl:with-param name="role" select="$role" />
<xsl:with-param name="subject" select="$subject"/>
</xsl:call-template>
<xsl:if test=" $generate-paths = 'true' or $generate-paths= 'yes' ">
<!-- true/false is the new way -->
<axsl:attribute name="location">
<axsl:apply-templates select="." mode="schematron-get-full-path"/>
</axsl:attribute>
</xsl:if>
<svrl:text>
<xsl:apply-templates mode="text" />
</svrl:text>
<xsl:if test="$diagnose = 'yes' or $diagnose= 'true' ">
<!-- true/false is the new way -->
<xsl:call-template name="diagnosticsSplit">
<xsl:with-param name="str" select="$diagnostics"/>
</xsl:call-template>
</xsl:if>
</svrl:failed-assert>
<xsl:if test=" $terminate = 'yes' or $terminate = 'true' ">
<axsl:message terminate="yes">TERMINATING</axsl:message>
</xsl:if>
<xsl:if test=" $terminate = 'assert' ">
<axsl:message terminate="yes">TERMINATING</axsl:message>
</xsl:if>
</xsl:template>
<xsl:template name="process-report">
<xsl:param name="id"/>
<xsl:param name="test"/>
<xsl:param name="diagnostics"/>
<xsl:param name="flag" />
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:successful-report test="{$test}" >
<xsl:if test=" string-length( $id ) &gt; 0">
<axsl:attribute name="id">
<xsl:value-of select=" $id " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" string-length( $flag ) &gt; 0">
<axsl:attribute name="flag">
<xsl:value-of select=" $flag " />
</axsl:attribute>
</xsl:if>
<!-- Process rich attributes. -->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:call-template name='linkableParms'>
<xsl:with-param name="role" select="$role" />
<xsl:with-param name="subject" select="$subject"/>
</xsl:call-template>
<xsl:if test=" $generate-paths = 'yes' or $generate-paths = 'true' ">
<!-- true/false is the new way -->
<axsl:attribute name="location">
<axsl:apply-templates select="." mode="schematron-get-full-path"/>
</axsl:attribute>
</xsl:if>
<svrl:text>
<xsl:apply-templates mode="text" />
</svrl:text>
<xsl:if test="$diagnose = 'yes' or $diagnose='true' ">
<!-- true/false is the new way -->
<xsl:call-template name="diagnosticsSplit">
<xsl:with-param name="str" select="$diagnostics"/>
</xsl:call-template>
</xsl:if>
</svrl:successful-report>
<xsl:if test=" $terminate = 'yes' or $terminate = 'true' ">
<axsl:message terminate="yes">TERMINATING</axsl:message>
</xsl:if>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-dir" >
<xsl:param name="value" />
<xsl:choose>
<xsl:when test=" $allow-foreign = 'true'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="process-diagnostic">
<xsl:param name="id"/>
<!-- Rich parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:diagnostic-reference diagnostic="{$id}" >
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:text>
</xsl:text>
<xsl:apply-templates mode="text"/>
</svrl:diagnostic-reference>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-emph" >
<xsl:param name="class" />
<xsl:choose>
<xsl:when test=" $allow-foreign = 'true'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="process-rule">
<xsl:param name="id"/>
<xsl:param name="context"/>
<xsl:param name="flag"/>
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<xsl:if test=" $generate-fired-rule = 'true'">
<svrl:fired-rule context="{$context}" >
<!-- Process rich attributes. -->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:if test=" string( $id )">
<xsl:attribute name="id">
<xsl:value-of select=" $id " />
</xsl:attribute>
</xsl:if>
<xsl:if test=" string-length( $role ) &gt; 0">
<xsl:attribute name="role">
<xsl:value-of select=" $role " />
</xsl:attribute>
</xsl:if>
</svrl:fired-rule>
</xsl:if>
</xsl:template>
<xsl:template name="process-ns">
<xsl:param name="prefix"/>
<xsl:param name="uri"/>
<svrl:ns-prefix-in-attribute-values uri="{$uri}" prefix="{$prefix}" />
</xsl:template>
<xsl:template name="process-p">
<xsl:param name="icon"/>
<xsl:param name="class"/>
<xsl:param name="id"/>
<xsl:param name="lang"/>
<svrl:text>
<xsl:apply-templates mode="text"/>
</svrl:text>
</xsl:template>
<xsl:template name="process-pattern">
<xsl:param name="name"/>
<xsl:param name="id"/>
<xsl:param name="is-a"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:active-pattern >
<xsl:if test=" string( $id )">
<axsl:attribute name="id">
<xsl:value-of select=" $id " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" string( $name )">
<axsl:attribute name="name">
<xsl:value-of select=" $name " />
</axsl:attribute>
</xsl:if>
<xsl:call-template name='richParms'>
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<!-- ?? report that this screws up iso:title processing -->
<xsl:apply-templates mode="do-pattern-p"/>
<!-- ?? Seems that this apply-templates is never triggered DP -->
<axsl:apply-templates />
</svrl:active-pattern>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-message" >
<xsl:param name="pattern"/>
<xsl:param name="role"/>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-span" >
<xsl:param name="class" />
<xsl:choose>
<xsl:when test=" $allow-foreign = 'true'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- =========================================================================== -->
<!-- processing rich parameters. -->
<xsl:template name='richParms'>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<!-- Process rich attributes. -->
<xsl:if test=" $allow-foreign = 'true'">
<xsl:if test="string($fpi)">
<axsl:attribute name="fpi">
<xsl:value-of select="$fpi"/>
</axsl:attribute>
</xsl:if>
<xsl:if test="string($icon)">
<axsl:attribute name="icon">
<xsl:value-of select="$icon"/>
</axsl:attribute>
</xsl:if>
<xsl:if test="string($see)">
<axsl:attribute name="see">
<xsl:value-of select="$see"/>
</axsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="string($space)">
<axsl:attribute name="xml:space">
<xsl:value-of select="$space"/>
</axsl:attribute>
</xsl:if>
<xsl:if test="string($lang)">
<axsl:attribute name="xml:lang">
<xsl:value-of select="$lang"/>
</axsl:attribute>
</xsl:if>
</xsl:template>
<!-- processing linkable parameters. -->
<xsl:template name='linkableParms'>
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- ISO SVRL has a role attribute to match the Schematron role attribute -->
<xsl:if test=" string($role )">
<axsl:attribute name="role">
<xsl:value-of select=" $role " />
</axsl:attribute>
</xsl:if>
<!-- ISO SVRL does not have a subject attribute to match the Schematron subject attribute.
Instead, the Schematron subject attribute is folded into the location attribute -->
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,684 @@
<?xml version="1.0" ?>
<!--
ISO_SVRL.xsl
Implementation of Schematron Validation Report Language from ISO Schematron
ISO/IEC 19757 Document Schema Definition Languages (DSDL)
Part 3: Rule-based validation Schematron
Annex D: Schematron Validation Report Language
This ISO Standard is available free as a Publicly Available Specification in PDF from ISO.
Also see www.schematron.com for drafts and other information.
This implementation of SVRL is designed to run with the "Skeleton" implementation
of Schematron which Oliver Becker devised. The skeleton code provides a
Schematron implementation but with named templates for handling all output;
the skeleton provides basic templates for output using this API, but client
validators can be written to import the skeleton and override the default output
templates as required. (In order to understand this, you must understand that
a named template such as "process-assert" in this XSLT stylesheet overrides and
replaces any template with the same name in the imported skeleton XSLT file.)
The other important thing to understand in this code is that there are different
versions of the Schematron skeleton. These track the development of Schematron through
Schematron 1.5, Schematron 1.6 and now ISO Schematron. One only skeleton must be
imported. The code has templates for the different skeletons commented out for
convenience. ISO Schematron has a different namespace than Schematron 1.5 and 1.6;
so the ISO Schematron skeleton has been written itself with an optional import
statement to in turn import the Schematron 1.6 skeleton. This will allow you to
validate with schemas from either namespace.
History:
2010-04-14
* Add command line parameter 'terminate' which will terminate on first failed
assert and (optionally) successful report.
2009-03-18
* Fix atrribute with space "see " which generates wrong name in some processors
* rename allow-foreign to allow-rich
2009-02-19
* RJ add experimental non-standard attribute active-pattern/@document which says which
document is being validated from that point to the next similar. This is to cope with the
experimental multi-document validation in the XSLT2 skeleton.
2008-08-19
* RJ Experimental: Handle property elements. NOTE: signature change for process-assert,
process-report and process-rule to add property.
2008-08-11
* RJ Fix attribute/@select which saxon allows in XSLT 1
2008-08-07
* RJ Add output-encoding attribute to specify final encoding to use
* Alter allow-foreign functionality so that Schematron span, emph and dir elements make
it to the output, for better formatting and because span can be used to mark up
semantically interesting information embedded in diagnostics, which reduces the
need to extend SVRL itself
* Diagnostic-reference had an invalid attribute @id that duplicated @diagnostic: removed
2008-08-06
* RJ Fix invalid output: svrl:diagnostic-reference is not contained in an svrl:text
* Output comment to SVRL file giving filename if available (from command-line parameter)
2008-08-04
* RJ move sch: prefix to schold: prefix to prevent confusion (we want people to
be able to switch from old namespace to new namespace without changing the
sch: prefix, so it is better to keep that prefix completely out of the XSLT)
* Extra signature fixes (PH)
2008-08-03
* Repair missing class parameter on process-p
2008-07-31
* Update skeleton names
2007-04-03
* Add option generate-fired-rule (RG)
2007-02-07
* Prefer true|false for parameters. But allow yes|no on some old for compatability
* DP Diagnostics output to svrl:text. Diagnosis put out after assertion text.
* Removed non-SVRL elements and attributes: better handled as an extra layer that invokes this one
* Add more formal parameters
* Correct confusion between $schemaVersion and $queryBinding
* Indent
* Validate against RNC schemas for XSLT 1 and 2 (with regex tests removed)
* Validate output with UniversalTest.sch against RNC schema for ISO SVRL
2007-02-01
* DP. Update formal parameters of overriding named templates to handle more attributes.
* DP. Refactor handling of rich and linkable parameters to a named template.
2007-01-22
* DP change svrl:ns to svrl:ns-in-attribute-value
* Change default when no queryBinding from "unknown" to "xslt"
2007-01-18:
* Improve documentation
* KH Add command-line options to generate paths or not
* Use axsl:attribute rather than xsl:attribute to shut XSLT2 up
* Add extra command-line options to pass to the iso_schematron_skeleton
2006-12-01: iso_svrl.xsl Rick Jelliffe,
* update namespace,
* update phase handling,
* add flag param to process-assert and process-report & @ flag on output
2001: Conformance1-5.xsl Rick Jelliffe,
* Created, using the skeleton code contributed by Oliver Becker
-->
<!--
Derived from Conformance1-5.xsl.
Copyright (c) 2001-2010 Rick Jelliffe and Academia Sinica Computing Center, Taiwan
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from
the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim
that you wrote the original software. If you use this software in a product,
an acknowledgment in the product documentation would be appreciated but is
not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!-- Ideas nabbed from schematrons by Francis N., Miloslav N. and David C. -->
<!-- The command-line parameters are:
phase NMTOKEN | "#ALL" (default) Select the phase for validation
allow-foreign "true" | "false" (default) Pass non-Schematron elements and rich markup to the generated stylesheet
diagnose= true | false|yes|no Add the diagnostics to the assertion test in reports (yes|no are obsolete)
property= true | false Experimental: Add properties to the assertion test in reports
generate-paths=true|false|yes|no generate the @location attribute with XPaths (yes|no are obsolete)
sch.exslt.imports semi-colon delimited string of filenames for some EXSLT implementations
optimize "visit-no-attributes" Use only when the schema has no attributes as the context nodes
generate-fired-rule "true"(default) | "false" Generate fired-rule elements
terminate= yes | no | true | false | assert Terminate on the first failed assertion or successful report
Note: whether any output at all is generated depends on the XSLT implementation.
-->
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias"
xmlns:schold="http://www.ascc.net/xml/schematron"
xmlns:iso="http://purl.oclc.org/dsdl/schematron"
xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
>
<!-- Select the import statement and adjust the path as
necessary for your system.
-->
<xsl:import href="iso_schematron_skeleton_for_saxon.xsl"/>
<!--
<xsl:import href="iso_schematron_skeleton_for_xslt1.xsl"/>
<xsl:import href="iso_schematron_skeleton.xsl"/>
<xsl:import href="skeleton1-5.xsl"/>
<xsl:import href="skeleton1-6.xsl"/>
-->
<xsl:param name="diagnose">true</xsl:param>
<xsl:param name="property">true</xsl:param>
<xsl:param name="phase">
<xsl:choose>
<!-- Handle Schematron 1.5 and 1.6 phases -->
<xsl:when test="//schold:schema/@defaultPhase">
<xsl:value-of select="//schold:schema/@defaultPhase"/>
</xsl:when>
<!-- Handle ISO Schematron phases -->
<xsl:when test="//iso:schema/@defaultPhase">
<xsl:value-of select="//iso:schema/@defaultPhase"/>
</xsl:when>
<xsl:otherwise>#ALL</xsl:otherwise>
</xsl:choose>
</xsl:param>
<xsl:param name="allow-foreign">false</xsl:param>
<xsl:param name="generate-paths">true</xsl:param>
<xsl:param name="generate-fired-rule">true</xsl:param>
<xsl:param name="optimize" />
<!-- e.g. saxon file.xml file.xsl "sch.exslt.imports=.../string.xsl;.../math.xsl" -->
<xsl:param name="sch.exslt.imports" />
<xsl:param name="terminate" >false</xsl:param>
<!-- Set the language code for messages -->
<xsl:param name="langCode">default</xsl:param>
<xsl:param name="output-encoding"/>
<!-- Set the default for schematron-select-full-path, i.e. the notation for svrl's @location-->
<xsl:param name="full-path-notation">1</xsl:param>
<!-- Experimental: If this file called, then must be generating svrl -->
<xsl:variable name="svrlTest" select="true()" />
<!-- ================================================================ -->
<xsl:template name="process-prolog">
<axsl:output method="xml" omit-xml-declaration="no" standalone="yes"
indent="yes">
<xsl:if test=" string-length($output-encoding) &gt; 0">
<xsl:attribute name="encoding"><xsl:value-of select=" $output-encoding" /></xsl:attribute>
</xsl:if>
</axsl:output>
</xsl:template>
<!-- Overrides skeleton.xsl -->
<xsl:template name="process-root">
<xsl:param name="title"/>
<xsl:param name="contents" />
<xsl:param name="queryBinding" >xslt1</xsl:param>
<xsl:param name="schemaVersion" />
<xsl:param name="id" />
<xsl:param name="version"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:schematron-output title="{$title}" schemaVersion="{$schemaVersion}" >
<xsl:if test=" string-length( normalize-space( $phase )) &gt; 0 and
not( normalize-space( $phase ) = '#ALL') ">
<axsl:attribute name="phase">
<xsl:value-of select=" $phase " />
</axsl:attribute>
</xsl:if>
<axsl:comment><axsl:value-of select="$archiveDirParameter"/> &#xA0;
<axsl:value-of select="$archiveNameParameter"/> &#xA0;
<axsl:value-of select="$fileNameParameter"/> &#xA0;
<axsl:value-of select="$fileDirParameter"/></axsl:comment>
<xsl:apply-templates mode="do-schema-p" />
<xsl:copy-of select="$contents" />
</svrl:schematron-output>
</xsl:template>
<xsl:template name="process-assert">
<xsl:param name="test"/>
<xsl:param name="diagnostics" />
<xsl:param name="properties" />
<xsl:param name="id" />
<xsl:param name="flag" />
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:failed-assert test="{$test}" >
<xsl:if test="string-length( $id ) &gt; 0">
<axsl:attribute name="id">
<xsl:value-of select=" $id " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" string-length( $flag ) &gt; 0">
<axsl:attribute name="flag">
<xsl:value-of select=" $flag " />
</axsl:attribute>
</xsl:if>
<!-- Process rich attributes. -->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:call-template name='linkableParms'>
<xsl:with-param name="role" select="$role" />
<xsl:with-param name="subject" select="$subject"/>
</xsl:call-template>
<xsl:if test=" $generate-paths = 'true' or $generate-paths= 'yes' ">
<!-- true/false is the new way -->
<axsl:attribute name="location">
<axsl:apply-templates select="." mode="schematron-select-full-path"/>
</axsl:attribute>
</xsl:if>
<svrl:text>
<xsl:apply-templates mode="text" />
</svrl:text>
<xsl:if test="$diagnose = 'yes' or $diagnose= 'true' ">
<!-- true/false is the new way -->
<xsl:call-template name="diagnosticsSplit">
<xsl:with-param name="str" select="$diagnostics"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$property= 'yes' or $property= 'true' ">
<!-- true/false is the new way -->
<xsl:call-template name="propertiesSplit">
<xsl:with-param name="str" select="$properties"/>
</xsl:call-template>
</xsl:if>
</svrl:failed-assert>
<xsl:if test=" $terminate = 'yes' or $terminate = 'true' ">
<axsl:message terminate="yes">TERMINATING</axsl:message>
</xsl:if>
<xsl:if test=" $terminate = 'assert' ">
<axsl:message terminate="yes">TERMINATING</axsl:message>
</xsl:if>
</xsl:template>
<xsl:template name="process-report">
<xsl:param name="id"/>
<xsl:param name="test"/>
<xsl:param name="diagnostics"/>
<xsl:param name="flag" />
<xsl:param name="properties"/>
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:successful-report test="{$test}" >
<xsl:if test=" string-length( $id ) &gt; 0">
<axsl:attribute name="id">
<xsl:value-of select=" $id " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" string-length( $flag ) &gt; 0">
<axsl:attribute name="flag">
<xsl:value-of select=" $flag " />
</axsl:attribute>
</xsl:if>
<!-- Process rich attributes. -->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:call-template name='linkableParms'>
<xsl:with-param name="role" select="$role" />
<xsl:with-param name="subject" select="$subject"/>
</xsl:call-template>
<xsl:if test=" $generate-paths = 'yes' or $generate-paths = 'true' ">
<!-- true/false is the new way -->
<axsl:attribute name="location">
<axsl:apply-templates select="." mode="schematron-select-full-path"/>
</axsl:attribute>
</xsl:if>
<svrl:text>
<xsl:apply-templates mode="text" />
</svrl:text>
<xsl:if test="$diagnose = 'yes' or $diagnose='true' ">
<!-- true/false is the new way -->
<xsl:call-template name="diagnosticsSplit">
<xsl:with-param name="str" select="$diagnostics"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$property = 'yes' or $property='true' ">
<!-- true/false is the new way -->
<xsl:call-template name="propertiesSplit">
<xsl:with-param name="str" select="$properties"/>
</xsl:call-template>
</xsl:if>
</svrl:successful-report>
<xsl:if test=" $terminate = 'yes' or $terminate = 'true' ">
<axsl:message terminate="yes" >TERMINATING</axsl:message>
</xsl:if>
</xsl:template>
<xsl:template name="process-diagnostic">
<xsl:param name="id"/>
<!-- Rich parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:diagnostic-reference diagnostic="{$id}" >
<!--xsl:if test="string($id)">
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
</xsl:attribute>
</xsl:if-->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:text>
</xsl:text>
<xsl:apply-templates mode="text"/>
</svrl:diagnostic-reference>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-dir" >
<xsl:param name="value" />
<xsl:choose>
<xsl:when test=" $allow-foreign = 'true'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-emph" >
<xsl:param name="class" />
<xsl:choose>
<xsl:when test=" $allow-foreign = 'true'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="process-rule">
<xsl:param name="id"/>
<xsl:param name="context"/>
<xsl:param name="flag"/>
<xsl:param name="properties" />
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<xsl:if test=" $generate-fired-rule = 'true'">
<svrl:fired-rule context="{$context}" >
<xsl:if test=" string( $id )">
<xsl:attribute name="id">
<xsl:value-of select=" $id " />
</xsl:attribute>
</xsl:if>
<xsl:if test=" string-length( $role ) &gt; 0">
<xsl:attribute name="role">
<xsl:value-of select=" $role " />
</xsl:attribute>
</xsl:if>
<!-- Process rich attributes. -->
<xsl:call-template name="richParms">
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<xsl:if test="$property= 'yes' or $property= 'true' ">
<!-- true/false is the new way -->
<xsl:call-template name="propertiesSplit">
<xsl:with-param name="str" select="$properties"/>
</xsl:call-template>
</xsl:if>
</svrl:fired-rule>
</xsl:if>
</xsl:template>
<xsl:template name="process-ns">
<xsl:param name="prefix"/>
<xsl:param name="uri"/>
<svrl:ns-prefix-in-attribute-values uri="{$uri}" prefix="{$prefix}" />
</xsl:template>
<xsl:template name="process-p">
<xsl:param name="icon"/>
<xsl:param name="class"/>
<xsl:param name="id"/>
<xsl:param name="lang"/>
<svrl:text>
<xsl:apply-templates mode="text"/>
</svrl:text>
</xsl:template>
<xsl:template name="process-pattern">
<xsl:param name="name"/>
<xsl:param name="id"/>
<xsl:param name="is-a"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<svrl:active-pattern >
<axsl:attribute name="document">
<axsl:value-of select="document-uri(/)" />
</axsl:attribute><!-- If XSLT1 remove this -->
<xsl:if test=" string( $id )">
<axsl:attribute name="id">
<xsl:value-of select=" $id " />
</axsl:attribute>
</xsl:if>
<xsl:if test=" string( $name )">
<axsl:attribute name="name">
<xsl:value-of select=" $name " />
</axsl:attribute>
</xsl:if>
<xsl:call-template name='richParms'>
<xsl:with-param name="fpi" select="$fpi"/>
<xsl:with-param name="icon" select="$icon"/>
<xsl:with-param name="lang" select="$lang"/>
<xsl:with-param name="see" select="$see" />
<xsl:with-param name="space" select="$space" />
</xsl:call-template>
<!-- ?? report that this screws up iso:title processing -->
<xsl:apply-templates mode="do-pattern-p"/>
<!-- ?? Seems that this apply-templates is never triggered DP -->
<axsl:apply-templates />
</svrl:active-pattern>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-message" >
<xsl:param name="pattern"/>
<xsl:param name="role"/>
</xsl:template>
<!-- Overrides skeleton -->
<xsl:template name="process-span" >
<xsl:param name="class" />
<xsl:choose>
<xsl:when test=" $allow-foreign = 'true'">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- =========================================================================== -->
<!-- processing rich parameters. -->
<xsl:template name='richParms'>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<!-- Process rich attributes. -->
<xsl:if test=" $allow-foreign = 'true'">
<xsl:if test="string($fpi)">
<axsl:attribute name="fpi">
<xsl:value-of select="$fpi "/>
</axsl:attribute>
</xsl:if>
<xsl:if test="string($icon)">
<axsl:attribute name="icon">
<xsl:value-of select="$icon"/>
</axsl:attribute>
</xsl:if>
<xsl:if test="string($see)">
<axsl:attribute name="see">
<xsl:value-of select="$see" />
</axsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="string($space)">
<axsl:attribute name="xml:space">
<xsl:value-of select="$space"/>
</axsl:attribute>
</xsl:if>
<xsl:if test="string($lang)">
<axsl:attribute name="xml:lang">
<xsl:value-of select="$lang"/>
</axsl:attribute>
</xsl:if>
</xsl:template>
<!-- processing linkable parameters. -->
<xsl:template name='linkableParms'>
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- ISO SVRL has a role attribute to match the Schematron role attribute -->
<xsl:if test=" string($role )">
<axsl:attribute name="role">
<xsl:value-of select=" $role " />
</axsl:attribute>
</xsl:if>
<!-- ISO SVRL does not have a subject attribute to match the Schematron subject attribute.
Instead, the Schematron subject attribute is folded into the location attribute -->
</xsl:template>
<!-- ===================================================== -->
<!-- Extension API: -->
<!-- This allows the transmission of extra attributes on -->
<!-- rules, asserts, reports, diagnostics. -->
<!-- ===================================================== -->
<!-- Overrides skeleton EXPERIMENTAL -->
<!-- The $contents is for static contents, the $value is for dynamic contents -->
<xsl:template name="process-property">
<xsl:param name="id"/>
<xsl:param name="name"/>
<xsl:param name="value"/>
<xsl:param name="contents"/>
<svrl:property id="{$id}" >
<xsl:if test="$name">
<xsl:attribute name="name"><xsl:value-of select="$name"/></xsl:attribute>
</xsl:if>
<xsl:if test="$value">
<xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute>
</xsl:if>
<xsl:if test="$contents">
<xsl:copy-of select="$contents"/>
</xsl:if>
</svrl:property>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,795 @@
<?xml version="1.0"?><?xar XSLT?>
<!-- Skeleton Module for the Schematron 1.6 XML Schema Language.
WARNING: Schematron 1.6 is obsolete use ISO Schematron
http://www.ascc.net/xml/schematron/
Copyright (c) 2000,2001 Rick Jelliffe and Academia Sinica Computing Center, Taiwan
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from
the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim
that you wrote the original software. If you use this software in a product,
an acknowledgment in the product documentation would be appreciated but is
not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
2008-08-06
* TT Top-level lets need to be implemented using xsl:param not xsl:variable
* TT xsl:param/@select must have XPath or not be specified
Version 2007-08-06 RJ
* update template formal parameters to run under SAXON
Version: 2003-02-20
* added <let> for upgrade to 1.6
Version: 2001-06-13
* same skeleton now supports namespace or no namespace
* parameters to handlers updated for all 1.5 attributes
* diagnostic hints supported: command-line option diagnose=yes|no
* phases supported: command-line option phase=#ALL|...
* abstract rules
* compile-time error messages
* add utility routine generate-id-from-path
Contributors: Rick Jelliffe (original), Oliver Becker (architecture),
Miloslav Nic (diagnostic, phase, options), Ludwig Svenonius (abstract)
Uche Ogbuji (misc. bug fixes), Jim Ancona (SAXON workaround),
Francis Norton (generate-id-from-path)
XSLT versions tested and working as-is:
* SAXON
* Instant Saxon
* XT n.b. key() not available, will die
* MSXML4
* Oracle
XSLT versions tested and requires small workaround from you
* Sablotron does not support import, so merge meta-stylesheets by hand
* Xalan for Java 2.0 outputs wrong namespace URI, so alter by hand or script
* Xalan for C 1.0 has problem with key, so edit by hand. Find "KEY" below
If you create your own meta-stylesheet to override this one, it is a
good idea to have both in the same directory and to run the stylesheet
from that directory, as many XSLT implementations have ideosyncratic
handling of URLs: keep it simple.
-->
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias"
xmlns:sch="http://www.ascc.net/xml/schematron"
>
<!-- Note that this namespace is not version specific.
This program implements schematron 1.6 -->
<xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
<!-- Category: top-level-element -->
<xsl:output method="xml" omit-xml-declaration="no" standalone="yes" indent="yes"/>
<xsl:param name="block"></xsl:param><!-- reserved -->
<xsl:param name="phase">
<xsl:choose>
<xsl:when test="//sch:schema/@defaultPhase">
<xsl:value-of select="//sch:schema/@defaultPhase"/>
</xsl:when>
<xsl:otherwise>#ALL</xsl:otherwise>
</xsl:choose>
</xsl:param>
<xsl:param name="hiddenKey"> key </xsl:param><!-- workaround for Xalan4J 2.0 -->
<xsl:param name="output-encoding"/>
<xsl:param name="message-newline">true</xsl:param>
<!-- SCHEMA -->
<xsl:template match="sch:schema | schema">
<axsl:stylesheet version="1.0">
<xsl:for-each select="sch:ns | ns">
<xsl:attribute name="{concat(@prefix,':dummy-for-xmlns')}" namespace="{@uri}"/>
</xsl:for-each>
<xsl:if test="count(sch:title/* | title/* )">
<xsl:message>
<xsl:text>Warning: </xsl:text>
<xsl:value-of select="name(.)"/>
<xsl:text> must not contain any child elements</xsl:text>
</xsl:message>
</xsl:if>
<xsl:if test="not($phase = '#ALL')">
<xsl:if test="not(sch:phase[@id = $phase] | phase[@id = $phase])">
<xsl:message>Phase Error: no phase with name <xsl:value-of select="$phase"
/> has been defined.</xsl:message>
</xsl:if>
</xsl:if>
<!-- These parameters may contain strings with the name and directory of the file being
validated. For convenience, if the caller only has the information in a single string,
that string could be put in fileDirParameter. The archives parameters are available
for ZIP archives.
-->
<axsl:param name="archiveDirParameter" />
<axsl:param name="archiveNameParameter" />
<axsl:param name="fileNameParameter" />
<axsl:param name="fileDirParameter" />
<xsl:call-template name="process-prolog"/>
<!-- SCHEMATRON-FULL-PATH -->
<!-- utility routine for implementations -->
<axsl:template match="*|@*" mode="schematron-get-full-path">
<axsl:apply-templates select="parent::*" mode="schematron-get-full-path"/>
<axsl:text>/</axsl:text>
<axsl:if test="count(. | ../@*) = count(../@*)">@</axsl:if>
<axsl:value-of select="name()"/>
<axsl:text>[</axsl:text>
<axsl:value-of select="1+count(preceding-sibling::*[name()=name(current())])"/>
<axsl:text>]</axsl:text>
</axsl:template>
<!-- GENERATE-ID-FROM-PATH -->
<!-- repeatable-id maker derived from Francis Norton's. -->
<!-- use this if you need generate ids in seperate passes,
because generate-id() is not guaranteed to produce the same
results each time -->
<!--
<axsl:template match="/" mode="generate-id-from-path"/>
<axsl:template match="text()" mode="generate-id-from-path">
<axsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
<axsl:value-of select="concat('.text-', 1+count(preceding-sibling::text()), '-')"/>
</axsl:template>
<axsl:template match="comment()" mode="generate-id-from-path">
<axsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
<axsl:value-of select="concat('.comment-', 1+count(preceding-sibling::comment()), '-')"/>
</axsl:template>
<axsl:template match="processing-instruction()" mode="generate-id-from-path">
<axsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
<axsl:value-of
select="concat('.processing-instruction-', 1+count(preceding-sibling::processing-instruction()), '-')"/>
</axsl:template>
<axsl:template match="@*" mode="generate-id-from-path">
<axsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
<axsl:value-of select="concat('.@', name())"/>
</axsl:template>
<axsl:template match="*" mode="generate-id-from-path" priority="-0.5">
<axsl:apply-templates select="parent::*" mode="generate-id-from-path"/>
<axsl:text>.</axsl:text>
<axsl:choose>
<axsl:when test="count(. | ../namespace::*) = count(../namespace::*)">
<axsl:value-of select="concat('.namespace::-',1+count(namespace::*),'-')"/>
</axsl:when>
<axsl:otherwise>
<axsl:value-of
select="concat('.',name(),'-',1+count(preceding-sibling::*[name()=name(current())]),'-')"/>
</axsl:otherwise>
</axsl:choose>
</axsl:template>
-->
<xsl:apply-templates mode="do-keys"
select="sch:pattern/sch:rule/sch:key | pattern/rule/key "/>
<axsl:template match="/">
<xsl:call-template name="process-root">
<xsl:with-param name="fpi" select="@fpi"/>
<xsl:with-param xmlns:sch="http://www.ascc.net/xml/schematron"
name="title" select="./sch:title | title"/>
<xsl:with-param name="id" select="@id"/>
<xsl:with-param name="icon" select="@icon"/>
<xsl:with-param name="lang" select="@xml:lang"/>
<xsl:with-param name="version" select="@version" />
<xsl:with-param name="schemaVersion" select="@schemaVersion" />
<xsl:with-param name="contents">
<xsl:apply-templates mode="do-all-patterns"/>
</xsl:with-param>
</xsl:call-template>
</axsl:template>
<xsl:apply-templates/>
<axsl:template match="text()" priority="-1">
<!-- strip characters -->
</axsl:template>
</axsl:stylesheet>
</xsl:template>
<!-- ACTIVE -->
<xsl:template match="sch:active | active">
<xsl:if test="not(@pattern)">
<xsl:message>Markup Error: no pattern attribute in &lt;active></xsl:message>
</xsl:if>
<!-- <xsl:if test="//sch:rule[@id = current()/@pattern]"> -->
<xsl:if test="not(//sch:pattern[@id = current()/@pattern])">
<xsl:message>Reference Error: the pattern "<xsl:value-of select="@pattern"
/>" has been activated but is not declared</xsl:message>
</xsl:if>
</xsl:template>
<!-- ASSERT and REPORT -->
<xsl:template match="sch:assert | assert">
<xsl:if test="not(@test)">
<xsl:message>Markup Error: no test attribute in &lt;assert></xsl:message>
</xsl:if>
<axsl:choose>
<axsl:when test="{@test}"/>
<axsl:otherwise>
<xsl:call-template name="process-assert">
<xsl:with-param name="role" select="@role"/>
<xsl:with-param name="id" select="@id"/>
<xsl:with-param name="test" select="normalize-space(@test)" />
<xsl:with-param name="icon" select="@icon"/>
<xsl:with-param name="subject" select="@subject"/>
<xsl:with-param name="diagnostics" select="@diagnostics"/>
</xsl:call-template>
</axsl:otherwise>
</axsl:choose>
</xsl:template>
<xsl:template match="sch:report | report">
<xsl:if test="not(@test)">
<xsl:message>Markup Error: no test attribute in &lt;report></xsl:message>
</xsl:if>
<axsl:if test="{@test}">
<xsl:call-template name="process-report">
<xsl:with-param name="role" select="@role"/>
<xsl:with-param name="test" select="normalize-space(@test)" />
<xsl:with-param name="icon" select="@icon"/>
<xsl:with-param name="id" select="@id"/>
<xsl:with-param name="subject" select="@subject"/>
<xsl:with-param name="diagnostics" select="@diagnostics"/>
</xsl:call-template>
</axsl:if>
</xsl:template>
<!-- DIAGNOSTIC -->
<xsl:template match="sch:diagnostic | diagnostic"
><xsl:if test="not(@id)"
><xsl:message>Markup Error: no id attribute in &lt;diagnostic></xsl:message
></xsl:if><xsl:call-template name="process-diagnostic">
<xsl:with-param name="id" select="@id" />
</xsl:call-template>
</xsl:template>
<!-- DIAGNOSTICS -->
<xsl:template match="sch:diagnostics | diagnostics"/>
<!-- DIR -->
<xsl:template match="sch:dir | dir" mode="text"
><xsl:call-template name="process-dir">
<xsl:with-param name="value" select="@value"/>
</xsl:call-template>
</xsl:template>
<!-- EMPH -->
<xsl:template match="sch:emph | emph" mode="text"
><xsl:call-template name="process-emph"/>
</xsl:template>
<!-- EXTENDS -->
<xsl:template match="sch:extends | extends">
<xsl:if test="not(@rule)"
><xsl:message>Markup Error: no rule attribute in &lt;extends></xsl:message
></xsl:if>
<xsl:if test="not(//sch:rule[@abstract='true'][@id= current()/@rule] )
and not(//rule[@abstract='true'][@id= current()/@rule])">
<xsl:message>Reference Error: the abstract rule "<xsl:value-of select="@rule"
/>" has been referenced but is not declared</xsl:message>
</xsl:if>
<xsl:call-template name="IamEmpty" />
<xsl:if test="//sch:rule[@id=current()/@rule]">
<xsl:apply-templates select="//sch:rule[@id=current()/@rule]"
mode="extends"/>
</xsl:if>
</xsl:template>
<!-- KEY -->
<!-- do we need something to test uniqueness too? -->
<!-- NOTE: if you get complaint about "key" here (e.g. Xalan4C 1.0) replace
"key" with "$hiddenKey" -->
<xsl:template match="sch:key | key" mode="do-keys" >
<xsl:if test="not(@name)">
<xsl:message>Markup Error: no name attribute in &lt;key></xsl:message>
</xsl:if>
<xsl:if test="not(@path)">
<xsl:message>Markup Error: no path attribute in &lt;key></xsl:message>
</xsl:if>
<xsl:call-template name="IamEmpty" />
<axsl:key match="{../@context}" name="{@name}" use="{@path}"/>
</xsl:template>
<xsl:template match="sch:key | key" /><!-- swallow -->
<!-- LET -->
<xsl:template match="sch:let | let" >
<xsl:choose>
<xsl:when test="parent::sch:schema or parent::schema ">
<!-- it is an error to have an empty param/@select because an XPath is expected -->
<axsl:param name="{@name}" >
<xsl:if test="string-length(@value) &gt; 0">
<xsl:attribute name="select"><xsl:value-of select="@value"/></xsl:attribute>
</xsl:if>
</axsl:param>
</xsl:when>
<xsl:otherwise>
<axsl:variable name="{@name}" select="{@value}"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- NAME -->
<xsl:template match="sch:name | name" mode="text">
<axsl:text xml:space="preserve"> </axsl:text>
<xsl:if test="@path"
><xsl:call-template name="process-name">
<xsl:with-param name="name" select="concat('name(',@path,')')"/>
<!-- SAXON needs that instead of select="'name({@path})'" -->
</xsl:call-template>
</xsl:if>
<xsl:if test="not(@path)"
><xsl:call-template name="process-name">
<xsl:with-param name="name" select="'name(.)'"/>
</xsl:call-template>
</xsl:if>
<xsl:call-template name="IamEmpty" />
<axsl:text xml:space="preserve"> </axsl:text>
</xsl:template>
<!-- NS -->
<xsl:template match="sch:ns | ns" mode="do-all-patterns" >
<xsl:if test="not(@uri)">
<xsl:message>Markup Error: no uri attribute in &lt;ns></xsl:message>
</xsl:if>
<xsl:if test="not(@prefix)">
<xsl:message>Markup Error: no prefix attribute in &lt;ns></xsl:message>
</xsl:if>
<xsl:call-template name="IamEmpty" />
<xsl:call-template name="process-ns" >
<xsl:with-param name="prefix" select="@prefix"/>
<xsl:with-param name="uri" select="@uri"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="sch:ns | ns" /><!-- swallow -->
<!-- P -->
<xsl:template match="sch:schema/sch:p | schema/p" mode="do-schema-p" >
<xsl:call-template name="process-p">
<xsl:with-param name="class" select="@class"/>
<xsl:with-param name="icon" select="@icon"/>
<xsl:with-param name="id" select="@id"/>
<xsl:with-param name="lang" select="@xml:lang"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="sch:pattern/sch:p | pattern/p" mode="do-pattern-p" >
<xsl:call-template name="process-p">
<xsl:with-param name="class" select="@class"/>
<xsl:with-param name="icon" select="@icon"/>
<xsl:with-param name="id" select="@id"/>
<xsl:with-param name="lang" select="@xml:lang"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="sch:phase/sch:p" /><!-- We don't use these -->
<xsl:template match="sch:p | p" />
<!-- PATTERN -->
<xsl:template match="sch:pattern | pattern" mode="do-all-patterns">
<xsl:if test="($phase = '#ALL')
or (../sch:phase[@id= ($phase)]/sch:active[@pattern= current()/@id])
or (../phase[@id= ($phase)]/active[@id= current()/@id])">
<xsl:call-template name="process-pattern">
<xsl:with-param name="name" select="@name"/>
<xsl:with-param name="id" select="@id"/>
<xsl:with-param name="see" select="@see"/>
<xsl:with-param name="fpi" select="@fpi"/>
<xsl:with-param name="icon" select="@icon"/>
</xsl:call-template>
<axsl:apply-templates select="/" mode="M{count(preceding-sibling::*)}"/>
</xsl:if>
</xsl:template>
<xsl:template match="sch:pattern | pattern">
<xsl:if test="($phase = '#ALL')
or (../sch:phase[@id= ($phase)]/sch:active[@pattern= current()/@id])
or (../phase[@id= ($phase)]/active[@id= current()/@id])">
<xsl:apply-templates/>
<axsl:template match="text()" priority="-1" mode="M{count(preceding-sibling::*)}">
<!-- strip characters -->
</axsl:template>
</xsl:if>
</xsl:template>
<!-- PHASE -->
<xsl:template match="sch:phase | phase" >
<xsl:if test="not(@id)">
<xsl:message>Markup Error: no id attribute in &lt;phase></xsl:message>
</xsl:if>
<xsl:apply-templates/>
</xsl:template>
<!-- RULE -->
<xsl:template match="sch:rule[not(@abstract='true')] | rule[not(@abstract='true')]">
<xsl:if test="not(@context)">
<xsl:message>Markup Error: no context attribute in &lt;rule></xsl:message>
</xsl:if>
<axsl:template match="{@context}"
priority="{4000 - count(preceding-sibling::*)}" mode="M{count(../preceding-sibling::*)}">
<xsl:call-template name="process-rule">
<xsl:with-param name="id" select="@id"/>
<xsl:with-param name="context" select="@context"/>
<xsl:with-param name="role" select="@role"/>
</xsl:call-template>
<xsl:apply-templates/>
<axsl:apply-templates mode="M{count(../preceding-sibling::*)}"/>
</axsl:template>
</xsl:template>
<!-- ABSTRACT RULE -->
<xsl:template match="sch:rule[@abstract='true'] | rule[@abstract='true']" >
<xsl:if test=" not(@id)">
<xsl:message>Markup Error: no id attribute on abstract &lt;rule></xsl:message>
</xsl:if>
<xsl:if test="@context">
<xsl:message>Markup Error: (2) context attribute on abstract &lt;rule></xsl:message>
</xsl:if>
</xsl:template>
<xsl:template match="sch:rule[@abstract='true'] | rule[@abstract='true']"
mode="extends" >
<xsl:if test="@context">
<xsl:message>Markup Error: context attribute on abstract &lt;rule></xsl:message>
</xsl:if>
<xsl:apply-templates/>
</xsl:template>
<!-- SPAN -->
<xsl:template match="sch:span | span" mode="text">
<xsl:call-template name="process-span"
><xsl:with-param name="class" select="@class"/>
</xsl:call-template>
</xsl:template>
<!-- TITLE -->
<!-- swallow -->
<xsl:template match="sch:title | title" />
<!-- VALUE-OF -->
<xsl:template match="sch:value-of | value-of" mode="text" >
<xsl:if test="not(@select)">
<xsl:message>Markup Error: no select attribute in &lt;value-of></xsl:message>
</xsl:if>
<xsl:call-template name="IamEmpty" />
<axsl:text xml:space="preserve"> </axsl:text>
<xsl:choose>
<xsl:when test="@select"
><xsl:call-template name="process-value-of">
<xsl:with-param name="select" select="@select"/>
<!-- will saxon have problem with this too?? -->
</xsl:call-template>
</xsl:when>
<xsl:otherwise >
<xsl:call-template name="process-value-of"
><xsl:with-param name="select" select="'.'"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<axsl:text xml:space="preserve"> </axsl:text>
</xsl:template>
<!-- ============================================================== -->
<!-- Text -->
<xsl:template match="text()" priority="-1" mode="do-keys">
<!-- strip characters -->
</xsl:template>
<xsl:template match="text()" priority="-1" mode="do-all-patterns">
<!-- strip characters -->
</xsl:template>
<xsl:template match="text()" priority="-1" mode="do-schema-p">
<!-- strip characters -->
</xsl:template>
<xsl:template match="text()" priority="-1" mode="do-pattern-p">
<!-- strip characters -->
</xsl:template>
<xsl:template match="text()" priority="-1">
<!-- strip characters -->
</xsl:template>
<xsl:template match="text()" mode="text">
<xsl:value-of select="normalize-space(.)"/>
</xsl:template>
<xsl:template match="text()" mode="inline-text">
<xsl:value-of select="."/>
</xsl:template>
<!-- ============================================================== -->
<!-- utility templates -->
<xsl:template name="IamEmpty">
<xsl:if test="count( * )">
<xsl:message>
<xsl:text>Warning: </xsl:text>
<xsl:value-of select="name(.)"/>
<xsl:text> must not contain any child elements</xsl:text>
</xsl:message>
</xsl:if>
</xsl:template>
<xsl:template name="diagnosticsSplit">
<!-- Process at the current point the first of the <diagnostic> elements
referred to parameter str, and then recurse -->
<xsl:param name="str"/>
<xsl:variable name="start">
<xsl:choose>
<xsl:when test="contains($str,' ')">
<xsl:value-of select="substring-before($str,' ')"/>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$str"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="end">
<xsl:if test="contains($str,' ')">
<xsl:value-of select="substring-after($str,' ')"/>
</xsl:if>
</xsl:variable>
<xsl:if test="not(string-length(normalize-space($start)) = 0)
and not(//sch:diagnostic[@id = ($start)]) and not(//diagnostic[@id = ($start)])">
<xsl:message>Reference error: A diagnostic "<xsl:value-of select="string($start)"
/>" has been referenced but is not declared</xsl:message>
</xsl:if>
<xsl:if test="string-length(normalize-space($start)) > 0">
<xsl:apply-templates
select="//sch:diagnostic[@id = ($start) ] | //diagnostic[@id= ($start) ]"/>
</xsl:if>
<xsl:if test="not($end='')">
<xsl:call-template name="diagnosticsSplit">
<xsl:with-param name="str" select="$end"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- ============================================================== -->
<xsl:template match="*">
<xsl:message>
<xsl:text>Warning: unrecognized element </xsl:text>
<xsl:value-of select="name(.)"/>
</xsl:message>
</xsl:template>
<xsl:template match="*" mode="text">
<xsl:message>
<xsl:text>Warning: unrecognized element </xsl:text>
<xsl:value-of select="name(.)"/>
</xsl:message>
</xsl:template>
<!-- ============================================================== -->
<!-- DEFAULT NAMED TEMPLATES -->
<!-- These are the actions that are performed unless overridden -->
<!-- ============================================================== -->
<xsl:template name="process-prolog"/>
<!-- no params -->
<xsl:template name="process-root">
<xsl:param name="contents"/>
<xsl:param name="id" />
<xsl:param name="version" />
<xsl:param name="schemaVersion" />
<xsl:param name="queryBinding" />
<xsl:param name="title" />
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<xsl:copy-of select="$contents"/>
</xsl:template>
<xsl:template name="process-assert">
<xsl:param name="test"/>
<xsl:param name="diagnostics" />
<xsl:param name="id" />
<xsl:param name="flag" />
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<xsl:call-template name="process-message">
<xsl:with-param name="pattern" select="$test"/>
<xsl:with-param name="role" select="$role"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="process-report">
<xsl:param name="test"/>
<xsl:param name="diagnostics" />
<xsl:param name="id" />
<xsl:param name="flag" />
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<xsl:call-template name="process-message">
<xsl:with-param name="pattern" select="$test"/>
<xsl:with-param name="role" select="$role"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="process-diagnostic">
<xsl:param name="id" />
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="text"/>
<axsl:text> </axsl:text>
</xsl:template>
<xsl:template name="process-dir">
<xsl:param name="value" />
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:template>
<xsl:template name="process-emph">
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:template>
<xsl:template name="process-name">
<xsl:param name="name"/>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<axsl:value-of select="{$name}"/>
<axsl:text> </axsl:text>
</xsl:template>
<xsl:template name="process-ns" >
<!-- Note that process-ns is for reporting. The sch:ns elements are
independently used in the sch:schema template to provide namespace bindings -->
<xsl:param name="prefix"/>
<xsl:param name="uri" />
</xsl:template>
<xsl:template name="process-p">
<xsl:param name="id" />
<xsl:param name="class" />
<xsl:param name="icon" />
<xsl:param name="lang" />
</xsl:template>
<xsl:template name="process-pattern">
<xsl:param name="id" />
<xsl:param name="name" />
<xsl:param name="is-a" />
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
</xsl:template>
<xsl:template name="process-rule">
<xsl:param name="context" />
<xsl:param name="id" />
<xsl:param name="flag" />
<!-- "Linkable" parameters -->
<xsl:param name="role"/>
<xsl:param name="subject"/>
<!-- "Rich" parameters -->
<xsl:param name="fpi" />
<xsl:param name="icon" />
<xsl:param name="lang" />
<xsl:param name="see" />
<xsl:param name="space" />
</xsl:template>
<xsl:template name="process-span" >
<xsl:param name="class" />
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<xsl:apply-templates mode="inline-text"/>
<axsl:text> </axsl:text>
</xsl:template>
<xsl:template name="process-title" >
<xsl:param name="class" />
<xsl:call-template name="process-p">
<xsl:with-param name="class">title</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="process-schema-title" >
<xsl:param name="class" />
<xsl:call-template name="process-title">
<xsl:with-param name="class">schema-title</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="process-value-of">
<xsl:param name="select"/>
<!-- We generate too much whitespace rather than risking concatenation -->
<axsl:text> </axsl:text>
<axsl:value-of select="{$select}"/>
<axsl:text> </axsl:text>
</xsl:template>
<!-- default output action: the simplest customization is to just override this -->
<xsl:template name="process-message">
<xsl:param name="pattern" />
<xsl:param name="role" />
<xsl:apply-templates mode="text"/>
<xsl:if test=" $message-newline = 'true'" >
<axsl:value-of select="string('&#10;')"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,823 @@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:src="http://purl.oclc.org/dsdl/9573-11amd1/ns/structure/1.0"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:import href="stdex_front.xsl" />
<xsl:import href="stdex_toc.xsl" />
<xsl:import href="stdex_back.xsl" />
<xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.0//EN" encoding="UTF-8" />
<!-- XSLT stylesheet for ISO/IEC stdex.rnc -->
<!-- version.0.51 -->
<xsl:template match="/">
<!-- contents: { document } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="/src:document">
<!-- contents: { head, body } -->
<html>
<head>
<title>ISO/IEC IT --- Ver.0.50 ---</title>
</head>
<link rel="stylesheet" href="stdex.css" type="text/css" />
<body>
<xsl:call-template name="frontm" />
<hr />
<xsl:call-template name="toc" />
<hr />
<xsl:apply-templates />
<xsl:call-template name="backm" />
</body>
</html>
</xsl:template>
<xsl:template match="src:head">
<!-- contents: { organization & ... } -->
</xsl:template>
<xsl:template match="src:foreword">
<!-- contents: { block*, part-list? } -->
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Foreword</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Avant-propos</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc">foreword</xsl:with-param>
<xsl:with-param name="text" select="$text"/>
</xsl:call-template>
</h1>
<xsl:apply-templates />
<hr />
</xsl:template>
<xsl:template match="src:part-list">
<!-- contents: { part+ } -->
<ul>
<xsl:apply-templates />
</ul>
</xsl:template>
<xsl:template match="src:part">
<!-- contents: { number, title } -->
<li>
<span class="italic">
<xsl:text>-&#160;Part&#160;</xsl:text>
<xsl:apply-templates select="src:number"/>
<xsl:text>:&#160;</xsl:text>
<xsl:apply-templates select="src:title"/>
</span>
</li>
</xsl:template>
<xsl:template match="src:part/src:number">
<!-- contents: { positive-integer } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:part/src:title">
<!-- contents: { text } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:introduction">
<!-- contents: { block } -->
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc">introduction</xsl:with-param>
<xsl:with-param name="text">Introduction</xsl:with-param>
</xsl:call-template>
</h1>
<xsl:apply-templates />
<hr />
</xsl:template>
<xsl:template name="anchor-text">
<xsl:param name="anc" />
<xsl:param name="text" />
<span id="{$anc}">
<xsl:value-of select="$text" />
</span>
</xsl:template>
<xsl:template match="src:warning">
<!-- contents: { attlist.warning, p* } -->
<xsl:text>WARNING-</xsl:text>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:scope">
<!-- contents: { block } -->
<xsl:variable name="nth">
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" />
</xsl:variable>
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Scope</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Domaine d'application</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="concat($nth, ' ', $text)" />
</xsl:call-template>
</h1>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:conf">
<!-- contents: { titled-clause } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:normative-references">
<!-- contents: { block*, referenced-document+ } -->
<xsl:variable name="nth">
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" />
</xsl:variable>
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Normative references</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>R&#233;f&#233;rences normatives</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="concat($nth, ' ', $text)" />
</xsl:call-template>
</h1>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:referenced-document">
<!-- contents: { id, abbrev, title, field*, url } -->
<dl>
<dd>
<xsl:apply-templates />
</dd>
</dl>
</xsl:template>
<xsl:template match="src:abbrev">
<xsl:apply-templates />
<xsl:text>, </xsl:text>
</xsl:template>
<xsl:template match="src:referenced-document/src:title">
<span class="italic">
<xsl:apply-templates />
</span>
</xsl:template>
<xsl:template match="src:terms-and-definitions">
<!-- contents: { terms-and-definitions-content } -->
<xsl:variable name="nth">
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" />
</xsl:variable>
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Terms and definitions</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Termes, d&#233;finitions et symboles</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="concat($nth, ' ', $text)" />
</xsl:call-template>
</h1>
<dl>
<xsl:apply-templates />
</dl>
</xsl:template>
<xsl:template match="src:term-and-definition">
<!-- contents: { term, term*, definition, (example, note, warning)* } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:term-and-definition/src:term">
<!-- contents: { text } -->
<dt>
<xsl:apply-templates />
</dt>
</xsl:template>
<xsl:template match="src:term-and-definition/src:definition">
<!-- contents: { inline } -->
<dd>
<xsl:apply-templates />
</dd>
</xsl:template>
<xsl:template match="src:clause">
<!-- contents: { id, title, clause-content } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:clause/src:title">
<!-- contents: { text | code } -->
<xsl:variable name="level" select="count(ancestor::src:clause|ancestor::src:annex)" />
<xsl:variable name="nth">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:annex//src:clause" format="A.1" />
</xsl:when>
<xsl:otherwise>
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" format="1.1" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="h{$level}">
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="concat($nth, ' ', .)" />
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template match="src:annex">
<!-- contents: { id, @normative, title, clause-content } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:annex/src:title">
<!-- contents: { text | code } -->
<xsl:variable name="nth">
<xsl:number level="multiple" count="src:annex" format="A" />
</xsl:variable>
<h1 class="annex">
<xsl:text>Annex </xsl:text>
<xsl:value-of select="$nth" />
<br />
<xsl:choose>
<xsl:when test="../@normative = 'true'">
<xsl:text>(normative)</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>(informative)</xsl:text>
</xsl:otherwise>
</xsl:choose>
<br />
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc" select="$nth" />
<xsl:with-param name="text" select="." />
</xsl:call-template>
</h1>
</xsl:template>
<xsl:template match="src:bibliography">
<!-- contents: { referenced-document+ } -->
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Bibliography</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Bibliographie</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc">bibliography</xsl:with-param>
<xsl:with-param name="text" select="$text"/>
</xsl:call-template>
</h1>
<ol>
<xsl:apply-templates />
</ol>
</xsl:template>
<xsl:template match="src:bibliography/src:referenced-document">
<li>
<xsl:number format="[1] " />
<xsl:apply-templates />
</li>
</xsl:template>
<xsl:template match="src:index">
<!-- contents: { attlist.index, text } -->
<h1>
<xsl:call-template name="anchor-text">
<xsl:with-param name="anc">index</xsl:with-param>
<xsl:with-param name="text">Index</xsl:with-param>
</xsl:call-template>
</h1>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:p">
<!-- contents: { inline } -->
<p>
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="src:li/src:p[not(preceding-sibling::*)]">
<!-- contents: { inline } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:ol">
<!-- contents: { li } -->
<ul style="list-style-type: none;">
<xsl:apply-templates />
</ul>
</xsl:template>
<xsl:template match="src:ol/src:li">
<!-- contents: { id, block+ } -->
<xsl:variable name="level" select="count(ancestor::src:ol) mod 3" />
<xsl:variable name="format">
<xsl:choose>
<xsl:when test="$level=1">
<xsl:text>a) </xsl:text>
</xsl:when>
<xsl:when test="$level=2">
<xsl:text>1) </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>i) </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<li>
<xsl:number format="{$format}" />
<xsl:apply-templates />
</li>
</xsl:template>
<xsl:template match="src:ul">
<!-- contents: { li } -->
<ul>
<xsl:apply-templates />
</ul>
</xsl:template>
<xsl:template match="src:ul/src:li">
<!-- contents: { block+ } -->
<xsl:variable name="level" select="count(ancestor::src:ul)" />
<xsl:choose>
<xsl:when test="$level=2">
<li>&#183; <xsl:apply-templates /></li>
</xsl:when>
<xsl:otherwise>
<li>- <xsl:apply-templates /></li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="src:notation-list">
<!-- contents: { notation-item+ } -->
<dl compact="1">
<xsl:apply-templates />
</dl>
</xsl:template>
<xsl:template match="src:notation-item">
<!-- contents: { notation, notation-definition } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:notation">
<!-- contents: { inline } -->
<dt>
<xsl:apply-templates />
</dt>
</xsl:template>
<xsl:template match="src:notation-definition">
<!-- contents: { p, (p | note)* } -->
<dd>
<xsl:apply-templates />
</dd>
</xsl:template>
<xsl:template match="src:example">
<!-- contents: { p+ } -->
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>EXAMPLE</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>EXEMPLE</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<p>
<xsl:value-of select="$text" />
<xsl:text> </xsl:text>
<xsl:if test="count(../src:xmp) &gt; 1">
<xsl:number level="single" count="src:xmp" format="1 " />
</xsl:if>
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="src:note">
<!-- contents: { p+ } -->
<p class="note">
<xsl:text>NOTE&#160;&#160;</xsl:text>
<xsl:if test="count(../src:note) &gt; 1">
<xsl:number level="single" count="src:note" format="1 " />
</xsl:if>
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="src:code">
<!-- contents: { text } -->
<code>
<xsl:apply-templates />
</code>
</xsl:template>
<xsl:template match="src:b">
<!-- contents: { text } -->
<b>
<xsl:apply-templates />
</b>
</xsl:template>
<xsl:template match="src:i">
<!-- contents: { text } -->
<span class="italic">
<xsl:apply-templates />
</span>
</xsl:template>
<xsl:template match="src:u">
<!-- contents: { text } -->
<u>
<xsl:apply-templates />
</u>
</xsl:template>
<xsl:template match="src:sup">
<!-- contents: { text } -->
<sup>
<xsl:apply-templates />
</sup>
</xsl:template>
<xsl:template match="src:sub">
<!-- contents: { text } -->
<sub>
<xsl:apply-templates />
</sub>
</xsl:template>
<xsl:template match="src:var">
<!-- contents: { text } -->
<var>
<xsl:apply-templates />
</var>
</xsl:template>
<xsl:template match="src:This | src:this">
<!-- contents: { empty } -->
<!-- F: la pr&#233;sente Norme internationale -->
<xsl:choose>
<xsl:when test="/src:document/src:head/src:part-number">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:value-of select="local-name()"/>
<xsl:text> part of </xsl:text>
</xsl:when>
</xsl:choose>
<xsl:value-of select="/src:document/src:head/src:organization"/>
<xsl:text> </xsl:text>
<xsl:value-of select="/src:document/src:head/src:document-number"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:value-of select="local-name()"/>
<xsl:value-of select="/src:document/src:head/src:document-type"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="local-name()='This'">
<xsl:text>La</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>la</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text> pr&#233;sente </xsl:text>
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-type='International Standard'">
<xsl:text>Norme internationale</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="src:Xref | src:xref">
<xsl:variable name="to" select="@to" />
<xsl:for-each select="//src:*[@id=$to]">
<xsl:call-template name="xref-one" />
</xsl:for-each>
</xsl:template>
<xsl:template name="xref-one">
<xsl:choose>
<xsl:when test="self::src:figure">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:figure" format="A.1 " />
</xsl:when>
<xsl:otherwise>
<xsl:number level="any" count="src:figure" />
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="self::src:table">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:table" format="A.1 " />
</xsl:when>
<xsl:otherwise>
<xsl:number level="any" count="src:table" />
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="self::src:li">
<xsl:variable name="level" select="count(ancestor::src:ol) mod 3" />
<xsl:variable name="format">
<xsl:choose>
<xsl:when test="$level=1">
<xsl:text>a) </xsl:text>
</xsl:when>
<xsl:when test="$level=2">
<xsl:text>1) </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>i) </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:number format="{$format}" />
</xsl:when>
<xsl:when test="ancestor::src:clause">
<xsl:number level="multiple" count="src:scope|src:conf|src:normative-references|src:terms-and-definitions|src:clause" format="1.1 " />
</xsl:when>
<xsl:when test="self::src:referenced-document">
<xsl:value-of select="src:abbrev" />
</xsl:when>
<xsl:otherwise>
<xsl:number level="multiple" count="src:annex" format="A.1 " />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="src:firstterm">
<!-- contents: { text } -->
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:strong">
<!-- contents: { text } -->
<strong>
<xsl:apply-templates />
</strong>
</xsl:template>
<xsl:template match="src:artwork">
<!-- contents: { attlist.artwork } -->
<img src="{@entity}.jpg" />
</xsl:template>
<xsl:template match="src:footnote">
<!-- contents: { id, (text | p)+ } -->
<xsl:element name="a">
<xsl:attribute name="onClick">
<xsl:text>alert('</xsl:text>
<xsl:call-template name="fn-mark" />
<xsl:apply-templates />
<xsl:text>')</xsl:text>
</xsl:attribute>
<sup>
<xsl:call-template name="fn-mark" />
</sup>
</xsl:element>
</xsl:template>
<xsl:template name="fn-mark">
<xsl:choose>
<xsl:when test="ancestor::src:figure">
<xsl:number level="single" count="src:fn" format="a) " />
</xsl:when>
<xsl:when test="ancestor::src:table">
<xsl:number level="single" count="src:fn" format="a) " />
</xsl:when>
<xsl:otherwise>
<xsl:number value="count(preceding::src:fn)-count(preceding::src:fn[ancestor::src:figure or
ancestor::src:table])+1" format="1) " />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="src:table">
<!-- contents: { @pgwide, title?, block+ } -->
<div align="center">
<xsl:apply-templates />
<br />
</div>
</xsl:template>
<xsl:template match="src:table/src:title">
<xsl:variable name="ref">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:table" format="A.1 " />
</xsl:when>
<xsl:otherwise>
<xsl:number level="any" count="src:table" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="/src:document/src:head/src:document-language='E'">
<xsl:text>Table</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Tableau</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- caption -->
<b>
<span id="tab{$ref}">
<xsl:value-of select="concat($text, ' ', $ref)" /> &#8211; <xsl:value-of select="." />
</span>
</b>
<!-- /caption -->
</xsl:template>
<xsl:template match="src:figure">
<!-- contents: { @pgwide, title?, block+ } -->
<div align="center">
<xsl:apply-templates select="*[not(self::src:title)]"/>
<xsl:apply-templates select="src:title"/>
</div>
</xsl:template>
<xsl:template match="src:figure/src:title">
<xsl:variable name="ref">
<xsl:choose>
<xsl:when test="ancestor::src:annex">
<xsl:number level="multiple" count="src:annex|src:figure" format="A.1 " />
</xsl:when>
<xsl:otherwise>
<xsl:number level="any" count="src:figure" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<div align="center">
<b>
<span id="fig{$ref}">
<xsl:text>Figure </xsl:text>
<xsl:value-of select="$ref" /> &#8211; <xsl:value-of select="." />
</span>
</b>
</div>
</xsl:template>
<xsl:template match="src:tabular">
<table>
<xsl:choose>
<xsl:when test="@frame=&quot;none&quot;" />
<xsl:otherwise>
<xsl:attribute name="border" />
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates />
</table>
</xsl:template>
<xsl:template match="src:tgroup">
<xsl:apply-templates select="src:colspec" />
<xsl:apply-templates select="src:thead" />
<xsl:apply-templates select="src:tbody" />
<xsl:apply-templates select="src:tfoot" />
<tr>
<td colspan="100">
<xsl:apply-templates select=".//src:note" />
</td>
</tr>
</xsl:template>
<xsl:template match="src:colspec" />
<xsl:template match="src:thead">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:tbody">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:tfoot">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="src:row">
<tr>
<xsl:choose>
<xsl:when test="parent::src:thead or parent::src:tfoot">
<xsl:attribute name="bgcolor">#d0d0d0</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="@valign">
<xsl:attribute name="valign">
<xsl:value-of select="@valign" />
</xsl:attribute>
</xsl:when>
<xsl:when test="parent::src:*[@valign]">
<xsl:attribute name="valign">
<xsl:value-of select="parent::src:*[@valign]/@valign" />
</xsl:attribute>
</xsl:when>
<xsl:when test="parent::src:thead">
<xsl:attribute name="valign">bottom</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="valign">top</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="@align">
<xsl:attribute name="align">
<xsl:value-of select="@align" />
</xsl:attribute>
</xsl:when>
<xsl:when test="ancestor::src:*[@align]">
<xsl:attribute name="align">
<xsl:value-of select="ancestor::src:*[@align]/@align" />
</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:apply-templates />
</tr>
</xsl:template>
<xsl:template match="src:entry">
<xsl:choose>
<xsl:when test="ancestor::src:thead">
<xsl:call-template name="ent">
<xsl:with-param name="tag">th</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="ent">
<xsl:with-param name="tag">td</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="ent">
<xsl:param name="tag" />
<xsl:element name="{$tag}">
<xsl:if test="@valign">
<xsl:attribute name="valign">
<xsl:value-of select="@valign" />
</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="@align">
<xsl:attribute name="align">
<xsl:value-of select="@align" />
</xsl:attribute>
</xsl:when>
<xsl:when test="ancestor::src:*[@align]">
<xsl:attribute name="align">
<xsl:value-of select="ancestor::src:*[@align]/@align" />
</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:if test="@morerows">
<xsl:attribute name="rowspan">
<xsl:value-of select="@morerows + 1" />
</xsl:attribute>
</xsl:if>
<xsl:if test="@namest and @nameend">
<xsl:call-template name="colspan">
<xsl:with-param name="namest" select="@namest" />
<xsl:with-param name="nameend" select="@nameend" />
</xsl:call-template>
</xsl:if>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template name="colspan">
<xsl:param name="namest" />
<xsl:param name="nameend" />
<xsl:call-template name="colspan-sub">
<xsl:with-param name="numst">
<xsl:choose>
<xsl:when test="parent::src:row/preceding-sibling::src:colspec[@colname=$namest]">
<xsl:value-of
select="count(parent::src:row/preceding-sibling::src:colspec[@colname=$namest]/preceding-sibling::src:colspec)"
/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="count(ancestor::src:tgroup/child::src:colspec[@colname=$namest]/preceding-sibling::src:colspec)"
/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="numend">
<xsl:choose>
<xsl:when test="parent::src:row/preceding-sibling::src:colspec[@colname=$nameend]">
<xsl:value-of
select="count(parent::src:row/preceding-sibling::src:colspec[@colname=$nameend]/preceding-sibling::src:colspec)"
/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="count(ancestor::src:tgroup/child::src:colspec[@colname=$nameend]/preceding-sibling::src:colspec)"
/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="colspan-sub">
<xsl:param name="numst" />
<xsl:param name="numend" />
<xsl:attribute name="colspan">
<xsl:value-of select="$numend - $numst + 1" />
</xsl:attribute>
</xsl:template>
<xsl:template match="text()">
<xsl:if test="normalize-space(.)!=' '">
<xsl:value-of select="." />
</xsl:if>
</xsl:template>
</xsl:stylesheet>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsdCalendarConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="main/calendar.xsd">
<calendar country="ABW" exchange="exchange0" uniqueID="ID000" referenceID="ID000">
<dependsOn>ID000</dependsOn>
<library>DEFAULT</library>
<composite>
<union>
<calendar country="ABW" exchange="exchange1" uniqueID="ID001" referenceID="ID000">
<dependsOn>ID000</dependsOn>
<library>DEFAULT</library>
<modified>
<calendar country="ABW" exchange="exchange2" uniqueID="ID002" referenceID="ID000">
<dateList>
<bound>
</bound>
<holiday>2006-05-04</holiday>
<holiday>2006-05-04</holiday>
</dateList>
</calendar>
</modified>
</calendar>
<calendar country="ABW" exchange="exchange3" uniqueID="ID003" referenceID="ID002">
<dependsOn>ID003</dependsOn>
<library>DEFAULT</library>
<modified>
<calendar country="ABW" exchange="exchange4" uniqueID="ID004" referenceID="ID004">
<ruleBased>
<Mexico/>
</ruleBased>
</calendar>
</modified>
</calendar>
</union>
</composite>
</calendar>
<calendar country="ABW" exchange="exchange5" uniqueID="ID005" referenceID="ID000">
<dependsOn>ID002</dependsOn>
<library>DEFAULT</library>
<ruleBased>
<ECB/>
</ruleBased>
</calendar>
</xsdCalendarConfig>

View File

@@ -0,0 +1,444 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (x64) (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="types.xsd"/>
<xs:annotation>
<xs:documentation>Abstract base class</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdCalendar" abstract="false">
<xs:annotation>
<xs:appinfo>REFERENCE+CONSTRUCT</xs:appinfo>
<xs:documentation>Holiday calendar</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:choice minOccurs="0">
<xs:element name="composite" type="XslCompositeCalendar">
<xs:annotation>
<xs:documentation>Union of intersection of existing holiday calendars</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateList" type="XslDateListCalendar">
<xs:annotation>
<xs:documentation>List over hiolidays over date range</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="modified" type="XslModifiedCalendar">
<xs:annotation>
<xs:documentation>Modification of existing calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ruleBased" type="XslRuleBasedCalendar">
<xs:annotation>
<xs:documentation>Algorithmic calendars</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attributeGroup ref="XsdCalendarGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Derived classes</xs:documentation>
</xs:annotation>
<xs:complexType name="XslModifiedCalendar">
<xs:annotation>
<xs:appinfo>INSERT+CONSTRUCT</xs:appinfo>
<xs:documentation>Add/remove holidays from calendar</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="calendar" type="XsdCalendar">
<xs:annotation>
<xs:documentation>Underlying calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="add" type="XsdDateVector" minOccurs="0">
<xs:annotation>
<xs:documentation>Add new holidays</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="remove" type="XsdDateVector" minOccurs="0">
<xs:annotation>
<xs:documentation>Remove existing holidays</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XslRuleBasedCalendar">
<xs:annotation>
<xs:appinfo>INSERT+CONSTRUCT</xs:appinfo>
<xs:documentation>Holiday algorithms</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="Argentina" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Argentinian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Australia" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Australian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Brazil" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Brazilian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Canada" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Canadian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="China" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Chinese holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CzechRepublic" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Czech holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Denmark" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Danish holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ECB" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>ECB holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="England" type="XslUKCalendar">
<xs:annotation>
<xs:documentation>Great Britian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Finland" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Finnish holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Germany" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>German holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="HongKong" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>HongKong holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Hungary" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Hungarian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Iceland" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Icelandic holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="India" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Indian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Indonesia" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Indonesian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Italy" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Italian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Japan" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Japanese holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Mexico" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Mexican holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="NewZealand" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>New Zealand holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Norway" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Norwegian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Poland" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Polish holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Russia" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Russian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SaudiArabia" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Saudi holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Singapore" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Singapore holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Slovakia" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Slovakian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SouthAfrica" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>South African holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SouthKorea" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>South Korean holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Sweden" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Swsdish holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Switzerland" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Swiss holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Taiwan" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Taiwanese holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Turkey" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Turkish holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Ukraine" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Uknainian holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="UnitedStates" type="XslUSCalendar">
<xs:annotation>
<xs:documentation>USA holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="WeekendsOnly" type="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Just what it says</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:complexType name="XslDateListCalendar">
<xs:annotation>
<xs:appinfo>INSERT+CONSTRUCT</xs:appinfo>
<xs:documentation>List of holidays</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="bound" type="XsdDateBounds">
<xs:annotation>
<xs:documentation>Use first/last holiday if bound not specified </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="holiday" type="xs:date" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>List of holidays</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="weekend" type="XsdDayOfWeek" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Use Saturday and Sunday if not specified </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XslCompositeCalendar">
<xs:annotation>
<xs:appinfo>INSERT+CONSTRUCT</xs:appinfo>
<xs:documentation>Holidays in any calendar</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="intersection" type="XslCalendarList">
<xs:annotation>
<xs:documentation>Holidays in ALL of these calendars</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="union" type="XslCalendarList">
<xs:annotation>
<xs:documentation>Holidays in ANY of these calendars</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:annotation>
<xs:documentation>Unit tests</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdRollTest">
<xs:annotation>
<xs:appinfo>INSERT+CALCULATE</xs:appinfo>
<xs:documentation>Rolls dates to nearest business dates</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdCalculationSchema">
<xs:sequence minOccurs="0">
<xs:element name="result" type="XsdDateVectorResult" minOccurs="0">
<xs:annotation>
<xs:documentation>Returns a date list</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="range" type="XsdDateBounds">
<xs:annotation>
<xs:documentation>Date range to be rolled</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="roll" type="XsdRoll">
<xs:annotation>
<xs:documentation>Roll convention. Default: NONE</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="calendar" type="XsdCalendar">
<xs:annotation>
<xs:documentation>Holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCalendarTest">
<xs:annotation>
<xs:appinfo>INSERT+CALCULATE</xs:appinfo>
<xs:documentation>Returns holidays between two dates</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdCalculationSchema">
<xs:sequence minOccurs="0">
<xs:element name="result" type="XsdDateVectorResult" minOccurs="0">
<xs:annotation>
<xs:documentation>Returns list of dates</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="range" type="XsdDateBounds">
<xs:annotation>
<xs:documentation>Date range (min/max)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="calendar" type="XsdCalendar">
<xs:annotation>
<xs:documentation>The holiday calendar</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="excludeWeekends" type="xs:boolean" default="true" minOccurs="0">
<xs:annotation>
<xs:documentation>Default: true </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Enumerated types</xs:documentation>
</xs:annotation>
<xs:simpleType name="XsdUKCalendarType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="EXCHANGE"/>
<xs:enumeration value="METALS"/>
<xs:enumeration value="SETTLEMENT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdUSCalendarType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="NERC"/>
<xs:enumeration value="NYSE"/>
<xs:enumeration value="GOVERNMENT_BOND"/>
<xs:enumeration value="SETTLEMENT"/>
</xs:restriction>
</xs:simpleType>
<xs:annotation>
<xs:documentation>Helper classes</xs:documentation>
</xs:annotation>
<xs:complexType name="XslCalendarList">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:sequence minOccurs="2" maxOccurs="unbounded"><!-- -->
<xs:element name="calendar" type="XsdCalendar"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XslUKCalendar">
<xs:attribute name="type" type="XsdUKCalendarType" default="SETTLEMENT">
<xs:annotation>
<xs:documentation>Default: SETTLEMENT</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="XslUSCalendar">
<xs:attribute name="type" type="XsdUSCalendarType" default="SETTLEMENT">
<xs:annotation>
<xs:documentation>Default: SETTLEMENT</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:annotation>
<xs:documentation>Configuration file </xs:documentation>
</xs:annotation>
<xs:complexType name="XsdCalendarConfig">
<xs:sequence>
<xs:element name="calendar" type="XsdCalendar" maxOccurs="unbounded">
<xs:unique name="CalendarName">
<xs:annotation>
<xs:documentation>Country/exchange combination must be unique</xs:documentation>
</xs:annotation>
<xs:selector xpath="."/>
<xs:field xpath="@country"/>
<xs:field xpath="@exchange"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="xsdCalendarConfig" type="XsdCalendarConfig">
<xs:annotation>
<xs:documentation>List of holiday calendars</xs:documentation>
</xs:annotation>
</xs:element>
<xs:annotation>
<xs:documentation>Attributes</xs:documentation>
</xs:annotation>
<xs:attributeGroup name="XsdCalendarGroup">
<xs:attribute name="country" type="XsdCountry" use="optional">
<xs:annotation>
<xs:documentation>3-letter ISO code </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="exchange" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Country/exchange pairs must be unique</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
</xs:schema>

View File

@@ -0,0 +1,632 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="../xsd-math/enums.xsd"/>
<xs:simpleType name="XsdAssetType">
<xs:annotation>
<xs:documentation>Asset classes</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="COMMODITY"/>
<xs:enumeration value="EQUIPMENT"/>
<xs:enumeration value="EQUITY"/>
<xs:enumeration value="BOND"/>
<xs:enumeration value="CAP_FLOOR"/>
<xs:enumeration value="DEFAULT_SWAP"/>
<xs:enumeration value="FORWARD"/>
<xs:enumeration value="FUTURES"/>
<xs:enumeration value="LEASE_POOL"/>
<xs:enumeration value="OPTION"/>
<xs:enumeration value="PORTFOLIO"/>
<xs:enumeration value="SWAP"/>
<xs:enumeration value="SWAP_LEG"/>
<xs:enumeration value="TRANCHE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdAssetIdType">
<xs:annotation>
<xs:documentation>Asset identifiers</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="CUSIP"/>
<xs:enumeration value="ISIN"/>
<xs:enumeration value="SEDOL"/>
<xs:enumeration value="TICKER"/>
<xs:enumeration value="VALOR"/>
<xs:enumeration value="WKN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdBalanceType">
<xs:annotation>
<xs:documentation>Current, original, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="AVERAGE"/>
<xs:enumeration value="CURRENT"/>
<xs:enumeration value="ORIGINAL"/>
<xs:enumeration value="SCHEDULED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdBalanceUnit">
<xs:annotation>
<xs:documentation>What is balance a fraction of?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="AMOUNT"/>
<xs:enumeration value="ORIGINAL"/>
<xs:enumeration value="PAR"/>
<xs:enumeration value="SETTLEMENT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdBarrierType">
<xs:annotation>
<xs:documentation>Option barriers ( down_and_out, etc. )</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="DOWN_AND_IN"/>
<xs:enumeration value="DOWN_AND_OUT"/>
<xs:enumeration value="UP_AND_IN"/>
<xs:enumeration value="UP_AND_OUT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdCapFloorStyle">
<xs:annotation>
<xs:documentation>Cap, floor, or collar?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CAP"/>
<xs:enumeration value="FLOOR"/>
<xs:enumeration value="COLLAR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdCashflowType">
<xs:annotation>
<xs:documentation>Expected, scenario, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="FIXED"/>
<xs:enumeration value="FORECAST"/>
<xs:enumeration value="SCENARIO"/>
<xs:enumeration value="EXPECTED"/>
<xs:enumeration value="MERGED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdCommodityType">
<xs:annotation>
<xs:documentation>Gas, oil, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CURRENCY"/>
<xs:enumeration value="ENERGY"/>
<xs:enumeration value="GAS"/>
<xs:enumeration value="GOLD"/>
<xs:enumeration value="OIL"/>
<xs:enumeration value="SILVER"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdCompoundingType">
<xs:annotation>
<xs:documentation>For interest-rate calculations</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CONTINUOUS"/>
<xs:enumeration value="PERIODIC"/>
<xs:enumeration value="SIMPLE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdConventionType">
<xs:restriction base="xs:string">
<xs:enumeration value="COMPOUND"/>
<xs:enumeration value="DELAY"/>
<xs:enumeration value="EX_DIVIDEND"/>
<xs:enumeration value="MATURITY"/>
<xs:enumeration value="NOTICE"/>
<xs:enumeration value="RESET"/>
<xs:enumeration value="SETTLEMENT"/>
<xs:enumeration value="STANDARD"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdCpiInterpolateRule">
<xs:restriction base="xs:string">
<xs:enumeration value="INDEX"/>
<xs:enumeration value="FLAT"/>
<xs:enumeration value="LINEAR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDateRule">
<xs:annotation>
<xs:documentation>Date generation rules</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="NONE"/>
<xs:enumeration value="BACKWARD"/>
<xs:enumeration value="CDS_NEW"/>
<xs:enumeration value="CDS_OLD"/>
<xs:enumeration value="FORWARD"/>
<xs:enumeration value="THIRD_WEDNESDAY"/>
<xs:enumeration value="TWENTIETH"/>
<xs:enumeration value="TWENTIETH_IMM"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDayCountType">
<xs:annotation>
<xs:documentation>Basic X/Y day counts</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="30/ACTUAL"/>
<xs:enumeration value="30/360"/>
<xs:enumeration value="30/365"/>
<xs:enumeration value="ACTUAL/360"/>
<xs:enumeration value="ACTUAL/364"/>
<xs:enumeration value="ACTUAL/365"/>
<xs:enumeration value="ACTUAL/366"/>
<xs:enumeration value="ACTUAL/ACTUAL"/>
<xs:enumeration value="APPROXIMATE"/>
<xs:enumeration value="BUSINESS"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDefaultAccrualType">
<xs:annotation>
<xs:documentation>How to handle accrual if default evant</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="NONE"/>
<xs:enumeration value="IMMEDIATE"/>
<xs:enumeration value="NEXT_COUPON_DATE"/>
<xs:enumeration value="MATURITY"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDerivedIndexType">
<xs:restriction base="xs:string">
<xs:enumeration value="BOOLEAN"/>
<xs:enumeration value="COMPOSITE"/>
<xs:enumeration value="HYBRID"/>
<xs:enumeration value="LOGICAL"/>
<xs:enumeration value="PATHWISE"/>
<xs:enumeration value="RETURN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDividendType">
<xs:annotation>
<xs:documentation>Equity dividend types</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="AMOUNT"/>
<xs:enumeration value="FRACTION"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdEventType">
<xs:annotation>
<xs:documentation>Default, recovery, rating, etc. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="LEASE"/>
<xs:enumeration value="RATING"/>
<xs:enumeration value="RECOVERY"/>
<xs:enumeration value="UNKNOWN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdExerciseType">
<xs:annotation>
<xs:documentation>American, Bermudan, or European</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="AMERICAN"/>
<xs:enumeration value="BERMUDAN"/>
<xs:enumeration value="EUROPEAN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdExpressionType">
<xs:restriction base="xs:string">
<xs:enumeration value="BASKET"/>
<xs:enumeration value="CASHFLOW"/>
<xs:enumeration value="CURVE"/>
<xs:enumeration value="DATA"/>
<xs:enumeration value="EVENT"/>
<xs:enumeration value="LOGICAL"/>
<xs:enumeration value="MATH"/>
<xs:enumeration value="PATHWISE"/>
<xs:enumeration value="RANDOM"/>
<xs:enumeration value="RELATIONAL"/>
<xs:enumeration value="SOLVER"/>
<xs:enumeration value="UTILITY"/>
<xs:enumeration value="VALUE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdForwardContractType">
<xs:restriction base="xs:string">
<xs:enumeration value="BOND_FORWARD"/>
<xs:enumeration value="EURODOLLAR_FUTURES"/>
<xs:enumeration value="FORWARD_RATE_AGREEMENT"/>
<xs:enumeration value="VARIANCE_SWAP"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdFrequency">
<xs:annotation>
<xs:documentation>Periodic frequency</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="BIWEEKLY"/>
<xs:enumeration value="BIMONTHLY"/>
<xs:enumeration value="CONTINUOUS"/>
<xs:enumeration value="DAILY"/>
<xs:enumeration value="WEEKLY"/>
<xs:enumeration value="MONTHLY"/>
<xs:enumeration value="NONE"/>
<xs:enumeration value="QUARTERLY"/>
<xs:enumeration value="SEMIANNUAL"/>
<xs:enumeration value="ANNUAL"/>
<xs:enumeration value="SIMPLE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdIndexType">
<xs:annotation>
<xs:documentation>Rate,currency, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:enumeration value="UNKNOWN"/>
<xs:enumeration value="BESPOKE"/>
<xs:enumeration value="COMMODITY"/>
<xs:enumeration value="COMPOSITE"/>
<xs:enumeration value="CONDITIONAL"/>
<xs:enumeration value="CREDIT"/>
<xs:enumeration value="CURRENCY"/>
<xs:enumeration value="CUSTOM"/>
<xs:enumeration value="EQUITY"/>
<xs:enumeration value="HYBRID"/>
<xs:enumeration value="INFLATION"/>
<xs:enumeration value="LOSS"/>
<xs:enumeration value="MACRO"/>
<xs:enumeration value="PATHWISE"/>
<xs:enumeration value="RATE"/>
<xs:enumeration value="RETURN"/>
<xs:enumeration value="VOLATILITY"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdInflationType">
<xs:annotation>
<xs:documentation>Zero-coupon, year-on-year, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="UNKNOWN"/>
<xs:enumeration value="YEAR_ON_YEAR"/>
<xs:enumeration value="ZERO_COUPON"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdMaturityType">
<xs:annotation>
<xs:documentation>Fixed, variable, or perpetual?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="FIXED"/>
<xs:enumeration value="PERPETUAL"/>
<xs:enumeration value="VARIABLE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdObligorType">
<xs:annotation>
<xs:documentation>Corporate, government, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CORPORATE"/>
<xs:enumeration value="GOVERNMENT"/>
<xs:enumeration value="MUNICIPAL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdOddCouponType">
<xs:annotation>
<xs:documentation>Long, short, or regular?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="LONG"/>
<xs:enumeration value="REGULAR"/>
<xs:enumeration value="SHORT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdOptionStyle">
<xs:annotation>
<xs:documentation>Call, put, or chooser option?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CALL"/>
<xs:enumeration value="CHOOSER"/>
<xs:enumeration value="PUT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdOptionType">
<xs:annotation>
<xs:documentation>Coarse option classification</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="COMMODITY"/>
<xs:enumeration value="CREDIT"/>
<xs:enumeration value="CURRENCY"/>
<xs:enumeration value="EQUITY"/>
<xs:enumeration value="INFLATION"/>
<xs:enumeration value="RATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdPaymentFlag">
<xs:annotation>
<xs:documentation>Qualifiers</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="PROVISIONAL"/>
<xs:enumeration value="NOTIONAL"/>
<xs:enumeration value="SCHEDULED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdPaymentType">
<xs:annotation>
<xs:documentation>Interest, Principal, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="BALANCE"/>
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="EXPENSE"/>
<xs:enumeration value="INTEREST"/>
<xs:enumeration value="LEASERATE"/>
<xs:enumeration value="LOSS"/>
<xs:enumeration value="NOTIONAL"/>
<xs:enumeration value="PARVALUE"/>
<xs:enumeration value="PRINCIPAL"/>
<xs:enumeration value="RECOVERY"/>
<xs:enumeration value="RESIDUAL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdPeriodic">
<xs:annotation>
<xs:documentation>Periodic frequency only</xs:documentation>
</xs:annotation>
<xs:restriction base="XsdFrequency"/>
</xs:simpleType>
<xs:simpleType name="XsdPeriodType">
<xs:restriction base="xs:string">
<xs:enumeration value="BOND"/>
<xs:enumeration value="NATIVE"/>
<xs:enumeration value="SWAP"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdPrincipalType">
<xs:annotation>
<xs:documentation>Principal amortization</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="AMOUNT"/>
<xs:enumeration value="NOTIONAL"/>
<xs:enumeration value="ORIGINAL"/>
<xs:enumeration value="PAR"/>
<xs:enumeration value="REMAINING"/>
<xs:enumeration value="SCHEDULED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdPositionType">
<xs:annotation>
<xs:documentation>Long or short</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="LONG"/>
<xs:enumeration value="SHORT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdQuoteType">
<xs:annotation>
<xs:documentation>How prices are quoted </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="DISCOUNT"/>
<xs:enumeration value="DIVIDEND"/>
<xs:enumeration value="FRACTION"/>
<xs:enumeration value="PRICE"/>
<xs:enumeration value="RATE"/>
<xs:enumeration value="RATIO"/>
<xs:enumeration value="SPREAD"/>
<xs:enumeration value="UPFRONT"/>
<xs:enumeration value="VALUE"/>
<xs:enumeration value="VARIANCE"/>
<xs:enumeration value="VOLATILITY"/>
<xs:enumeration value="YIELD"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdRateCapType">
<xs:restriction base="xs:string">
<xs:enumeration value="BESPOKE"/>
<xs:enumeration value="INFLATION"/>
<xs:enumeration value="RATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdRateSwapType">
<xs:annotation>
<xs:documentation>Vanilla, OIS, CMS, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="BMA_VS_LIBOR"/>
<xs:enumeration value="CONSTANT_MATURITY"/>
<xs:enumeration value="OVERNIGHT_INDEX"/>
<xs:enumeration value="VANILLA"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdReturnType">
<xs:annotation>
<xs:documentation>How to calculate returns</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="COMPOUND"/>
<xs:enumeration value="DIFFERENCE"/>
<xs:enumeration value="RATIO"/>
<xs:enumeration value="SIMPLE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdRollType">
<xs:annotation>
<xs:documentation>Business date convention</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="BACKWARD"/>
<xs:enumeration value="FORWARD"/>
<xs:enumeration value="NONE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdScheduleType">
<xs:annotation>
<xs:documentation>Coupon, dividend, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="AMORTIZE"/>
<xs:enumeration value="BARRIER"/>
<xs:enumeration value="BESPOKE"/>
<xs:enumeration value="CALL"/>
<xs:enumeration value="CONVERT"/>
<xs:enumeration value="COUPON"/>
<xs:enumeration value="EXPRESSION"/>
<xs:enumeration value="PUT"/>
<xs:enumeration value="SINK"/>
<xs:enumeration value="UNKNOWN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSecurityType">
<xs:annotation>
<xs:documentation>Security classifier</xs:documentation>
</xs:annotation>
<xs:restriction base="XsdAssetType">
<xs:enumeration value="COMMODITY"/>
<xs:enumeration value="EQUITY"/>
<xs:enumeration value="BOND"/>
<xs:enumeration value="CAP_FLOOR"/>
<xs:enumeration value="DEFAULT_SWAP"/>
<xs:enumeration value="FORWARD"/>
<xs:enumeration value="FUTURES"/>
<xs:enumeration value="LEASE_POOL"/>
<xs:enumeration value="OPTION"/>
<xs:enumeration value="PORTFOLIO"/>
<xs:enumeration value="SWAP"/>
<xs:enumeration value="TRANCHE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSeniorityType">
<xs:annotation>
<xs:documentation>Payment priority on default</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="SENIOR_SECURED"/>
<xs:enumeration value="SENIOR_UNSECURED"/>
<xs:enumeration value="SUB_TIER1"/>
<xs:enumeration value="SUB_TIER2_LOWER"/>
<xs:enumeration value="SUB_TIER2_UPPER"/>
<xs:enumeration value="UNKNOWN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSettleType">
<xs:annotation>
<xs:documentation>Cash or physical delivery?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CASH"/>
<xs:enumeration value="PHYSICAL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSwapLegSide">
<xs:annotation>
<xs:documentation>Pay, receive, or net?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="NET"/>
<xs:enumeration value="PAY"/>
<xs:enumeration value="RECEIVE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSwapLegType">
<xs:annotation>
<xs:documentation>Swap leg classification</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="ASSET"/>
<xs:enumeration value="BESPOKE"/>
<xs:enumeration value="FIXED_RATE"/>
<xs:enumeration value="FLOATING_RATE"/>
<xs:enumeration value="INFLATION"/>
<xs:enumeration value="ZERO_COUPON"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSwapType">
<xs:restriction base="xs:string">
<xs:enumeration value="ASSET"/>
<xs:enumeration value="BESPOKE"/>
<xs:enumeration value="COMMODITY"/>
<xs:enumeration value="CURRENCY"/>
<xs:enumeration value="GENERAL"/>
<xs:enumeration value="INDEX"/>
<xs:enumeration value="INFLATION"/>
<xs:enumeration value="RATE"/>
<xs:enumeration value="VARIANCE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSpreadType">
<xs:annotation>
<xs:documentation>Bond spread types</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="OPTION_ADJUSTED"/>
<xs:enumeration value="ZERO_VOLATILITY"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdTermStructureType">
<xs:annotation>
<xs:documentation>Term structure types</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="COMMODITY"/>
<xs:enumeration value="CORRELATION"/>
<xs:enumeration value="CURRENCY"/>
<xs:enumeration value="DISCOUNT"/>
<xs:enumeration value="HAZARD"/>
<xs:enumeration value="INFLATION"/>
<xs:enumeration value="LOSS"/>
<xs:enumeration value="VOLATILITY"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdValueType">
<xs:annotation>
<xs:documentation>Forward, present, or horizon value </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="FORWARD"/>
<xs:enumeration value="HORIZON"/>
<xs:enumeration value="PRESENT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdYieldType">
<xs:annotation>
<xs:documentation>Bond yield types</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="MATURITY"/>
<xs:enumeration value="CALL"/>
<xs:enumeration value="WORST"/>
<xs:enumeration value="CASHFLOW"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="enums.xsd"/>
<xs:include schemaLocation="../xsd-math/types.xsd"/>
<xs:complexType name="XsdAggregate">
<xs:annotation>
<xs:documentation>Aggregate multiple indexes, prices, etc. </xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="method" type="XsdAggregateType" default="TOTAL" minOccurs="0">
<xs:annotation>
<xs:documentation>Default: TOTAL</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="average" type="XsdAverageType" default="ARITHMETIC" minOccurs="0">
<xs:annotation>
<xs:documentation>Default: ARITHMETIC</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="decile" type="XsdProbability" default="0.50" minOccurs="0">
<xs:annotation>
<xs:documentation>Default: 0.50</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="range" type="XsdSizeBounds" minOccurs="0">
<xs:annotation>
<xs:documentation>Restricted range</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdCompounding">
<xs:simpleContent>
<xs:extension base="XsdCompoundingType">
<xs:attribute name="frequency" type="XsdPeriodic" default="NONE">
<xs:annotation>
<xs:documentation>Periodic compounding only</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdIndex" abstract="false">
<xs:annotation>
<xs:appinfo>REFERENCE+CONSTRUCT</xs:appinfo>
<xs:documentation>Reference-only base index schema. This supports "simple" indexes that represent a time series of financial data and "derived" indexes that combine several simple indexs. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdDataSchema"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdMaturity">
<xs:annotation>
<xs:documentation>Date or duration</xs:documentation>
</xs:annotation>
<xs:choice minOccurs="0">
<xs:element name="date" type="XsdDate">
<xs:annotation>
<xs:documentation>Actual date</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tenor" type="XsdTenor">
<xs:annotation>
<xs:documentation>Offset from issue or trade date</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IMM" type="xs:string">
<xs:annotation>
<xs:documentation>IMM date code</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:complexType name="XsdOddCouponTypes">
<xs:sequence>
<xs:element name="first" type="XsdOddCouponType" default="REGULAR" minOccurs="0">
<xs:annotation>
<xs:documentation>Default: REGULAR</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="last" type="XsdOddCouponType" default="REGULAR" minOccurs="0">
<xs:annotation>
<xs:documentation>Default: REGULAR</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdOddCoupon">
<xs:annotation>
<xs:documentation>Odd first/last coupons</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="first" type="XsdDate" minOccurs="0">
<xs:annotation>
<xs:documentation>First coupon</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="last" type="XsdDate" minOccurs="0">
<xs:annotation>
<xs:documentation>Last coupon</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdRoll">
<xs:simpleContent>
<xs:extension base="XsdRollType">
<xs:attribute name="modified" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>Default: false</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="nearest" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>Default: false</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="XsdEnumVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="value.xsd"/>
<xs:annotation>
<xs:documentation>Lower and upper limits (both optional)</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdDoubleBounds">
<xs:sequence>
<xs:element name="lower" type="XsdDouble" minOccurs="0">
<xs:annotation>
<xs:documentation>No lower bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="upper" type="XsdDouble" minOccurs="0">
<xs:annotation>
<xs:documentation>No upper bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdDateBounds">
<xs:sequence>
<xs:element name="lower" type="XsdDate" minOccurs="0">
<xs:annotation>
<xs:documentation>No lower bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="upper" type="XsdDate" minOccurs="0">
<xs:annotation>
<xs:documentation>No upper bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdTimeBounds">
<xs:sequence>
<xs:element name="lower" type="XsdDateTime" minOccurs="0">
<xs:annotation>
<xs:documentation>No lower bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="upper" type="XsdDateTime" minOccurs="0">
<xs:annotation>
<xs:documentation>No upper bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdTenorBounds">
<xs:sequence>
<xs:element name="lower" type="XsdTenor" minOccurs="0">
<xs:annotation>
<xs:documentation>No lower bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="upper" type="XsdTenor" minOccurs="0">
<xs:annotation>
<xs:documentation>No upper bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdIntegerBounds">
<xs:sequence>
<xs:element name="lower" type="XsdInteger" minOccurs="0">
<xs:annotation>
<xs:documentation>No lower bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="upper" type="XsdInteger" minOccurs="0">
<xs:annotation>
<xs:documentation>No upper bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdSizeBounds">
<xs:sequence>
<xs:element name="lower" type="XsdSize" minOccurs="0">
<xs:annotation>
<xs:documentation>No lower bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="upper" type="XsdSize" minOccurs="0">
<xs:annotation>
<xs:documentation>No upper bound if not specified</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,809 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:annotation>
<xs:documentation>Where stuff comes from</xs:documentation>
</xs:annotation>
<xs:simpleType name="XsdLibrary">
<xs:annotation>
<xs:documentation>Whose code are we using?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="BOOST"/>
<xs:enumeration value="CUBATURE"/>
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="DIFFPACK"/>
<xs:enumeration value="FFTW"/>
<xs:enumeration value="GALIB"/>
<xs:enumeration value="GLPK"/>
<xs:enumeration value="GSL"/>
<xs:enumeration value="IMSL"/>
<xs:enumeration value="LAPACK"/>
<xs:enumeration value="LINPACK"/>
<xs:enumeration value="MAGMA"/>
<xs:enumeration value="MATLAB"/>
<xs:enumeration value="MPI"/>
<xs:enumeration value="NAG"/>
<xs:enumeration value="NVIDIA"/>
<xs:enumeration value="INTERNAL"/>
<xs:enumeration value="OOL"/>
<xs:enumeration value="OOQP"/>
<xs:enumeration value="PETSC"/>
<xs:enumeration value="QUANTLIB"/>
<xs:enumeration value="SIAM"/>
<xs:enumeration value="TNT"/>
<xs:enumeration value="TOON"/>
<xs:enumeration value="TRNG"/>
<xs:enumeration value="VIENNA"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDataSource">
<xs:annotation>
<xs:documentation>Where the data comes from ...</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="BLOOMBERG"/>
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="FACTSET"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDocumentType">
<xs:annotation>
<xs:documentation>What the calculation engine does</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CALCULATE"/>
<xs:enumeration value="MARKET_DATA"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSchemaType">
<xs:annotation>
<xs:documentation>XSD schema classification</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CURRENCY"/>
<xs:enumeration value="DISCOUNT"/>
<xs:enumeration value="INFLATION"/>
<xs:enumeration value="HAZARD"/>
<xs:enumeration value="LOSS"/>
<xs:enumeration value="LIBOR_CORRELATION"/>
<xs:enumeration value="LIBOR_VOLATILITY"/>
<xs:enumeration value="MARKET"/>
<xs:enumeration value="NONE"/>
<xs:enumeration value="PROCESS"/>
<xs:enumeration value="VOLATILITY"/>
<xs:enumeration value="SCENARIO"/>
</xs:restriction>
</xs:simpleType>
<xs:annotation>
<xs:documentation>Basic types</xs:documentation>
</xs:annotation>
<xs:simpleType name="XsdCountry">
<xs:annotation>
<xs:documentation>ISO 3166 3-letter codes</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:length value="3"/>
<xs:enumeration value="ABW"/>
<xs:enumeration value="AFG"/>
<xs:enumeration value="AGO"/>
<xs:enumeration value="AIA"/>
<xs:enumeration value="ALA"/>
<xs:enumeration value="ALB"/>
<xs:enumeration value="AND"/>
<xs:enumeration value="ANT"/>
<xs:enumeration value="ARE"/>
<xs:enumeration value="ARG"/>
<xs:enumeration value="ARM"/>
<xs:enumeration value="ASM"/>
<xs:enumeration value="ATA"/>
<xs:enumeration value="ATF"/>
<xs:enumeration value="ATG"/>
<xs:enumeration value="AUS"/>
<xs:enumeration value="AUT"/>
<xs:enumeration value="AZE"/>
<xs:enumeration value="BDI"/>
<xs:enumeration value="BEL"/>
<xs:enumeration value="BEN"/>
<xs:enumeration value="BFA"/>
<xs:enumeration value="BDG"/>
<xs:enumeration value="BGR"/>
<xs:enumeration value="BHR"/>
<xs:enumeration value="BHS"/>
<xs:enumeration value="BIH"/>
<xs:enumeration value="BLM"/>
<xs:enumeration value="BLR"/>
<xs:enumeration value="BLZ"/>
<xs:enumeration value="BMU"/>
<xs:enumeration value="BOL"/>
<xs:enumeration value="BRA"/>
<xs:enumeration value="BRB"/>
<xs:enumeration value="BRN"/>
<xs:enumeration value="BTN"/>
<xs:enumeration value="BVT"/>
<xs:enumeration value="BWA"/>
<xs:enumeration value="CAF"/>
<xs:enumeration value="CAN"/>
<xs:enumeration value="CCK"/>
<xs:enumeration value="CHE"/>
<xs:enumeration value="CHL"/>
<xs:enumeration value="CHN"/>
<xs:enumeration value="CIV"/>
<xs:enumeration value="CMR"/>
<xs:enumeration value="COD"/>
<xs:enumeration value="COG"/>
<xs:enumeration value="COK"/>
<xs:enumeration value="COL"/>
<xs:enumeration value="COM"/>
<xs:enumeration value="CPV"/>
<xs:enumeration value="CRI"/>
<xs:enumeration value="CUB"/>
<xs:enumeration value="CXR"/>
<xs:enumeration value="CYM"/>
<xs:enumeration value="CYP"/>
<xs:enumeration value="CZE"/>
<xs:enumeration value="DEU"/>
<xs:enumeration value="DJI"/>
<xs:enumeration value="DMA"/>
<xs:enumeration value="DNK"/>
<xs:enumeration value="DOM"/>
<xs:enumeration value="DZA"/>
<xs:enumeration value="ECB"/>
<xs:enumeration value="ECU"/>
<xs:enumeration value="EGY"/>
<xs:enumeration value="ERI"/>
<xs:enumeration value="ESH"/>
<xs:enumeration value="ESP"/>
<xs:enumeration value="EST"/>
<xs:enumeration value="ETH"/>
<xs:enumeration value="FIN"/>
<xs:enumeration value="FJI"/>
<xs:enumeration value="FLK"/>
<xs:enumeration value="FRA"/>
<xs:enumeration value="FRO"/>
<xs:enumeration value="FSM"/>
<xs:enumeration value="GAB"/>
<xs:enumeration value="GBR"/>
<xs:enumeration value="GEO"/>
<xs:enumeration value="GGY"/>
<xs:enumeration value="GHA"/>
<xs:enumeration value="GIB"/>
<xs:enumeration value="GIN"/>
<xs:enumeration value="GLP"/>
<xs:enumeration value="GMB"/>
<xs:enumeration value="GNB"/>
<xs:enumeration value="GNQ"/>
<xs:enumeration value="GRC"/>
<xs:enumeration value="GRD"/>
<xs:enumeration value="GRL"/>
<xs:enumeration value="GTM"/>
<xs:enumeration value="GUF"/>
<xs:enumeration value="GUM"/>
<xs:enumeration value="GUY"/>
<xs:enumeration value="HKG"/>
<xs:enumeration value="HMD"/>
<xs:enumeration value="HND"/>
<xs:enumeration value="HRV"/>
<xs:enumeration value="HTI"/>
<xs:enumeration value="HUN"/>
<xs:enumeration value="IDN"/>
<xs:enumeration value="IMN"/>
<xs:enumeration value="IND"/>
<xs:enumeration value="IOT"/>
<xs:enumeration value="IRL"/>
<xs:enumeration value="IRN"/>
<xs:enumeration value="IRQ"/>
<xs:enumeration value="ISL"/>
<xs:enumeration value="ISR"/>
<xs:enumeration value="ITA"/>
<xs:enumeration value="ITM"/>
<xs:enumeration value="JAM"/>
<xs:enumeration value="JEY"/>
<xs:enumeration value="JOR"/>
<xs:enumeration value="JPN"/>
<xs:enumeration value="KAZ"/>
<xs:enumeration value="KEN"/>
<xs:enumeration value="KGZ"/>
<xs:enumeration value="KHM"/>
<xs:enumeration value="KIR"/>
<xs:enumeration value="KNA"/>
<xs:enumeration value="KOR"/>
<xs:enumeration value="KWT"/>
<xs:enumeration value="LAO"/>
<xs:enumeration value="LBN"/>
<xs:enumeration value="LBR"/>
<xs:enumeration value="LBY"/>
<xs:enumeration value="LCA"/>
<xs:enumeration value="LIE"/>
<xs:enumeration value="LKA"/>
<xs:enumeration value="LSO"/>
<xs:enumeration value="LTU"/>
<xs:enumeration value="LUX"/>
<xs:enumeration value="LVA"/>
<xs:enumeration value="MAC"/>
<xs:enumeration value="MAF"/>
<xs:enumeration value="MAR"/>
<xs:enumeration value="MCO"/>
<xs:enumeration value="MDA"/>
<xs:enumeration value="MDG"/>
<xs:enumeration value="MDV"/>
<xs:enumeration value="MEX"/>
<xs:enumeration value="MHL"/>
<xs:enumeration value="MKD"/>
<xs:enumeration value="MLI"/>
<xs:enumeration value="MLT"/>
<xs:enumeration value="MMR"/>
<xs:enumeration value="MNE"/>
<xs:enumeration value="MNG"/>
<xs:enumeration value="MNP"/>
<xs:enumeration value="MOZ"/>
<xs:enumeration value="MRT"/>
<xs:enumeration value="MSR"/>
<xs:enumeration value="MTQ"/>
<xs:enumeration value="MUS"/>
<xs:enumeration value="MWI"/>
<xs:enumeration value="MYS"/>
<xs:enumeration value="MYT"/>
<xs:enumeration value="NAM"/>
<xs:enumeration value="NCL"/>
<xs:enumeration value="NER"/>
<xs:enumeration value="NFK"/>
<xs:enumeration value="NGA"/>
<xs:enumeration value="NIC"/>
<xs:enumeration value="NIU"/>
<xs:enumeration value="NLD"/>
<xs:enumeration value="NOR"/>
<xs:enumeration value="NPL"/>
<xs:enumeration value="NRU"/>
<xs:enumeration value="NZL"/>
<xs:enumeration value="OMN"/>
<xs:enumeration value="PAK"/>
<xs:enumeration value="PAN"/>
<xs:enumeration value="PCN"/>
<xs:enumeration value="PER"/>
<xs:enumeration value="PHL"/>
<xs:enumeration value="PLW"/>
<xs:enumeration value="PNG"/>
<xs:enumeration value="POL"/>
<xs:enumeration value="PRI"/>
<xs:enumeration value="PRK"/>
<xs:enumeration value="PRT"/>
<xs:enumeration value="PRY"/>
<xs:enumeration value="PSE"/>
<xs:enumeration value="PYF"/>
<xs:enumeration value="QAT"/>
<xs:enumeration value="REU"/>
<xs:enumeration value="ROU"/>
<xs:enumeration value="RUS"/>
<xs:enumeration value="RWA"/>
<xs:enumeration value="SAU"/>
<xs:enumeration value="SDN"/>
<xs:enumeration value="SEN"/>
<xs:enumeration value="SGP"/>
<xs:enumeration value="SGS"/>
<xs:enumeration value="SHN"/>
<xs:enumeration value="SJM"/>
<xs:enumeration value="SLB"/>
<xs:enumeration value="SLE"/>
<xs:enumeration value="SLV"/>
<xs:enumeration value="SMR"/>
<xs:enumeration value="SOM"/>
<xs:enumeration value="SPM"/>
<xs:enumeration value="SRB"/>
<xs:enumeration value="STP"/>
<xs:enumeration value="SUR"/>
<xs:enumeration value="SVK"/>
<xs:enumeration value="SVN"/>
<xs:enumeration value="SWE"/>
<xs:enumeration value="SWZ"/>
<xs:enumeration value="SYC"/>
<xs:enumeration value="SYR"/>
<xs:enumeration value="TCA"/>
<xs:enumeration value="TCD"/>
<xs:enumeration value="TGO"/>
<xs:enumeration value="THA"/>
<xs:enumeration value="TKJ"/>
<xs:enumeration value="TKL"/>
<xs:enumeration value="TKM"/>
<xs:enumeration value="TLS"/>
<xs:enumeration value="TON"/>
<xs:enumeration value="TTO"/>
<xs:enumeration value="TUN"/>
<xs:enumeration value="TUR"/>
<xs:enumeration value="TUV"/>
<xs:enumeration value="TWN"/>
<xs:enumeration value="TZA"/>
<xs:enumeration value="UGA"/>
<xs:enumeration value="UKR"/>
<xs:enumeration value="UMI"/>
<xs:enumeration value="URY"/>
<xs:enumeration value="USA"/>
<xs:enumeration value="UZB"/>
<xs:enumeration value="VAT"/>
<xs:enumeration value="VCT"/>
<xs:enumeration value="VEN"/>
<xs:enumeration value="VGB"/>
<xs:enumeration value="VIR"/>
<xs:enumeration value="VNM"/>
<xs:enumeration value="VUT"/>
<xs:enumeration value="WLF"/>
<xs:enumeration value="WSM"/>
<xs:enumeration value="YEM"/>
<xs:enumeration value="ZAF"/>
<xs:enumeration value="ZMP"/>
<xs:enumeration value="ZWE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdCurrency">
<xs:annotation>
<xs:documentation>Three-letter ISO currency codes</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="AED"/>
<xs:enumeration value="AFN"/>
<xs:enumeration value="ALL"/>
<xs:enumeration value="AMG"/>
<xs:enumeration value="AND"/>
<xs:enumeration value="AOA"/>
<xs:enumeration value="ARS"/>
<xs:enumeration value="ATS"/>
<xs:enumeration value="AUD"/>
<xs:enumeration value="AWG"/>
<xs:enumeration value="AZN"/>
<xs:enumeration value="BAM"/>
<xs:enumeration value="BBD"/>
<xs:enumeration value="BDT"/>
<xs:enumeration value="BEF"/>
<xs:enumeration value="BGL"/>
<xs:enumeration value="BGN"/>
<xs:enumeration value="BHD"/>
<xs:enumeration value="BIF"/>
<xs:enumeration value="BMD"/>
<xs:enumeration value="BND"/>
<xs:enumeration value="BOB"/>
<xs:enumeration value="BRL"/>
<xs:enumeration value="BSD"/>
<xs:enumeration value="BTN"/>
<xs:enumeration value="BWP"/>
<xs:enumeration value="BYR"/>
<xs:enumeration value="BZD"/>
<xs:enumeration value="CAD"/>
<xs:enumeration value="CDF"/>
<xs:enumeration value="CHF"/>
<xs:enumeration value="CLP"/>
<xs:enumeration value="CNY"/>
<xs:enumeration value="COP"/>
<xs:enumeration value="CRC"/>
<xs:enumeration value="CUP"/>
<xs:enumeration value="CVE"/>
<xs:enumeration value="CYP"/>
<xs:enumeration value="CZK"/>
<xs:enumeration value="DEM"/>
<xs:enumeration value="DJF"/>
<xs:enumeration value="DKK"/>
<xs:enumeration value="DOP"/>
<xs:enumeration value="DZD"/>
<xs:enumeration value="EEK"/>
<xs:enumeration value="EGP"/>
<xs:enumeration value="ERN"/>
<xs:enumeration value="ESP"/>
<xs:enumeration value="ETB"/>
<xs:enumeration value="EUR"/>
<xs:enumeration value="FIM"/>
<xs:enumeration value="FJD"/>
<xs:enumeration value="FKP"/>
<xs:enumeration value="FRF"/>
<xs:enumeration value="GBP"/>
<xs:enumeration value="GEL"/>
<xs:enumeration value="GGP"/>
<xs:enumeration value="GHS"/>
<xs:enumeration value="GIP"/>
<xs:enumeration value="GMD"/>
<xs:enumeration value="GNF"/>
<xs:enumeration value="GRD"/>
<xs:enumeration value="GTQ"/>
<xs:enumeration value="GYD"/>
<xs:enumeration value="HKD"/>
<xs:enumeration value="HNL"/>
<xs:enumeration value="HRK"/>
<xs:enumeration value="HTG"/>
<xs:enumeration value="HUF"/>
<xs:enumeration value="IDR"/>
<xs:enumeration value="IEP"/>
<xs:enumeration value="ILS"/>
<xs:enumeration value="IMP"/>
<xs:enumeration value="INR"/>
<xs:enumeration value="IQD"/>
<xs:enumeration value="IRR"/>
<xs:enumeration value="ISK"/>
<xs:enumeration value="ITL"/>
<xs:enumeration value="JEP"/>
<xs:enumeration value="JMD"/>
<xs:enumeration value="JOD"/>
<xs:enumeration value="JPY"/>
<xs:enumeration value="KES"/>
<xs:enumeration value="KGS"/>
<xs:enumeration value="KHR"/>
<xs:enumeration value="KMF"/>
<xs:enumeration value="KPW"/>
<xs:enumeration value="KRW"/>
<xs:enumeration value="KWD"/>
<xs:enumeration value="KYD"/>
<xs:enumeration value="KZT"/>
<xs:enumeration value="LAK"/>
<xs:enumeration value="LBP"/>
<xs:enumeration value="LKR"/>
<xs:enumeration value="LRD"/>
<xs:enumeration value="LSL"/>
<xs:enumeration value="LTL"/>
<xs:enumeration value="LUF"/>
<xs:enumeration value="LVL"/>
<xs:enumeration value="LYD"/>
<xs:enumeration value="MAD"/>
<xs:enumeration value="MDL"/>
<xs:enumeration value="MGA"/>
<xs:enumeration value="MKD"/>
<xs:enumeration value="MMK"/>
<xs:enumeration value="MNT"/>
<xs:enumeration value="MOP"/>
<xs:enumeration value="MRO"/>
<xs:enumeration value="MTL"/>
<xs:enumeration value="MUR"/>
<xs:enumeration value="MVR"/>
<xs:enumeration value="MWK"/>
<xs:enumeration value="MXN"/>
<xs:enumeration value="MYR"/>
<xs:enumeration value="MZN"/>
<xs:enumeration value="NAD"/>
<xs:enumeration value="NIO"/>
<xs:enumeration value="NGN"/>
<xs:enumeration value="NLG"/>
<xs:enumeration value="NOK"/>
<xs:enumeration value="NPR"/>
<xs:enumeration value="NZD"/>
<xs:enumeration value="OMR"/>
<xs:enumeration value="PAB"/>
<xs:enumeration value="PEH"/>
<xs:enumeration value="PEI"/>
<xs:enumeration value="PEN"/>
<xs:enumeration value="PGK"/>
<xs:enumeration value="PHP"/>
<xs:enumeration value="PKR"/>
<xs:enumeration value="PLN"/>
<xs:enumeration value="PTE"/>
<xs:enumeration value="PYG"/>
<xs:enumeration value="QAR"/>
<xs:enumeration value="ROL"/>
<xs:enumeration value="RON"/>
<xs:enumeration value="RSD"/>
<xs:enumeration value="RUB"/>
<xs:enumeration value="RWF"/>
<xs:enumeration value="SAR"/>
<xs:enumeration value="SBD"/>
<xs:enumeration value="SCR"/>
<xs:enumeration value="SDG"/>
<xs:enumeration value="SEK"/>
<xs:enumeration value="SGD"/>
<xs:enumeration value="SHP"/>
<xs:enumeration value="SIT"/>
<xs:enumeration value="SKK"/>
<xs:enumeration value="SLL"/>
<xs:enumeration value="SOS"/>
<xs:enumeration value="SPL"/>
<xs:enumeration value="SRD"/>
<xs:enumeration value="STD"/>
<xs:enumeration value="SVC"/>
<xs:enumeration value="SYP"/>
<xs:enumeration value="SZL"/>
<xs:enumeration value="THB"/>
<xs:enumeration value="TJS"/>
<xs:enumeration value="TMM"/>
<xs:enumeration value="TND"/>
<xs:enumeration value="TOP"/>
<xs:enumeration value="TRL"/>
<xs:enumeration value="TRY"/>
<xs:enumeration value="TTD"/>
<xs:enumeration value="TVD"/>
<xs:enumeration value="TWD"/>
<xs:enumeration value="TZS"/>
<xs:enumeration value="UAH"/>
<xs:enumeration value="UGX"/>
<xs:enumeration value="USD"/>
<xs:enumeration value="UYU"/>
<xs:enumeration value="UZS"/>
<xs:enumeration value="VEB"/>
<xs:enumeration value="VEF"/>
<xs:enumeration value="VND"/>
<xs:enumeration value="VUV"/>
<xs:enumeration value="WST"/>
<xs:enumeration value="XAF"/>
<xs:enumeration value="XAG"/>
<xs:enumeration value="XAU"/>
<xs:enumeration value="XCD"/>
<xs:enumeration value="XDR"/>
<xs:enumeration value="XOF"/>
<xs:enumeration value="XPD"/>
<xs:enumeration value="XPF"/>
<xs:enumeration value="XPT"/>
<xs:enumeration value="YER"/>
<xs:enumeration value="ZAR"/>
<xs:enumeration value="ZMK"/>
<xs:enumeration value="ZWD"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdExchange">
<xs:annotation>
<xs:documentation>ISO 4-letter codes</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="NONE"/>
<xs:enumeration value="NYSE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdMatrixStyle">
<xs:restriction base="xs:string">
<xs:enumeration value="DATA"/>
<xs:enumeration value="ROW"/>
<xs:enumeration value="COLUMN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdVariantType">
<xs:restriction base="xs:string">
<xs:enumeration value="BOOLEAN"/>
<xs:enumeration value="DATE"/>
<xs:enumeration value="DATETIME"/>
<xs:enumeration value="DOUBLE"/>
<xs:enumeration value="INTEGER"/>
<xs:enumeration value="SIZE"/>
<xs:enumeration value="TENOR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdVectorType">
<xs:annotation>
<xs:documentation>Indexed by date, time, tenor, etc</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="BOOLEAN"/>
<xs:enumeration value="CHARACTER"/>
<xs:enumeration value="COMPLEX"/>
<xs:enumeration value="DATE"/>
<xs:enumeration value="DOUBLE"/>
<xs:enumeration value="INTEGER"/>
<xs:enumeration value="SIZE"/>
<xs:enumeration value="STRING"/>
<xs:enumeration value="TENOR"/>
<xs:enumeration value="TIME"/>
</xs:restriction>
</xs:simpleType>
<xs:annotation>
<xs:documentation>Time-related types</xs:documentation>
</xs:annotation>
<xs:simpleType name="XsdDayOfMonth">
<xs:annotation>
<xs:documentation>From day 1 ro 31</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:int">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="31"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDayOfWeek">
<xs:annotation>
<xs:documentation>Starts with Sunday ...</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="SUNDAY"/>
<xs:enumeration value="MONDAY"/>
<xs:enumeration value="TUESDAY"/>
<xs:enumeration value="WEDNESDAY"/>
<xs:enumeration value="THURSDAY"/>
<xs:enumeration value="FRIDAY"/>
<xs:enumeration value="SATURDAY"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdImmMonth">
<xs:annotation>
<xs:documentation>IMM Month Codes</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="1"/>
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="F"/>
<xs:enumeration value="G"/>
<xs:enumeration value="H"/>
<xs:enumeration value="J"/>
<xs:enumeration value="K"/>
<xs:enumeration value="M"/>
<xs:enumeration value="N"/>
<xs:enumeration value="Q"/>
<xs:enumeration value="U"/>
<xs:enumeration value="V"/>
<xs:enumeration value="X"/>
<xs:enumeration value="Z"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdMonthOfYear">
<xs:annotation>
<xs:documentation>January,February, ...</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="JANUARY"/>
<xs:enumeration value="FEBRUARY"/>
<xs:enumeration value="MARCH"/>
<xs:enumeration value="APRIL"/>
<xs:enumeration value="MAY"/>
<xs:enumeration value="JUNE"/>
<xs:enumeration value="JULY"/>
<xs:enumeration value="AUGUST"/>
<xs:enumeration value="SEPTEMBER"/>
<xs:enumeration value="OCTOBER"/>
<xs:enumeration value="NOVEMBER"/>
<xs:enumeration value="DECEMBER"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdRAtomicType">
<xs:restriction base="xs:string">
<xs:enumeration value="BOOLEAN"/>
<xs:enumeration value="CHARACTER"/>
<xs:enumeration value="COMPLEX"/>
<xs:enumeration value="DOUBLE"/>
<xs:enumeration value="INTEGER"/>
<xs:enumeration value="UNKNOWN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdRCategory">
<xs:restriction base="xs:string">
<xs:enumeration value="ARRAY"/>
<xs:enumeration value="FACTOR"/>
<xs:enumeration value="LIST"/>
<xs:enumeration value="MATRIX"/>
<xs:enumeration value="SCALAR"/>
<xs:enumeration value="TABLE"/>
<xs:enumeration value="UNKNOWN"/>
<xs:enumeration value="VECTOR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdRegion">
<xs:restriction base="xs:string">
<xs:enumeration value="AFRICA"/>
<xs:enumeration value="ASIA"/>
<xs:enumeration value="EUROPE"/>
<xs:enumeration value="NORTH_AMERICA"/>
<xs:enumeration value="OCEANIA"/>
<xs:enumeration value="SOUTH_AMERICA"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdRoundType">
<xs:annotation>
<xs:documentation>Up, down, nearest, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="AWAY_FROM_ZERO"/>
<xs:enumeration value="DOWN"/>
<xs:enumeration value="NEAREST"/>
<xs:enumeration value="NONE"/>
<xs:enumeration value="TOWARDS_ZERO"/>
<xs:enumeration value="UP"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSeriesType">
<xs:annotation>
<xs:documentation>Indexed by date, time, tenor, etc</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="DATE"/>
<xs:enumeration value="DOUBLE"/>
<xs:enumeration value="STRING"/>
<xs:enumeration value="TENOR"/>
<xs:enumeration value="TIME"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSeriesCategory">
<xs:annotation>
<xs:documentation>Scalar, vector, matrix, etc</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="ARRAY"/>
<xs:enumeration value="MATRIX"/>
<xs:enumeration value="SCALAR"/>
<xs:enumeration value="VECTOR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdTimeUnit">
<xs:annotation>
<xs:documentation>Years,months,days, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="SECONDS"/>
<xs:enumeration value="MINUTES"/>
<xs:enumeration value="HOURS"/>
<xs:enumeration value="DAYS"/>
<xs:enumeration value="BUSINESS_DAYS"/>
<xs:enumeration value="WEEKS"/>
<xs:enumeration value="MONTHS"/>
<xs:enumeration value="YEARS"/>
<xs:enumeration value="UNDEFINED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdWeekOfMonth">
<xs:restriction base="xs:unsignedInt">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:annotation>
<xs:documentation>One-or-the-other types</xs:documentation>
</xs:annotation>
<xs:simpleType name="XsdDirection">
<xs:annotation>
<xs:documentation>Forward or backward?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="BACKWARD"/>
<xs:enumeration value="FORWARD"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSortType">
<xs:annotation>
<xs:documentation>Ascending or descending?</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="DECREASING"/>
<xs:enumeration value="INCREASING"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdRowOrColumn">
<xs:restriction base="xs:string">
<xs:enumeration value="COLUMN"/>
<xs:enumeration value="ROW"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdUnionOrIntersection">
<xs:restriction base="xs:string">
<xs:enumeration value="INTERSECTION"/>
<xs:enumeration value="UNION"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdLowerOrUpper">
<xs:restriction base="xs:string">
<xs:enumeration value="LOWER"/>
<xs:enumeration value="UPPER"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDirectOrInverse">
<xs:restriction base="xs:string">
<xs:enumeration value="DIRECT"/>
<xs:enumeration value="INVERSE"/>
</xs:restriction>
</xs:simpleType>
<xs:annotation>
<xs:documentation>Specialized dates</xs:documentation>
</xs:annotation>
<xs:simpleType name="XsdDateType">
<xs:annotation>
<xs:documentation>Special dates </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="CURRENT"/>
<xs:enumeration value="DATED"/>
<xs:enumeration value="ISSUE"/>
<xs:enumeration value="LAST"/>
<xs:enumeration value="MATURITY"/>
<xs:enumeration value="NEXT"/>
<xs:enumeration value="RESET"/>
<xs:enumeration value="SETTLE"/>
<xs:enumeration value="TRADE"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@@ -0,0 +1,633 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="vector.xsd"/>
<xs:annotation>
<xs:documentation>Xsd representation of various types of two-dimensional matrices</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>Abstract base classes </xs:documentation>
</xs:annotation>
<xs:complexType name="XsdMatrix" abstract="true">
<xs:annotation>
<xs:documentation>Base class</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdRectangularMatrix" abstract="true">
<xs:annotation>
<xs:documentation>Base class</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdMatrix">
<xs:attribute name="rows" type="xs:unsignedInt" default="0">
<xs:annotation>
<xs:documentation>Number of rows</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="columns" type="xs:unsignedInt" default="0">
<xs:annotation>
<xs:documentation>Number of columns</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Rectangular matrices</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBooleanMatrix">
<xs:annotation>
<xs:documentation>General rectangular matrix of unsigned integers. The matrix contents are specified by row, by column, or as a linear array.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdRectangularMatrix">
<xs:choice minOccurs="0">
<xs:element name="data" type="XslBooleanMatrixData">
<xs:annotation>
<xs:documentation>Matrix stored as 1-D array. Array length must agree with #rows x #columns</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XslBooleanVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each row must be of length = # columns and the total number of rows must agree with the 'rows' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XslBooleanVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each column must be of length = # rowss and the total number of columns must agree with the 'columns' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attributeGroup ref="XsdVariableGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCharacterMatrix">
<xs:annotation>
<xs:documentation>General rectangular matrix of unsigned integers. The matrix contents are specified by row, by column, or as a linear array.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdRectangularMatrix">
<xs:choice minOccurs="0">
<xs:element name="data" type="XslCharacterMatrixData">
<xs:annotation>
<xs:documentation>Matrix stored as 1-D array. Array length must agree with #rows x #columns</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XsdCharacterVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each row must be of length = # columns and the total number of rows must agree with the 'rows' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XsdCharacterVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each column must be of length = # rowss and the total number of columns must agree with the 'columns' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attributeGroup ref="XsdVariableGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDoubleMatrix">
<xs:annotation>
<xs:documentation>General rectangular matrix of doubles. The matrix contents are specified by row, by column, or as a linear array.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdRectangularMatrix">
<xs:choice minOccurs="0">
<xs:element name="data" type="XslDoubleMatrixData">
<xs:annotation>
<xs:documentation>Matrix stored as 1-D array. Array length must agree with #rows x #columns</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XslDoubleVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each row must be of length = # columns and the total number of rows must agree with the 'rows' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XslDoubleVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each column must be of length = # rowss and the total number of columns must agree with the 'columns' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attributeGroup ref="XsdDoubleVariableGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdIntegerMatrix">
<xs:annotation>
<xs:documentation>General rectangular matrix of unsigned integers. The matrix contents are specified by row, by column, or as a linear array.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdRectangularMatrix">
<xs:choice minOccurs="0">
<xs:element name="data" type="XslIntegerMatrixData">
<xs:annotation>
<xs:documentation>Matrix stored as 1-D array. Array length must agree with #rows x #columns</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XslIntegerVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each row must be of length = # columns and the total number of rows must agree with the 'rows' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XslIntegerVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each column must be of length = # rowss and the total number of columns must agree with the 'columns' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attributeGroup ref="XsdIntegerVariableGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSizeMatrix">
<xs:annotation>
<xs:documentation>General rectangular matrix of unsigned integers. The matrix contents are specified by row, by column, or as a linear array.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdRectangularMatrix">
<xs:choice minOccurs="0">
<xs:element name="data" type="XslSizeMatrixData">
<xs:annotation>
<xs:documentation>Matrix stored as 1-D array. Array length must agree with #rows x #columns</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XslSizeVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each row must be of length = # columns and the total number of rows must agree with the 'rows' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XslSizeVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each column must be of length = # rowss and the total number of columns must agree with the 'columns' attribute. </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attributeGroup ref="XsdSizeVariableGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSymmetricDoubleMatrix">
<xs:annotation>
<xs:documentation>Only the lower or upper half of the matrix is specified</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdMatrix">
<xs:choice minOccurs="0">
<xs:element name="data" type="XslDoubleMatrixData">
<xs:annotation>
<xs:documentation>Matrix stored as 1-D array</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XslDoubleVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One row at a time </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XslDoubleVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One column at a time </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attribute name="size" type="xs:nonNegativeInteger" default="0">
<xs:annotation>
<xs:documentation>Number of rows or columns</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="storage" type="XsdLowerOrUpper" default="LOWER">
<xs:annotation>
<xs:documentation>Lower- or upper-triangular storage? Default: LOWER</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="XsdDoubleVariableGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdUpperTriangularDoubleMatrix">
<xs:annotation>
<xs:documentation>Only the upper half of the matrix is specified</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdMatrix">
<xs:choice minOccurs="0">
<xs:element name="data" type="XslDoubleMatrixData">
<xs:annotation>
<xs:documentation>Matrix contents stored in 1-D array</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XslDoubleVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One row at a time </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XslDoubleVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One column at a time </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attribute name="size" type="xs:unsignedInt" default="0">
<xs:annotation>
<xs:documentation>Number of rows or columns</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="XsdDoubleVariableGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSparseDoubleMatrix">
<xs:complexContent>
<xs:extension base="XsdRectangularMatrix">
<xs:sequence>
<xs:element name="value" type="XslSparseDouble" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="XsdDoubleVariableGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdBandDoubleMatrix">
<xs:annotation>
<xs:documentation>General (non-symmetric) double-precision banded matrix</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="band" type="XslDoubleBand" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Individual band. Array length must agree with matrix size less the absolute value of the band offset.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="size" type="xs:unsignedInt" default="0">
<xs:annotation>
<xs:documentation>Number of rows or columns</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="XsdDoubleVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:complexType>
<xs:complexType name="XsdLowerTriangularDoubleMatrix">
<xs:annotation>
<xs:documentation>Only the lower half of the matrix is specified</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdMatrix">
<xs:choice minOccurs="0">
<xs:element name="data" type="XslDoubleMatrixData">
<xs:annotation>
<xs:documentation>Matrix contents stored in 1-D array</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XslDoubleVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One row at a time </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XslDoubleVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One column at a time </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attribute name="size" type="xs:nonNegativeInteger" use="optional" default="0">
<xs:annotation>
<xs:documentation>Number of rows or columns</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="XsdDoubleVariableGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdComplexMatrix">
<xs:annotation>
<xs:documentation>General rectangular matrix of complex numbers. The matrix contents are specified by row, by column, or as a linear array.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdRectangularMatrix">
<xs:choice minOccurs="0">
<xs:element name="data" type="XslComplexMatrixData">
<xs:annotation>
<xs:documentation>Data stored as pair of 1-D arrays. Matrix stored as 1-D array. Array lengths must agree with #rows x #columns</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XslComplexVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One row at a time </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XslComplexVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One column at a time </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdHermitianMatrix">
<xs:complexContent>
<xs:extension base="XsdMatrix">
<xs:sequence minOccurs="0">
<xs:element name="data" type="XslComplexMatrixData">
<xs:annotation>
<xs:documentation>Matrix contents stored in 1-D array</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="row" type="XsdComplexVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One row at a time </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="column" type="XsdComplexVector" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>One column at a time </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="size" type="xs:unsignedInt" default="0">
<xs:annotation>
<xs:documentation>Number of rowsor columns</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="storage" type="XsdLowerOrUpper" default="LOWER">
<xs:annotation>
<xs:documentation>Lower- or upper-triangular storage? Default: LOWER</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Results</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBandDoubleMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdBandDoubleMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdBandDoubleMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdBooleanMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdDoubleMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdBooleanMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCharacterMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdDoubleMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdCharacterMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdComplexMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdDoubleMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdComplexMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDoubleMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdDoubleMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdDoubleMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdIntegerMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdDoubleMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdIntegerMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdMatrixResidualResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="factor" type="XsdDoubleMatrix" minOccurs="0">
<xs:annotation>
<xs:documentation>The matrix factor</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="residual" type="XsdDoubleMatrix">
<xs:annotation>
<xs:documentation>Residual matrix</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="l1Norm" type="xs:double" minOccurs="0">
<xs:annotation>
<xs:documentation>L1 norm of residual</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="l2Norm" type="xs:double" minOccurs="0">
<xs:annotation>
<xs:documentation>L2 norm of residual</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="maxNorm" type="xs:double" minOccurs="0">
<xs:annotation>
<xs:documentation>Max. norm of residual</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSizeMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdSizeMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdSizeMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSymmetricDoubleMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdDoubleMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdSymmetricDoubleMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdLowerTriangularDoubleMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdDoubleMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdLowerTriangularDoubleMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdUpperTriangularDoubleMatrixResult">
<xs:annotation>
<xs:documentation>Returns XsdDoubleMatrix output</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdUpperTriangularDoubleMatrix"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Helper classes</xs:documentation>
</xs:annotation>
<xs:complexType name="XslDoubleBand">
<xs:annotation>
<xs:documentation>Individual band. Array length must agree with matrix size less the absolute value of the band offset.</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="XslDoubleVector">
<xs:attribute name="offset" type="xs:int" use="required">
<xs:annotation>
<xs:documentation>Offset from main diagonal. The offsets must be distinct and their absolute value must not exceed the matrix size.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XslSparseDouble">
<xs:annotation>
<xs:documentation>Double with row and column attributes. Used to specify non-zero elements of sparse matrices</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:double">
<xs:attribute name="row" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>Element row. Must be less than total # matrix rows</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="column" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>Element column. Must be less than total # matrix columns</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XslBooleanMatrixData">
<xs:simpleContent>
<xs:extension base="XslBooleanVector">
<xs:attribute name="order" type="XsdRowOrColumn" default="ROW">
<xs:annotation>
<xs:documentation>Row- or column-major storage? Default: ROW major storage</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XslDoubleMatrixData">
<xs:simpleContent>
<xs:extension base="XslDoubleVector">
<xs:attribute name="order" type="XsdRowOrColumn" default="ROW">
<xs:annotation>
<xs:documentation>Row- or column-major storage? Default: ROW major storage</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XslCharacterMatrixData">
<xs:simpleContent>
<xs:extension base="XsdCharacterVector">
<xs:attribute name="order" type="XsdRowOrColumn" default="ROW">
<xs:annotation>
<xs:documentation>Row- or column-major storage? Default: ROW major storage</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XslComplexMatrixData">
<xs:complexContent>
<xs:extension base="XsdComplexVector">
<xs:attribute name="order" type="XsdRowOrColumn" default="ROW">
<xs:annotation>
<xs:documentation>Row- or column-major storage? Default: ROW major storage</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XslIntegerMatrixData">
<xs:simpleContent>
<xs:extension base="XslIntegerVector">
<xs:attribute name="order" type="XsdRowOrColumn" default="ROW">
<xs:annotation>
<xs:documentation>Row- or column-major storage? Default: ROW major storage</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XslSizeMatrixData">
<xs:simpleContent>
<xs:extension base="XslSizeVector">
<xs:attribute name="order" type="XsdRowOrColumn" default="ROW">
<xs:annotation>
<xs:documentation>Row- or column-major storage? Default: ROW major storage</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Lists of matrices</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdDoubleMatrixList">
<xs:sequence>
<xs:element name="matrix" type="XsdDoubleMatrix" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,307 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (x64) (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="types.xsd"/>
<xs:include schemaLocation="value.xsd"/>
<xs:annotation>
<xs:documentation>Abstract base class</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdResult">
<xs:annotation>
<xs:documentation>Base class for output of calculation schemas</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="comment" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Optional comments</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="calculationID" type="xs:IDREF" use="required">
<xs:annotation>
<xs:documentation>Reference to calculation scherma</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="elapsedTime" type="xs:duration">
<xs:annotation>
<xs:documentation>CPU time (refine this later)</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:annotation>
<xs:documentation>Derived classes</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBooleanResult">
<xs:annotation>
<xs:documentation>Returns true or false</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:boolean"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCharacterResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdCharacter"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdComplexResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XslComplex"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCorrelationResult">
<xs:annotation>
<xs:documentation>Returns double</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XslCorrelation"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDateResult">
<xs:annotation>
<xs:documentation>Returns date</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:date"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDateTimeResult">
<xs:annotation>
<xs:documentation>Returns dateTime</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:dateTime"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDoubleResult">
<xs:annotation>
<xs:documentation>Returns double</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:double"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdErrorResult">
<xs:annotation>
<xs:documentation>Returns exception schema</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="error" type="XsdException"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdIntegerResult">
<xs:annotation>
<xs:documentation>Returns integer</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:integer"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdNonNegativeDoubleResult">
<xs:annotation>
<xs:documentation>Returns double</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNonNegativeDouble"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdPositiveDoubleResult">
<xs:annotation>
<xs:documentation>Returns double</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdPositiveDouble"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdPositiveIntegerResult">
<xs:annotation>
<xs:documentation>Returns double</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:positiveInteger"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdProbabilityResult">
<xs:annotation>
<xs:documentation>Returns double</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XslProbability"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSizeResult">
<xs:annotation>
<xs:documentation>Returns integer</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:nonNegativeInteger"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdStringResult">
<xs:annotation>
<xs:documentation>Returns string</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdTenorResult">
<xs:annotation>
<xs:documentation>Returns XML duration</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:duration"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Sequences</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBooleanListResult">
<xs:annotation>
<xs:documentation>Returns true or false</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:boolean" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDateListResult">
<xs:annotation>
<xs:documentation>Returns date</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:date" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDateTimeListResult">
<xs:annotation>
<xs:documentation>Returns dateTime</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:dateTime" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDoubleListResult">
<xs:annotation>
<xs:documentation>Returns double</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:double" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdIntegerListResult">
<xs:annotation>
<xs:documentation>Returns integer</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:integer" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdStringListResult">
<xs:annotation>
<xs:documentation>Returns string</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdTenorListResult">
<xs:annotation>
<xs:documentation>Returns XML duration</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="xs:duration" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,294 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:annotation>
<xs:documentation>Configuration</xs:documentation>
</xs:annotation>
<xs:include schemaLocation="enums.xsd"/>
<xs:annotation>
<xs:documentation>All input schemas are derived from either data or calculation base schemas</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBaseSchema" abstract="true">
<xs:annotation>
<xs:documentation>Abstract base class for all input schemas</xs:documentation>
</xs:annotation>
<xs:sequence minOccurs="0">
<xs:element name="dependsOn" type="xs:IDREFS" minOccurs="0">
<xs:annotation>
<xs:documentation>Schemas upon which this schema depends</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="library" type="XsdLibrary" default="DEFAULT" minOccurs="0">
<xs:annotation>
<xs:documentation>Calculation library (if relevant) DEFAULT means we pick the one we think is best. Otherwise, we use the selected software library and throw an exception if the calculation is not available from that library.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="uniqueID" type="xs:ID" use="optional">
<xs:annotation>
<xs:documentation>Unique identifier</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="referenceID" type="xs:IDREF" use="optional">
<xs:annotation>
<xs:documentation>Foreign key</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="XsdDataSchema" abstract="true">
<xs:annotation>
<xs:documentation>Base class for all schemas that generate a calculation object in the global cache. Same data schemas also generate output results.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdBaseSchema"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdNamedSchema" abstract="true">
<xs:annotation>
<xs:documentation>For calculators derived from market data of different dates ...</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:attribute name="name" type="xs:string">
<xs:annotation>
<xs:documentation>Unique name</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="time" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Default: TODAY</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCalculationSchema" abstract="true">
<xs:complexContent>
<xs:extension base="XsdBaseSchema">
<xs:sequence>
<xs:element name="comment" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Optional comments (these are echoed in the corresponding result)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdParameters">
<xs:annotation>
<xs:appinfo>REFERENCE</xs:appinfo>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdDataSchema"/>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>More types</xs:documentation>
</xs:annotation>
<xs:simpleType name="XsdCharacter">
<xs:restriction base="xs:string">
<xs:length value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="XslComplex">
<xs:annotation>
<xs:documentation>Complex number</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="real" type="xs:double" default="0.0" minOccurs="0">
<xs:annotation>
<xs:documentation>Real part</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="imaginary" type="xs:double" default="0.0" minOccurs="0">
<xs:annotation>
<xs:documentation>Imanginary part</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdException">
<xs:annotation>
<xs:documentation>All exceptions are returned as results to the output document. </xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="file" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>File in which error occurred</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="line" type="xs:unsignedInt" minOccurs="0">
<xs:annotation>
<xs:documentation>Line in source code where error occurred</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="method" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Method where exception thrown (or rethrown)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="condition" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The assertion that has been violated </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="message" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Error message</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="source" type="XsdLibrary" default="DEFAULT" minOccurs="0">
<xs:annotation>
<xs:documentation>Was exception thrown in external library?</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdPlaceHolder">
<xs:annotation>
<xs:documentation>Empty complex type</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="XsdQuantile">
<xs:simpleContent>
<xs:extension base="xs:double">
<xs:attribute name="percentile" use="required">
<xs:annotation>
<xs:documentation>Between 0.0 and 1.0</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:maxInclusive value="1.0"/>
<xs:minInclusive value="0.0"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdTimeVariant">
<xs:annotation>
<xs:documentation>Date, time, or tenolr </xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="date" type="xs:date">
<xs:annotation>
<xs:documentation>Date </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="time" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Date + time-of-day + time zone </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tenor" type="xs:duration">
<xs:annotation>
<xs:documentation>Offset to reference time </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:simpleType name="XsdDateOrType">
<xs:union memberTypes="xs:date XsdDateType"/>
</xs:simpleType>
<xs:complexType name="XsdNamedValue">
<xs:annotation>
<xs:documentation>Double with name attribute</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:double">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdNameValuePair">
<xs:annotation>
<xs:documentation>Use to modify parameters ofr existing types</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="xs:anyType">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdVariant">
<xs:annotation>
<xs:documentation>Various built-in types</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="boolean" type="xs:boolean">
<xs:annotation>
<xs:documentation>True or false</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="date" type="xs:date">
<xs:annotation>
<xs:documentation>Just what it says ....</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateTime" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Date + time of day</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="double" type="xs:double">
<xs:annotation>
<xs:documentation>Just what it says ...</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="integer" type="xs:int">
<xs:annotation>
<xs:documentation>Just what it says ...</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="size" type="xs:unsignedInt">
<xs:annotation>
<xs:documentation>Unsigned integer</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tenor" type="xs:duration">
<xs:annotation>
<xs:documentation>Tenor (duration)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:annotation>
<xs:documentation>Indexed types</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdIndexedDouble">
<xs:simpleContent>
<xs:extension base="xs:double">
<xs:attribute name="index" type="xs:nonNegativeInteger" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Configuration</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdCacheConfig">
<xs:sequence>
<xs:element name="resolveDependenciesAtInsertion" type="xs:boolean" default="true" minOccurs="0">
<xs:annotation>
<xs:documentation>Default: true</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="allowUniqueIDOverwrite" type="xs:boolean" default="false" minOccurs="0">
<xs:annotation>
<xs:documentation>Default: false</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="clearCacheAfterProcessing" type="xs:boolean" default="true" minOccurs="0">
<xs:annotation>
<xs:documentation>Default: true</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="xsdCacheConfig" type="XsdCacheConfig">
<xs:annotation>
<xs:documentation>Cache behavior</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,350 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="types.xsd"/>
<xs:annotation>
<xs:documentation>Attributes allow inputs to read results of previous computations in the input document</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBoolean" mixed="true">
<xs:annotation>
<xs:documentation>By value or function evaliation</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:boolean">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdComplexValue">
<xs:annotation>
<xs:documentation>Complex number</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XslComplex">
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCorrelation" mixed="true">
<xs:simpleContent>
<xs:extension base="XslCorrelation">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdCorrelationVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdDate" mixed="true">
<xs:simpleContent>
<xs:extension base="xs:date">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdDateVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdDateTime" mixed="true">
<xs:simpleContent>
<xs:extension base="xs:dateTime">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdDateTimeVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdDouble" mixed="true">
<xs:annotation>
<xs:documentation>Double-precision number ( by value or reference ) </xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:double">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdDoubleVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdTenor" mixed="true">
<xs:simpleContent>
<xs:extension base="xs:duration">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdTenorVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdInteger" mixed="true">
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdIntegerVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdNonNegativeDouble" mixed="true">
<xs:annotation>
<xs:documentation>Non-negative double-precision number ( by value or reference ) </xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="XslNonNegativeDouble">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdNonNegativeDoubleVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdPositiveInteger" mixed="true">
<xs:simpleContent>
<xs:extension base="xs:positiveInteger">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdIntegerVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdPositiveDouble" mixed="true">
<xs:simpleContent>
<xs:extension base="XslPositiveDouble">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdPositiveDoubleVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdProbability" mixed="true">
<xs:simpleContent>
<xs:extension base="XslProbability">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdDoubleVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdString" mixed="true">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdSize">
<xs:simpleContent>
<xs:extension base="xs:unsignedInt">
<xs:attributeGroup ref="XsdValueAttributes"/>
<xs:attributeGroup ref="XsdSizeVariableGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Need simple schemas to restrict underlying ranges</xs:documentation>
</xs:annotation>
<xs:simpleType name="XslCorrelation">
<xs:annotation>
<xs:documentation>Bounded by -1.0 and 1.0 </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double">
<xs:minInclusive value="-1.0"/>
<xs:maxInclusive value="1.0"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XslNonNegativeDouble">
<xs:restriction base="xs:double">
<xs:minInclusive value="0.0"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XslPositiveDouble">
<xs:restriction base="xs:double">
<xs:minExclusive value="0.0"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XslProbability">
<xs:restriction base="xs:double">
<xs:minInclusive value="0.0"/>
<xs:maxInclusive value="1.0"/>
</xs:restriction>
</xs:simpleType>
<xs:annotation>
<xs:documentation>Attribute groups</xs:documentation>
</xs:annotation>
<xs:attributeGroup name="XsdValueAttributes">
<xs:attribute name="schemaID" type="xs:IDREF" use="optional">
<xs:annotation>
<xs:documentation>Referece to result of calculation schema</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="xpath" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Search inside the result schema</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="result" type="xs:boolean" use="optional" default="true">
<xs:annotation>
<xs:documentation>Search result, not enclosing schema</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdVariableGroup">
<xs:attribute name="variable" type="xs:boolean" use="optional" default="false">
<xs:annotation>
<xs:documentation>Is this part of the calibration? Default: false </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdCorrelationVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="XslCorrelation" use="optional">
<xs:annotation>
<xs:documentation>Minimum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="XslCorrelation" use="optional">
<xs:annotation>
<xs:documentation>Maximum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdDateVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="xs:date" use="optional">
<xs:annotation>
<xs:documentation>Smallest possible date (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="xs:date" use="optional">
<xs:annotation>
<xs:documentation>Largest possible date (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdDateTimeVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="xs:dateTime" use="optional">
<xs:annotation>
<xs:documentation>Smallest possible date (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="xs:dateTime" use="optional">
<xs:annotation>
<xs:documentation>Largest possible date (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdDoubleVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Minimum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Maximum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdEnumVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="include" use="optional">
<xs:annotation>
<xs:documentation>Search only these types</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:list itemType="xs:string"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="exclude" use="optional">
<xs:annotation>
<xs:documentation>Avoid these types </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:list itemType="xs:string"/>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdIntegerVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="xs:int" use="optional">
<xs:annotation>
<xs:documentation>Minimum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="xs:int" use="optional">
<xs:annotation>
<xs:documentation>Maximum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdNonNegativeDoubleVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="XslNonNegativeDouble" use="optional">
<xs:annotation>
<xs:documentation>Minimum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="XslNonNegativeDouble" use="optional">
<xs:annotation>
<xs:documentation>Maximum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdPositiveDoubleVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="XslPositiveDouble" use="optional">
<xs:annotation>
<xs:documentation>Minimum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="XslPositiveDouble" use="optional">
<xs:annotation>
<xs:documentation>Maximum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdPositiveIntegerVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="xs:positiveInteger" use="optional">
<xs:annotation>
<xs:documentation>Minimum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="xs:positiveInteger" use="optional">
<xs:annotation>
<xs:documentation>Maximum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdProbabilityVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="XslProbability" use="optional">
<xs:annotation>
<xs:documentation>Minimum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="XslProbability" use="optional">
<xs:annotation>
<xs:documentation>Maximum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdSizeVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="xs:unsignedInt" use="optional">
<xs:annotation>
<xs:documentation>Minimum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="xs:unsignedInt" use="optional">
<xs:annotation>
<xs:documentation>Maximum value (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="XsdTenorVariableGroup">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attribute name="min" type="xs:duration" use="optional">
<xs:annotation>
<xs:documentation>Smallest possible date (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="max" type="xs:duration" use="optional">
<xs:annotation>
<xs:documentation>Largest possible date (no default) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
</xs:schema>

View File

@@ -0,0 +1,980 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:altova="http://www.altova.com/xml-schema-extensions" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="result.xsd"/>
<xs:include schemaLocation="value.xsd"/>
<xs:annotation>
<xs:documentation>XSD version of a 1-D array of built-in types</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBooleanVector">
<xs:simpleContent>
<xs:extension base="XslBooleanVector">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdCharacterVector">
<xs:simpleContent>
<xs:extension base="XslCharacterVector">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdComplexVector">
<xs:annotation>
<xs:documentation>List of complex numbers</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XslComplexVector">
<xs:attributeGroup ref="XsdVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCorrelationVector">
<xs:simpleContent>
<xs:extension base="XslCorrelationVector">
<xs:attributeGroup ref="XsdCorrelationVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdDateVector">
<xs:simpleContent>
<xs:extension base="XslDateVector">
<xs:attributeGroup ref="XsdDateVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdDoubleVector">
<xs:simpleContent>
<xs:extension base="XslDoubleVector">
<xs:attributeGroup ref="XsdDoubleVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdIntegerVector">
<xs:simpleContent>
<xs:extension base="XslIntegerVector">
<xs:attributeGroup ref="XsdIntegerVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdNonNegativeDoubleVector">
<xs:simpleContent>
<xs:extension base="XslNonNegativeDoubleVector">
<xs:attributeGroup ref="XsdNonNegativeDoubleVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdPositiveDoubleVector">
<xs:simpleContent>
<xs:extension base="XslPositiveDoubleVector">
<xs:attributeGroup ref="XsdPositiveDoubleVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdPositiveIntegerVector">
<xs:simpleContent>
<xs:extension base="XslPositiveIntegerVector">
<xs:attributeGroup ref="XsdPositiveIntegerVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdProbabilityVector">
<xs:simpleContent>
<xs:extension base="XslProbabilityVector">
<xs:attributeGroup ref="XsdProbabilityVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdSizeVector">
<xs:simpleContent>
<xs:extension base="XslSizeVector">
<xs:attributeGroup ref="XsdSizeVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdStringVector">
<xs:simpleContent>
<xs:extension base="XslStringVector">
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdTenorVector">
<xs:simpleContent>
<xs:extension base="XslTenorVector">
<xs:attributeGroup ref="XsdTenorVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdTimeVector">
<xs:simpleContent>
<xs:extension base="XslTimeVector">
<xs:attributeGroup ref="XsdDateTimeVariableGroup"/>
<xs:attributeGroup ref="XsdValueAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Any-of-the-above (can;t use polymorphism since these are mostly simple types)</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdVectorChoice">
<xs:annotation>
<xs:documentation>Choice of vector types</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="boolean" type="XslBooleanVector">
<xs:annotation>
<xs:documentation>Boolean vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="character" type="XsdCharacterVector">
<xs:annotation>
<xs:documentation>Character vector (string)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="complex" type="XsdComplexVector">
<xs:annotation>
<xs:documentation>Complex vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="date" type="XslDateVector">
<xs:annotation>
<xs:documentation>Date vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="double" type="XslDoubleVector">
<xs:annotation>
<xs:documentation>Double vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="integer" type="XslIntegerVector">
<xs:annotation>
<xs:documentation>Integer vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="size" type="XslSizeVector">
<xs:annotation>
<xs:documentation>Unsigned integer vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="string" type="XsdStringVector">
<xs:annotation>
<xs:documentation>String vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tenor" type="XslTenorVector">
<xs:annotation>
<xs:documentation>Duration vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="time" type="XslTimeVector">
<xs:annotation>
<xs:documentation>Date/time vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:annotation>
<xs:documentation>Named vectors</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdNamedBooleanVector">
<xs:simpleContent>
<xs:extension base="XslBooleanVector">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdNamedComplexVector">
<xs:complexContent>
<xs:extension base="XsdComplexVector">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdNamedDateVector">
<xs:simpleContent>
<xs:extension base="XslDateVector">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdNamedDoubleVector">
<xs:simpleContent>
<xs:extension base="XslDoubleVector">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdNamedIntegerVector">
<xs:simpleContent>
<xs:extension base="XslIntegerVector">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdNamedSizeVector">
<xs:simpleContent>
<xs:extension base="XslSizeVector">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdNamedStringVector">
<xs:complexContent>
<xs:extension base="XsdStringVector">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdNamedTenorVector">
<xs:simpleContent>
<xs:extension base="XslTenorVector">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdNamedTimeVector">
<xs:simpleContent>
<xs:extension base="XslTimeVector">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Sparse vectors</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdSparseVector" abstract="true">
<xs:annotation>
<xs:documentation>Abstract base class </xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="index" type="XslSizeVector"/>
</xs:sequence>
<xs:attribute name="size" type="xs:nonNegativeInteger" use="required"/>
</xs:complexType>
<xs:complexType name="XsdSparseDoubleVector" abstract="false">
<xs:complexContent>
<xs:extension base="XsdSparseVector">
<xs:sequence>
<xs:element name="value" type="XslDoubleVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Smart vectors</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdSmartDateVector">
<xs:simpleContent>
<xs:extension base="XslDateVector">
<xs:attributeGroup ref="XsdSmartVectorGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdSmartDoubleVector">
<xs:simpleContent>
<xs:extension base="XslDoubleVector">
<xs:attributeGroup ref="XsdSmartVectorGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdSmartIntegerVector">
<xs:simpleContent>
<xs:extension base="XslIntegerVector">
<xs:attributeGroup ref="XsdSmartVectorGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdSmartTenorVector">
<xs:simpleContent>
<xs:extension base="XslTenorVector">
<xs:attributeGroup ref="XsdSmartVectorGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdSmartTimeVector">
<xs:simpleContent>
<xs:extension base="XslTimeVector">
<xs:attributeGroup ref="XsdSmartVectorGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Results</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdVectorResult" abstract="true">
<xs:annotation>
<xs:documentation>Abstract base class</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdResult"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdBooleanVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of booleans</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslBooleanVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCharacterVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of booleans</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XsdCharacterVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdComplexVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of booleans</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XsdComplexVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdCorrelationVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of booleans</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslCorrelationVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDateVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of dates</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslDateVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDoubleVectorResult">
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslDoubleVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdIntegerVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of booleans</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslIntegerVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdNonNegativeDoubleVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of booleans</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslNonNegativeDoubleVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdPositiveDoubleVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of booleans</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslPositiveDoubleVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdPositiveIntegerVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of booleans</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslPositiveIntegerVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdProbabilityVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of booleans</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslProbabilityVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSizeVectorResult">
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslSizeVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdStringVectorResult">
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XsdSizeVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdQuantileVector">
<xs:simpleContent>
<xs:extension base="XsdDoubleVector">
<xs:attribute name="percentile" type="XslProbability" use="required">
<xs:annotation>
<xs:documentation>Between 0.0 and 1.0</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdTenorVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of xs:dateTimes</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslTenorVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdTimeVectorResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of xs:dateTimes</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:sequence>
<xs:element name="value" type="XslTimeVector"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdVectorChoiceResult" abstract="false">
<xs:annotation>
<xs:documentation>Returns list of xs:dateTimes</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="XsdVectorResult">
<xs:choice>
<xs:element name="boolean" type="XsdBooleanVector">
<xs:annotation>
<xs:documentation>Boolean vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="character" type="XsdCharacterVector">
<xs:annotation>
<xs:documentation>Character vector </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="complex" type="XsdComplexVector">
<xs:annotation>
<xs:documentation>Complex vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="date" type="XsdDateVector">
<xs:annotation>
<xs:documentation>Date vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="double" type="XsdDoubleVector">
<xs:annotation>
<xs:documentation>Double vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="integer" type="XsdIntegerVector">
<xs:annotation>
<xs:documentation>Integer vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="size" type="XsdSizeVector">
<xs:annotation>
<xs:documentation>Unsigned integer vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="string" type="XsdStringVector">
<xs:annotation>
<xs:documentation>String vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tenor" type="XsdTenorVector">
<xs:annotation>
<xs:documentation>Duration vector</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="time" type="XsdTimeVector">
<xs:annotation>
<xs:documentation>Date/time vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Vector map results</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBooleanVectorMapResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNamedBooleanVector" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdComplexVectorMapResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNamedComplexVector" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDateVectorMapResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNamedDateVector" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDoubleVectorMapResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNamedDoubleVector" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdIntegerVectorMapResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNamedIntegerVector" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSizeVectorMapResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNamedSizeVector" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdStringVectorMapResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNamedStringVector" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdTenorVectorMapResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNamedTenorVector" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdTimeVectorMapResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="value" type="XsdNamedTimeVector" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Vector lists</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBooleanVectorList">
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:sequence>
<xs:element name="row" type="XsdBooleanVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdComplexVectorList">
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:sequence>
<xs:element name="row" type="XsdComplexVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDateVectorList">
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:sequence>
<xs:element name="row" type="XsdDateVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDoubleVectorList">
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:sequence>
<xs:element name="row" type="XsdDoubleVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdIntegerVectorList">
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:sequence>
<xs:element name="row" type="XsdIntegerVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSizeVectorList">
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:sequence>
<xs:element name="row" type="XsdSizeVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdTenorVectorList">
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:sequence>
<xs:element name="row" type="XsdTenorVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdTimeVectorList">
<xs:complexContent>
<xs:extension base="XsdDataSchema">
<xs:sequence>
<xs:element name="row" type="XsdTimeVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Vector list results</xs:documentation>
</xs:annotation>
<xs:complexType name="XsdBooleanVectorListResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="row" type="XsdBooleanVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdComplexVectorListResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="row" type="XsdComplexVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDateVectorListResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="row" type="XsdDateVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdDoubleVectorListResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="row" type="XsdDoubleVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdIntegerVectorListResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="row" type="XsdIntegerVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdSizeVectorListResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="row" type="XsdSizeVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdTenorVectorListResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="row" type="XsdTenorVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="XsdTimeVectorListResult">
<xs:complexContent>
<xs:extension base="XsdResult">
<xs:sequence>
<xs:element name="row" type="XsdTimeVector" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Row vector</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:annotation>
<xs:documentation>Helper schemas </xs:documentation>
</xs:annotation>
<xs:simpleType name="XslBooleanVector">
<xs:list itemType="xs:boolean"/>
</xs:simpleType>
<xs:simpleType name="XslCharacterVector">
<xs:list itemType="XsdCharacter"/>
</xs:simpleType>
<xs:complexType name="XslComplexVector">
<xs:annotation>
<xs:documentation>List of complex numbers</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="real" type="XslDoubleVector">
<xs:annotation>
<xs:documentation>List of real parts</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="imag" type="XslDoubleVector">
<xs:annotation>
<xs:documentation>List of imaginary parts</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="XslCorrelationVector">
<xs:annotation>
<xs:documentation>List of doubles (unordered) </xs:documentation>
</xs:annotation>
<xs:list itemType="XslCorrelation"/>
</xs:simpleType>
<xs:simpleType name="XslDateVector">
<xs:annotation>
<xs:documentation>List of dates (unordered) </xs:documentation>
</xs:annotation>
<xs:list itemType="xs:date"/>
</xs:simpleType>
<xs:simpleType name="XslDoubleVector">
<xs:annotation>
<xs:documentation>List of doubles (unordered) </xs:documentation>
</xs:annotation>
<xs:list itemType="xs:double"/>
</xs:simpleType>
<xs:simpleType name="XslIntegerVector">
<xs:list itemType="xs:int"/>
</xs:simpleType>
<xs:simpleType name="XslNonNegativeDoubleVector">
<xs:annotation>
<xs:documentation>List of doubles (unordered) </xs:documentation>
</xs:annotation>
<xs:list itemType="XslNonNegativeDouble"/>
</xs:simpleType>
<xs:simpleType name="XslPositiveDoubleVector">
<xs:annotation>
<xs:documentation>List of doubles (unordered) </xs:documentation>
</xs:annotation>
<xs:list itemType="XslPositiveDouble"/>
</xs:simpleType>
<xs:simpleType name="XslPositiveIntegerVector">
<xs:annotation>
<xs:documentation>List of doubles (unordered) </xs:documentation>
</xs:annotation>
<xs:list itemType="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="XslProbabilityVector">
<xs:annotation>
<xs:documentation>List of doubles (unordered) </xs:documentation>
</xs:annotation>
<xs:list itemType="XslProbability"/>
</xs:simpleType>
<xs:simpleType name="XslSizeVector">
<xs:annotation>
<xs:documentation>List of unsigned integers</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:unsignedInt"/>
</xs:simpleType>
<xs:simpleType name="XslStringVector">
<xs:annotation>
<xs:documentation>List of strings (unordered) </xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="XslTenorVector">
<xs:list itemType="xs:duration"/>
</xs:simpleType>
<xs:simpleType name="XslTimeVector">
<xs:annotation>
<xs:documentation>List of xs:dateTime values (unordered) </xs:documentation>
</xs:annotation>
<xs:list itemType="xs:dateTime"/>
</xs:simpleType>
<xs:annotation>
<xs:documentation>Attributes</xs:documentation>
</xs:annotation>
<xs:attributeGroup name="XsdSmartVectorGroup">
<xs:attribute name="start" type="xs:unsignedInt" use="optional" default="0">
<xs:annotation>
<xs:documentation>Starting index ( Default : 0 ) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="stride" type="xs:positiveInteger" use="optional" default="1">
<xs:annotation>
<xs:documentation>Stride (Default: 1) </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="repeat" type="xs:unsignedInt" use="optional" default="0">
<xs:annotation>
<xs:documentation>Starting index ( Default : 0 ) </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
</xs:schema>

View File

@@ -0,0 +1,369 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="../xsd-core/types.xsd"/>
<xs:simpleType name="XsdAggregateType">
<xs:annotation>
<xs:documentation>Maximum, minimum, average, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="AVERAGE"/>
<xs:enumeration value="DECILE"/>
<xs:enumeration value="MAXIMUM"/>
<xs:enumeration value="MINIMUM"/>
<xs:enumeration value="TOTAL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdAverageType">
<xs:annotation>
<xs:documentation>Arithmetic, geometric, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="ARITHMETIC"/>
<xs:enumeration value="GEOMETRIC"/>
<xs:enumeration value="HARMONIC"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdBinomialType">
<xs:annotation>
<xs:documentation>Binomial solution methods</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="ADDITIVE_EQP"/>
<xs:enumeration value="COX_ROSS_RUBINSTEIN"/>
<xs:enumeration value="JARROW_RUDD"/>
<xs:enumeration value="JOSHI4"/>
<xs:enumeration value="LEISEN_REIMER"/>
<xs:enumeration value="TIAN"/>
<xs:enumeration value="TRIGEORGIS"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdConjugateGradientType">
<xs:annotation>
<xs:documentation>Conjugate gradient solvers </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="FLETCHER_REEVES"/>
<xs:enumeration value="POLAK_RIBIERE"/>
<xs:enumeration value="BROYDEN_FLETCHER_GOLDFARB_SHANNO"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdCopulaType">
<xs:restriction base="xs:string">
<xs:enumeration value="ARCHIMEDEAN"/>
<xs:enumeration value="DEPENDENT"/>
<xs:enumeration value="ELLIPTIC"/>
<xs:enumeration value="INDEPENDENT"/>
<xs:enumeration value="EXPONENTIAL"/>
<xs:enumeration value="MIXTURE"/>
<xs:enumeration value="RISK"/>
<xs:enumeration value="VINE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdCorrelationType">
<xs:restriction base="xs:string">
<xs:enumeration value="KENDALL"/>
<xs:enumeration value="PEARSON"/>
<xs:enumeration value="SPEARMAN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDifferenceType">
<xs:annotation>
<xs:documentation>Finite-difference types</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="BACKWARD"/>
<xs:enumeration value="FORWARD"/>
<xs:enumeration value="CENTRAL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdDistributionType">
<xs:annotation>
<xs:documentation>One- and multi-dimensional distributions</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="ASYMPTOTIC"/>
<xs:enumeration value="BERNOULLI"/>
<xs:enumeration value="BETA"/>
<xs:enumeration value="BINOMIAL"/>
<xs:enumeration value="CAUCHY"/>
<xs:enumeration value="CHI_SQUARE"/>
<xs:enumeration value="COMPOUND_POISSON"/>
<xs:enumeration value="CONDITIONAL"/>
<xs:enumeration value="CONVOLUTION"/>
<xs:enumeration value="COPULA"/>
<xs:enumeration value="COPULA_DISTRIBUTION"/>
<xs:enumeration value="DISCRETE"/>
<xs:enumeration value="EMPIRICAL"/>
<xs:enumeration value="EXPONENTIAL"/>
<xs:enumeration value="EXP_POWER"/>
<xs:enumeration value="EXTREME_VALUE"/>
<xs:enumeration value="FISHER_F"/>
<xs:enumeration value="GAMMA"/>
<xs:enumeration value="GENERALIZED_INVERSE_GAUSSIAN"/>
<xs:enumeration value="GENERIC"/>
<xs:enumeration value="GUMBEL"/>
<xs:enumeration value="INVERSE_CHI_SQUARE"/>
<xs:enumeration value="INVERSE_GAMMA"/>
<xs:enumeration value="INVERSE_GAUSSIAN"/>
<xs:enumeration value="LAPLACE"/>
<xs:enumeration value="LEVY_STABLE"/>
<xs:enumeration value="LHPA_GAUSSIAN"/>
<xs:enumeration value="LOGARITHMIC"/>
<xs:enumeration value="LOGISTIC"/>
<xs:enumeration value="LOGNORMAL"/>
<xs:enumeration value="MIXTURE"/>
<xs:enumeration value="NORMAL"/>
<xs:enumeration value="NORMAL_GAMMA"/>
<xs:enumeration value="NORMAL_INVERSE_GAUSSIAN"/>
<xs:enumeration value="PARETO"/>
<xs:enumeration value="POISSON"/>
<xs:enumeration value="RAYLEIGH"/>
<xs:enumeration value="SIMPLE"/>
<xs:enumeration value="SPECIAL"/>
<xs:enumeration value="STUDENT_T"/>
<xs:enumeration value="TRIANGULAR"/>
<xs:enumeration value="TRUNCATED"/>
<xs:enumeration value="UNIFORM"/>
<xs:enumeration value="VARIANCE_GAMMA"/>
<xs:enumeration value="WEIBULL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdEndpointType">
<xs:annotation>
<xs:documentation>Which endpoints (if any) to be included</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="BOTH"/>
<xs:enumeration value="LEFT"/>
<xs:enumeration value="NONE"/>
<xs:enumeration value="RIGHT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdEvolveType">
<xs:annotation>
<xs:documentation>How to evaluate coefficients in MC time-step evolution</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="EULER"/>
<xs:enumeration value="EULER_END"/>
<xs:enumeration value="EXACT"/>
<xs:enumeration value="MILSTEIN"/>
<xs:enumeration value="PREDICTOR_CORRECTOR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdExtrapolate">
<xs:annotation>
<xs:documentation>Extrapolate outside original range</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:enumeration value="CONSTANT"/>
<xs:enumeration value="LINEAR"/>
<xs:enumeration value="NONE"/>
<xs:enumeration value="ZERO"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdGammaRngType">
<xs:annotation>
<xs:documentation>RNGs for gamma distribution</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="KNUTH"/>
<xs:enumeration value="MARSAGLIA_TSANG"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdInterpolateType">
<xs:annotation>
<xs:documentation>Corresponding to 'details' above</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="ABCD"/>
<xs:enumeration value="BACKWARD_FLAT"/>
<xs:enumeration value="BASIS_SPLINE"/>
<xs:enumeration value="CONVEX_MONOTONE"/>
<xs:enumeration value="CUBIC_SPLINE"/>
<xs:enumeration value="FORWARD_FLAT"/>
<xs:enumeration value="LINEAR"/>
<xs:enumeration value="LOGLINEAR"/>
<xs:enumeration value="SABR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdLinearSolverType">
<xs:annotation>
<xs:documentation>LU decomp, Cholesky, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="BACKWARD"/>
<xs:enumeration value="CHOLESKY"/>
<xs:enumeration value="CONJUGATE_GRADIENT"/>
<xs:enumeration value="FORWARD"/>
<xs:enumeration value="GENERALIZED_MINIMUM_RESIDUAL"/>
<xs:enumeration value="LEAST_SQUARES"/>
<xs:enumeration value="LU_DECOMP"/>
<xs:enumeration value="QR_DECOMP"/>
<xs:enumeration value="PSEUDO_SQRT"/>
<xs:enumeration value="STABLE_BICONGUGATE_GRADIENT"/>
<xs:enumeration value="SV_DECOMP"/>
<xs:enumeration value="VANDERMONDE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdMinLinearBasis">
<xs:annotation>
<xs:documentation>Initial LP basis</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="ADVANCED"/>
<xs:enumeration value="BIXBY"/>
<xs:enumeration value="STANDARD"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdMinLinearMethod">
<xs:annotation>
<xs:documentation>Linear programming methods</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="INTERIOR"/>
<xs:enumeration value="SIMPLEX"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdMinLinearScale">
<xs:annotation>
<xs:documentation>scaling for linear programming</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="AUTOMATIC"/>
<xs:enumeration value="EQUILIBRATION"/>
<xs:enumeration value="GEOMETRIC_MEAN"/>
<xs:enumeration value="NONE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdMomentType">
<xs:annotation>
<xs:documentation>First 4 moments</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="MEAN"/>
<xs:enumeration value="VARIANCE"/>
<xs:enumeration value="SKEWNESS"/>
<xs:enumeration value="KURTOSIS"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdNormalRngType">
<xs:annotation>
<xs:documentation>RNGs for normal distribution</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="BOX_MULLER"/>
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="RATIO"/>
<xs:enumeration value="ZIGGURAT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdPathScheme">
<xs:annotation>
<xs:documentation>Time-step schemes for path generation</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="EULER"/>
<xs:enumeration value="MILSTEIN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdPseudoRandomType">
<xs:annotation>
<xs:documentation>Pseudo RNG types</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="ECUYER"/>
<xs:enumeration value="KNUTH"/>
<xs:enumeration value="FIBONACCI"/>
<xs:enumeration value="GERMAIN"/>
<xs:enumeration value="MERSENNE"/>
<xs:enumeration value="MINSTD"/>
<xs:enumeration value="RANLUX"/>
<xs:enumeration value="TAUSWORTHE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdRandomType">
<xs:annotation>
<xs:documentation>Pseuo-random, quasi-random, etc</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="PSEUDO"/>
<xs:enumeration value="QUASI"/>
<xs:enumeration value="TRUE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdQuasiRandomType">
<xs:annotation>
<xs:documentation>For low-discrepancy RNGs ... </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="FAURE"/>
<xs:enumeration value="HALTON"/>
<xs:enumeration value="NIEDERREITER"/>
<xs:enumeration value="SOBOL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSalvageType">
<xs:annotation>
<xs:documentation>For pseudo square-root calculation</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="NONE"/>
<xs:enumeration value="SPECTRAL"/>
<xs:enumeration value="HYPERSPHERE"/>
<xs:enumeration value="LOWER_DIAGONAL"/>
<xs:enumeration value="HIGHAM"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSingularValueType">
<xs:annotation>
<xs:documentation>Singular value decomposition</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="JACOBI"/>
<xs:enumeration value="MODIFIED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdSobolDirectionIntegers">
<xs:annotation>
<xs:documentation>Sobol QRNG direction integers</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="JAECKEL"/>
<xs:enumeration value="JOE_KUO_D5"/>
<xs:enumeration value="JOE_KUO_D6"/>
<xs:enumeration value="JOE_KUO_D7"/>
<xs:enumeration value="KUO"/>
<xs:enumeration value="KUO2"/>
<xs:enumeration value="KUO3"/>
<xs:enumeration value="SOBOL_LEVITAN"/>
<xs:enumeration value="SOBOL_LEVITAN_LEMIEUX"/>
<xs:enumeration value="UNIT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="XsdWaveletType">
<xs:annotation>
<xs:documentation>FFT and other transforms</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="BSPLINE"/>
<xs:enumeration value="DAUBECHIES"/>
<xs:enumeration value="HAAR"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Michael Edward Rose (OmniMarkets) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="enums.xsd"/>
<xs:include schemaLocation="../xsd-core/value.xsd"/>
<xs:include schemaLocation="../xsd-core/matrix.xsd"/>
<xs:include schemaLocation="../xsd-core/bounds.xsd"/>
<xs:complexType name="XsdErrorBounds">
<xs:annotation>
<xs:documentation>Numerical error bounds</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="absolute" type="XsdPositiveDouble" default="1.0e-4" minOccurs="0">
<xs:annotation>
<xs:documentation>Absolute error bound - must be positive</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="relative" type="XsdPositiveDouble" default="1.0e-4" minOccurs="0">
<xs:annotation>
<xs:documentation>Relative error bound - must be positive</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdSmoothnessPenalty">
<xs:annotation>
<xs:documentation>Regulates curve or surface smoothness in least-squares fitting. The penalty measures the variation or curvature of the curve or surface to be approxumated and is added to the least-squares objective function. </xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="variation" type="XsdNonNegativeDouble" default="0.0" minOccurs="0">
<xs:annotation>
<xs:documentation>Variation penalty. Penalizes integral of squared first derivative.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="curvature" type="XsdNonNegativeDouble" default="0.0" minOccurs="0">
<xs:annotation>
<xs:documentation>Curvature penalty. Penalizes integral of squared second derivative.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="mesh" type="XsdPositiveDouble" default="0.25" minOccurs="0">
<xs:annotation>
<xs:documentation>Required for discrete approximation. Default: 0.25</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdDoubleCompare">
<xs:sequence>
<xs:element name="exact" type="xs:double">
<xs:annotation>
<xs:documentation>Analytic value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="approx" type="xs:double">
<xs:annotation>
<xs:documentation>Numerical approximation</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="error" type="xs:double" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdDoubleVectorCompare">
<xs:sequence>
<xs:element name="exact" type="XsdDoubleVector">
<xs:annotation>
<xs:documentation>Analytic value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="approx" type="XsdDoubleVector">
<xs:annotation>
<xs:documentation>Numerical approximation</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="error" type="XsdDoubleVector" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdDoubleMatrixCompare">
<xs:sequence>
<xs:element name="exact" type="XsdDoubleMatrix">
<xs:annotation>
<xs:documentation>Analytic value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="approx" type="XsdDoubleMatrix">
<xs:annotation>
<xs:documentation>Numerical approximation</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="error" type="XsdDoubleMatrix" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="XsdRounding">
<xs:simpleContent>
<xs:extension base="XsdPositiveDouble">
<xs:attribute name="type" type="XsdRoundType" default="NEAREST">
<xs:annotation>
<xs:documentation>Default: NEAREST</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="XsdSymmetricDoubleMatrixCompare">
<xs:sequence>
<xs:element name="exact" type="XsdSymmetricDoubleMatrix">
<xs:annotation>
<xs:documentation>Analytic value</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="approx" type="XsdSymmetricDoubleMatrix">
<xs:annotation>
<xs:documentation>Numerical approximation</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="error" type="XsdSymmetricDoubleMatrix" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://ibml.jel.com/2005" xmlns:ibml="http://ibml.jel.com/2005" xmlns:FpML="http://www.fpml.org/2005/FpML-4-2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ibml.jel.com/2005" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:import namespace="http://www.fpml.org/2005/FpML-4-2" schemaLocation="./fpml.xsd" /><!-- http://www.fpml.org/2005/FpML-4-2 -->
<xsd:complexType name="ContractAmended">
<xsd:complexContent>
<xsd:extension base="FpML:NotificationMessage">
<xsd:sequence>
<xsd:element name="amendment" type="AmendContract"/>
<xsd:element name="party" type="FpML:Party" minOccurs="2" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ContractHeader">
<xsd:complexContent>
<xsd:extension base="FpML:ContractHeader">
<xsd:sequence>
<xsd:element name="xyz" type="xsd:integer" minOccurs="0" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="Party">
<xsd:complexContent>
<xsd:extension base="FpML:Party">
<xsd:sequence>
<xsd:element name="residenceCountry" type="FpML:Country" minOccurs="0">
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="contractAmended" type="ibml:ContractAmended">
</xsd:element>
<xsd:complexType name="AmendContract">
<xsd:complexContent>
<xsd:extension base="FpML:ChangeContract">
<xsd:sequence>
<xsd:element name="revisedTradeReference" type="FpML:PartyTradeIdentifiers" minOccurs="0">
</xsd:element>
<xsd:element name="revisedContract" type="FpML:Contract">
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by Farzad Moshfeghi (J P Morgan Victoria Embankment) -->
<!-- http://www.fpml.org/2005/FpML-4-2 ./fpml.xsd -->
<FpML xmlns="http://www.fpml.org/2005/FpML-4-2" xmlns:ibml="http://ibml.jel.com/2005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ibml.jel.com/2005 ./ibml.xsd" xsi:type="ibml:ContractAmended" version="4-2">
<header xmlns="http://www.fpml.org/2005/FpML-4-2">
<messageId messageIdScheme="http://www.abc.com/coding-scheme/message-id">ABC00000000120060707105612</messageId>
<sentBy partyIdScheme="http://www.fpml.org/ext/iso9362">ABCAGB2L</sentBy>
<sendTo partyIdScheme="http://www.fpml.org/ext/iso9362">CHASGB2L</sendTo>
<creationTimestamp>2006-07-07T10:56:12+01:00</creationTimestamp>
</header>
<validation></validation>
<ibml:amendment xmlns:ibml="http://ibml.jel.com/2005">
<contractReference xmlns="http://www.fpml.org/2005/FpML-4-2">
<identifier>
<partyReference href="ABC"/>
<contractId contractIdScheme="ABCcontracts">123456</contractId>
</identifier>
</contractReference>
<date xmlns="http://www.fpml.org/2005/FpML-4-2">2007-01-12</date>
<effectiveDate xmlns="http://www.fpml.org/2005/FpML-4-2">2007-01-13</effectiveDate>
<ibml:revisedContract>
<header xsi:type="ibml:ContractHeader" xmlns="http://www.fpml.org/2005/FpML-4-2">
<identifier>
<partyReference href="ABC"/>
<versionedContractId>
<contractId contractIdScheme="http://www.abc.com/coding-scheme/contract-id">CDI290204</contractId>
<version>1</version>
</versionedContractId>
</identifier>
<contractDate>2006-07-07</contractDate>
<ibml:xyz>123</ibml:xyz>
</header>
<creditDefaultSwap xmlns="http://www.fpml.org/2005/FpML-4-2">
<productType>CREDIT-SWAP-SINGLE</productType>
<generalTerms>
<effectiveDate>
<unadjustedDate>2006-10-13</unadjustedDate>
<dateAdjustments>
<businessDayConvention>MODFOLLOWING</businessDayConvention>
<businessCenters>
<businessCenter>USNY</businessCenter>
</businessCenters>
</dateAdjustments>
</effectiveDate>
<scheduledTerminationDate>
<adjustableDate>
<unadjustedDate>2011-12-20</unadjustedDate>
<dateAdjustments>
<businessDayConvention>MODFOLLOWING</businessDayConvention>
<businessCenters>
<businessCenter>USNY</businessCenter>
</businessCenters>
</dateAdjustments>
</adjustableDate>
</scheduledTerminationDate>
<sellerPartyReference href="JEL"/>
<buyerPartyReference href="ABC"/>
<referenceInformation>
<referenceEntity id="referenceEntityID">
<entityName>REP OF INDONESIA</entityName>
<entityId entityIdScheme="http://www.fpml.org/spec/2003/entity-id-RED-1-0">4F247D</entityId>
</referenceEntity>
<referenceObligation>
<bond>
<instrumentId instrumentIdScheme="http://www.fpml.org/spec/2002/instrument-id-ISIN-1-0">USY20721AA74</instrumentId>
<couponRate>6.75</couponRate>
<maturity>2014-03-10</maturity>
</bond>
<primaryObligorReference href="referenceEntityID"/>
<guarantorReference href="referenceEntityID"/>
</referenceObligation>
<allGuarantees>true</allGuarantees>
<referencePrice>1.52</referencePrice>
</referenceInformation>
</generalTerms>
<feeLeg>
<periodicPayment>
<paymentFrequency>
<periodMultiplier>3</periodMultiplier>
<period>M</period>
</paymentFrequency>
<firstPaymentDate>2006-12-20</firstPaymentDate>
<lastRegularPaymentDate>2011-12-20</lastRegularPaymentDate>
<rollConvention>NONE</rollConvention>
<fixedAmountCalculation>
<calculationAmount>
<currency>USD</currency>
<amount>1555000.00</amount>
</calculationAmount>
<fixedRate>0.0152</fixedRate>
<dayCountFraction>ACT/360</dayCountFraction>
</fixedAmountCalculation>
</periodicPayment>
</feeLeg>
<protectionTerms>
<calculationAmount>
<currency>USD</currency>
<amount>1555000.00</amount>
</calculationAmount>
<creditEvents>
<bankruptcy/>
<failureToPay>
<paymentRequirement>
<currency>USD</currency>
<amount>0</amount>
</paymentRequirement>
</failureToPay>
<restructuring>
<restructuringType restructuringScheme="http://www.fpml.org/2003/restructuring-1-0">ModModR</restructuringType>
</restructuring>
<creditEventNotice>
<notifyingParty>
<buyerPartyReference href="ABC"/>
<sellerPartyReference href="JEL"/>
</notifyingParty>
<publiclyAvailableInformation>
<standardPublicSources/>
<publicSource/>
<specifiedNumber>2</specifiedNumber>
</publiclyAvailableInformation>
</creditEventNotice>
</creditEvents>
<obligations>
<category>BorrowedMoney</category>
</obligations>
</protectionTerms>
<cashSettlementTerms>
<settlementCurrency>USD</settlementCurrency>
<cashSettlementBusinessDays>3</cashSettlementBusinessDays>
<cashSettlementAmount>
<currency>USD</currency>
<amount>1000</amount>
</cashSettlementAmount>
<accruedInterest>false</accruedInterest>
</cashSettlementTerms>
</creditDefaultSwap>
<documentation xmlns="http://www.fpml.org/2005/FpML-4-2">
<contractualDefinitions>ISDA2003Credit</contractualDefinitions>
<contractualSupplement>ISDA2003CreditMay2003</contractualSupplement>
</documentation>
</ibml:revisedContract>
</ibml:amendment>
<ibml:party id="ABC" xmlns:ibml="http://ibml.jel.com/2005">
<partyId partyIdScheme="http://www.fpml.org/ext/iso9362" xmlns="http://www.fpml.org/2005/FpML-4-2">ABCAGB2L</partyId>
<partyName xmlns="http://www.fpml.org/2005/FpML-4-2">ABC LIMITED</partyName>
<account id="ClientBook" xmlns="http://www.fpml.org/2005/FpML-4-2">
<accountId accountIdScheme="http://www.client.com/coding-scheme/sub-fund-id">ABC-BOOK1</accountId>
<accountName>CDS Book</accountName>
</account>
<account id="primaryAct1" xmlns="http://www.fpml.org/2005/FpML-4-2">
<accountId accountIdScheme="http://www.client.com/coding-scheme/fund-id">PRIM_450</accountId>
<accountName>PRIMARY_ACCOUNT</accountName>
</account>
</ibml:party>
<ibml:party id="JEL" xmlns:ibml="http://ibml.jel.com/2005">
<partyId partyIdScheme="http://www.fpml.org/ext/iso9362" xmlns="http://www.fpml.org/2005/FpML-4-2">CHASUS33</partyId>
<partyName xmlns="http://www.fpml.org/2005/FpML-4-2">JELC</partyName>
</ibml:party>
</FpML>

View File

@@ -0,0 +1,345 @@
<xsd:schema targetNamespace="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" jxb:version="1.0" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb">
<xsd:annotation>
<xsd:appinfo>
<jxb:schemaBindings>
<jxb:package name="com.jpmorgan.dsig" />
<jxb:nameXmlTransform>
<jxb:typeName suffix="Type" />
<jxb:elementName suffix="Element" />
</jxb:nameXmlTransform>
</jxb:schemaBindings>
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType name="SignatureType">
<xsd:sequence>
<xsd:element ref="dsig:SignedInfo" />
<xsd:element ref="dsig:SignatureValue" />
<xsd:element minOccurs="0" maxOccurs="1" ref="dsig:KeyInfo" />
<xsd:element minOccurs="0" maxOccurs="unbounded" ref="dsig:Object" />
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="IdAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="TransformsType">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" ref="dsig:Transform" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TransformType">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any processContents="lax" namespace="##other" />
<xsd:element name="XPath" type="xsd:string" />
</xsd:choice>
<xsd:attribute name="Algorithm" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="AlgorithmAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="X509IssuerSerialType">
<xsd:sequence>
<xsd:element name="X509IssuerName" type="xsd:string" />
<xsd:element name="X509SerialNumber" type="xsd:integer" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RetrievalMethodType">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" ref="dsig:Transforms" />
</xsd:sequence>
<xsd:attribute name="URI" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="URIAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="Type" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="TypeAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="KeyInfoType">
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="dsig:KeyName" />
<xsd:element ref="dsig:KeyValue" />
<xsd:element ref="dsig:RetrievalMethod" />
<xsd:element ref="dsig:X509Data" />
<xsd:element ref="dsig:PGPData" />
<xsd:element ref="dsig:SPKIData" />
<xsd:element ref="dsig:MgmtData" />
<xsd:any processContents="lax" namespace="##other" />
</xsd:choice>
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="IdAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="KeyValueType">
<xsd:choice>
<xsd:element ref="dsig:DSAKeyValue" />
<xsd:element ref="dsig:RSAKeyValue" />
<xsd:any processContents="lax" namespace="##other" />
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="X509DataType">
<xsd:sequence maxOccurs="unbounded">
<xsd:choice>
<xsd:element name="X509IssuerSerial" type="dsig:X509IssuerSerialType" />
<xsd:element name="X509SKI" type="xsd:base64Binary" />
<xsd:element name="X509SubjectName" type="xsd:string" />
<xsd:element name="X509Certificate" type="xsd:base64Binary" />
<xsd:element name="X509CRL" type="xsd:base64Binary" />
<xsd:any processContents="lax" namespace="##other" />
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PGPDataType">
<xsd:choice>
<xsd:sequence>
<xsd:element name="PGPKeyID" type="xsd:base64Binary" />
<xsd:element minOccurs="0" maxOccurs="1" name="PGPKeyPacket" type="xsd:base64Binary" />
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other" />
</xsd:sequence>
<xsd:sequence>
<xsd:element name="PGPKeyPacket" type="xsd:base64Binary" />
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other" />
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="SPKIDataType">
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="SPKISexp" type="xsd:base64Binary" />
<xsd:any minOccurs="0" maxOccurs="1" processContents="lax" namespace="##other" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SignatureMethodType">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="HMACOutputLength" type="dsig:HMACOutputLengthType" />
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other" />
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="AlgorithmAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="SignaturePropertiesType">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" ref="dsig:SignatureProperty" />
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="IdAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="SignaturePropertyType">
<xsd:choice maxOccurs="unbounded">
<xsd:any processContents="lax" namespace="##other" />
</xsd:choice>
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="IdAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="Target" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="TargetAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="DSAKeyValueType">
<xsd:sequence>
<xsd:sequence minOccurs="0" maxOccurs="1">
<xsd:element name="P" type="dsig:CryptoBinary" />
<xsd:element name="Q" type="dsig:CryptoBinary" />
</xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="G" type="dsig:CryptoBinary" />
<xsd:element name="Y" type="dsig:CryptoBinary" />
<xsd:element minOccurs="0" maxOccurs="1" name="J" type="dsig:CryptoBinary" />
<xsd:sequence minOccurs="0" maxOccurs="1">
<xsd:element name="Seed" type="dsig:CryptoBinary" />
<xsd:element name="PgenCounter" type="dsig:CryptoBinary" />
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RSAKeyValueType">
<xsd:sequence>
<xsd:element name="Modulus" type="dsig:CryptoBinary" />
<xsd:element name="Exponent" type="dsig:CryptoBinary" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ManifestType">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" ref="dsig:Reference" />
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="IdAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="ReferenceType">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" ref="dsig:Transforms" />
<xsd:element ref="dsig:DigestMethod" />
<xsd:element ref="dsig:DigestValue" />
</xsd:sequence>
<xsd:attribute name="Type" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="TypeAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="URI" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="URIAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="IdAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="DigestMethodType">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other" />
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="AlgorithmAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="SignedInfoType">
<xsd:sequence>
<xsd:element ref="dsig:CanonicalizationMethod" />
<xsd:element ref="dsig:SignatureMethod" />
<xsd:element maxOccurs="unbounded" ref="dsig:Reference" />
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="IdAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="SignatureValueType">
<xsd:simpleContent>
<xsd:extension base="xsd:base64Binary">
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="IdAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="ObjectType">
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:any processContents="lax" namespace="##other" />
</xsd:sequence>
<xsd:attribute name="Id" type="xsd:ID">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="IdAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="MimeType" type="xsd:string">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="MimeTypeAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="Encoding" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="EncodingAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="CanonicalizationMethodType">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other" />
</xsd:sequence>
<xsd:attribute name="Algorithm" type="xsd:anyURI">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="AlgorithmAttribute" />
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:simpleType name="HMACOutputLengthType">
<xsd:restriction base="xsd:integer">
<xsd:pattern value="[\-+]?[0-9]+" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DigestValueType">
<xsd:restriction base="xsd:base64Binary" />
</xsd:simpleType>
<xsd:simpleType name="CryptoBinary">
<xsd:restriction base="xsd:base64Binary" />
</xsd:simpleType>
<xsd:element name="Signature" type="dsig:SignatureType" />
<xsd:element name="Transform" type="dsig:TransformType" />
<xsd:element name="Transforms" type="dsig:TransformsType" />
<xsd:element name="KeyName" type="xsd:string" />
<xsd:element name="KeyValue" type="dsig:KeyValueType" />
<xsd:element name="RetrievalMethod" type="dsig:RetrievalMethodType" />
<xsd:element name="X509Data" type="dsig:X509DataType" />
<xsd:element name="PGPData" type="dsig:PGPDataType" />
<xsd:element name="SPKIData" type="dsig:SPKIDataType" />
<xsd:element name="MgmtData" type="xsd:string" />
<xsd:element name="SignatureProperty" type="dsig:SignaturePropertyType" />
<xsd:element name="DSAKeyValue" type="dsig:DSAKeyValueType" />
<xsd:element name="RSAKeyValue" type="dsig:RSAKeyValueType" />
<xsd:element name="Reference" type="dsig:ReferenceType" />
<xsd:element name="DigestMethod" type="dsig:DigestMethodType" />
<xsd:element name="DigestValue" type="dsig:DigestValueType" />
<xsd:element name="SignedInfo" type="dsig:SignedInfoType" />
<xsd:element name="SignatureValue" type="dsig:SignatureValueType" />
<xsd:element name="KeyInfo" type="dsig:KeyInfoType" />
<xsd:element name="Object" type="dsig:ObjectType" />
<xsd:element name="CanonicalizationMethod" type="dsig:CanonicalizationMethodType" />
<xsd:element name="SignatureMethod" type="dsig:SignatureMethodType" />
<xsd:element name="SignatureProperties" type="dsig:SignaturePropertiesType" />
<xsd:element name="Manifest" type="dsig:ManifestType" />
</xsd:schema>

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><a><![CDATA[x < 0]]></a>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
elementFormDefault="qualified">
<xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format ref="GeneralFormat"/>
<dfdl:defineEscapeScheme name="Quotes">
<dfdl:escapeScheme
escapeKind="escapeBlock"
escapeBlockStart='"'
escapeBlockEnd='"'
escapeEscapeCharacter="\"
extraEscapedCharacters=""
generateEscapeBlock="whenNeeded"
/>
</dfdl:defineEscapeScheme>
</xs:appinfo>
</xs:annotation>
<xs:element name="CSV">
<xs:complexType>
<xs:sequence dfdl:separator="%NL;" dfdl:separatorPosition="infix" dfdl:separatorSuppressionPolicy="trailingEmpty">
<xs:element name="header">
<xs:complexType>
<xs:sequence dfdl:separator="," dfdl:separatorPosition="infix">
<xs:element name="title" maxOccurs="unbounded" type="xs:string" dfdl:lengthKind="delimited"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="row" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence dfdl:separator="," dfdl:separatorPosition="infix">
<xs:element name="field" minOccurs="11" maxOccurs="unbounded" type="xs:string" dfdl:lengthKind="delimited"
dfdl:escapeSchemeRef="Quotes"
dfdl:occursCount="{ fn:count(../../header/title) }"
dfdl:occursCountKind="expression" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<xs:schema xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Intended for inclusion into other schemas. Has no targetNamespace on purpose -->
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/">
<!--
This set of properties should never change. It can be added to
if properties are missing, but should not be changed.
Changes should be introduced by way of defining new formats in
terms of this one, which override definitions. See below in
the file for examples.
-->
<dfdl:defineFormat name="GeneralFormatOriginal">
<dfdl:format
alignment="1"
alignmentUnits="bytes"
binaryFloatRep="ieee"
binaryNumberCheckPolicy="lax"
binaryNumberRep="binary"
binaryCalendarEpoch="1970-01-01T00:00:00"
bitOrder="mostSignificantBitFirst"
byteOrder="bigEndian"
calendarCenturyStart="53"
calendarCheckPolicy="strict"
calendarDaysInFirstWeek="4"
calendarFirstDayOfWeek="Sunday"
calendarLanguage="en"
calendarObserveDST="yes"
calendarPatternKind="implicit"
calendarTimeZone=""
choiceLengthKind="implicit"
decimalSigned="yes"
documentFinalTerminatorCanBeMissing="no"
emptyValueDelimiterPolicy="both"
encodingErrorPolicy="replace"
encoding="US-ASCII"
escapeSchemeRef=""
fillByte="%#r20;"
floating="no"
ignoreCase="no"
initiatedContent="no"
initiator=""
leadingSkip="0"
lengthKind="implicit"
lengthUnits="bytes"
occursCountKind="implicit"
outputNewLine="%LF;"
representation="text"
separator=""
separatorPosition="infix"
separatorSuppressionPolicy="anyEmpty"
sequenceKind="ordered"
terminator=""
textBidi="no"
textBooleanPadCharacter="%SP;"
textCalendarJustification="left"
textCalendarPadCharacter="%SP;"
textNumberCheckPolicy="lax"
textNumberJustification="right"
textNumberPadCharacter="%SP;"
textNumberPattern="#,##0.###;-#,##0.###"
textNumberRep="standard"
textNumberRounding="explicit"
textNumberRoundingIncrement="0"
textNumberRoundingMode="roundHalfEven"
textOutputMinLength="0"
textPadKind="none"
textStandardBase="10"
textStandardDecimalSeparator="."
textStandardExponentRep="E"
textStandardGroupingSeparator=","
textStandardInfinityRep="Inf"
textStandardNaNRep="NaN"
textStandardZeroRep="0"
textStringJustification="left"
textStringPadCharacter="%SP;"
textTrimKind="none"
trailingSkip="0"
truncateSpecifiedLengthString="no"
utf16Width="fixed"
/>
</dfdl:defineFormat>
<dfdl:defineFormat name="GeneralFormat">
<dfdl:format ref="GeneralFormatOriginal" />
</dfdl:defineFormat>
<dfdl:defineFormat name="GeneralFormatPortable">
<dfdl:format ref="GeneralFormatOriginal"
calendarTimeZone="UTC"
encodingErrorPolicy="error"
/>
</dfdl:defineFormat>
</xs:appinfo>
</xs:annotation>
</xs:schema>

View File

@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<CSV>
<header>
<title>name prefix</title>
<title>name last</title>
<title>name first</title>
<title>name middle</title>
<title>name suffix</title>
<title>nickname</title>
<title>professional title</title>
<title>political title</title>
<title>rank political</title>
<title>rank military</title>
<title>gender</title>
</header>
<row>
<field></field>
<field>$B$2</field>
<field></field>
<field>$D$2</field>
<field>$E$2</field>
<field>$F$2</field>
<field>$G$2</field>
<field>$H$2</field>
<field>$I$2</field>
<field>$J$2</field>
<field>$K$2</field>
</row>
<row>
<field>$A$3</field>
<field></field>
<field>$C$3</field>
<field></field>
<field>$E$3</field>
<field>$F$3</field>
<field>$G$3</field>
<field>$H$3</field>
<field>$I$3</field>
<field>$J$3</field>
<field>$K$3</field>
</row>
<row>
<field>$A$4</field>
<field>$B$4</field>
<field></field>
<field>$D$4</field>
<field></field>
<field>$F$4</field>
<field>$G$4</field>
<field>$H$4</field>
<field>$I$4</field>
<field>$J$4</field>
<field>$K$4</field>
</row>
<row>
<field>$A$5</field>
<field>$B$5</field>
<field>$C$5</field>
<field></field>
<field>$E$5</field>
<field></field>
<field>$G$5</field>
<field>$H$5</field>
<field>$I$5</field>
<field>$J$5</field>
<field>$K$5</field>
</row>
<row>
<field>$A$6</field>
<field>$B$6</field>
<field>$C$6</field>
<field>$D$6</field>
<field></field>
<field>$F$6</field>
<field></field>
<field>$H$6</field>
<field>$I$6</field>
<field>$J$6</field>
<field>$K$6</field>
</row>
<row>
<field>$A$7</field>
<field>$B$7</field>
<field>$C$7</field>
<field>$D$7</field>
<field>$E$7</field>
<field></field>
<field>$G$7</field>
<field></field>
<field>$I$7</field>
<field>$J$7</field>
<field>$K$7</field>
</row>
<row>
<field>$A$8</field>
<field>$B$8</field>
<field>$C$8</field>
<field>$D$8</field>
<field>$E$8</field>
<field>$F$8</field>
<field></field>
<field>$H$8</field>
<field></field>
<field>$J$8</field>
<field>$K$8</field>
</row>
<row>
<field>$A$9</field>
<field>$B$9</field>
<field>$C$9</field>
<field>$D$9</field>
<field>$E$9</field>
<field>$F$9</field>
<field>$G$9</field>
<field></field>
<field>$I$9</field>
<field></field>
<field>$K$9</field>
</row>
<row>
<field>$A$10</field>
<field>$B$10</field>
<field>$C$10</field>
<field>$D$10</field>
<field>$E$10</field>
<field>$F$10</field>
<field>$G$10</field>
<field>$H$10</field>
<field></field>
<field>$J$10</field>
<field></field>
</row>
<row>
<field></field>
<field>$B$11</field>
<field>$C$11</field>
<field>$D$11</field>
<field>$E$11</field>
<field>$F$11</field>
<field>$G$11</field>
<field>$H$11</field>
<field>$I$11</field>
<field></field>
<field>$K$11</field>
</row>
<row>
<field>$A$12</field>
<field></field>
<field>$C$12</field>
<field>$D$12</field>
<field>$E$12</field>
<field>$F$12</field>
<field>$G$12</field>
<field>$H$12</field>
<field>$I$12</field>
<field>$J$12</field>
<field></field>
</row>
</CSV>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> </xs:schema>

View File

@@ -0,0 +1 @@
<EFBFBD><EFBFBD><EFBFBD>

Binary file not shown.

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<intVal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="empty.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:type="xs:float">12.345</intVal>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<intVal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="empty.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:type="xs:int"> 12345 </intVal>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<container xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<intVal xsi:type="xs:int">123456</intVal>
</container>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="container">
<xs:complexType>
<xs:sequence>
<xs:element name="intVal" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="http://www.foo.com" xmlns:ns="http://www.foo.com">
<xs:element name="personnel">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="person" type="ns:Person"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Person">
<xs:sequence>
<xs:element name="name" type="ns:Name"/>
<xs:element name="email" type="xs:string"/>
<xs:element name="yearsOfService" type="xs:nonNegativeInteger"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:NCName"/>
</xs:complexType>
<xs:complexType name="Name">
<xs:sequence>
<xs:element name="family" type="xs:string"/>
<xs:element name="given" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document -->
<ns:personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.foo.com XMLSample.xsd"
xmlns:ns="http://www.foo.com">
<ns:person id="Boss" unknown=";-)" >
<ns:name>
<ns:family>Smith</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>smith@foo.com</ns:email>
<ns:yearsOfService>20</ns:yearsOfService>
<ns:birthday>1955-03-24</ns:birthday>
</ns:person>
<!-- A second comment in this Sample XML Document -->
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>jones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1968-07-16</ns:birthday>
</ns:person>
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Sam</ns:given>
</ns:name>
<ns:email>sjones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1959-01-26</ns:birthday>
</ns:person>
</ns:personnel>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document -->
<ns:personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.foo.com XMLSample.xsd"
xmlns:ns="http://www.foo.com">
<ns:person id="Boss" >
<ns:name>
<ns:family>Smith</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>smith@foo.com</ns:email>
<ns:yearsOfService>XXX 20 XXX</ns:yearsOfService>
<ns:birthday>1955-03-24</ns:birthday>
</ns:person>
<!-- A second comment in this Sample XML Document -->
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>jones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1968-07-16</ns:birthday>
</ns:person>
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Sam</ns:given>
</ns:name>
<ns:email>sjones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1959-01-26</ns:birthday>
</ns:person>
</ns:personnel>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document -->
<ns:personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.foo.com XMLSample.xsd"
xmlns:ns="http://www.foo.com">
<ns:person id="Boss" >
<ns:name>
<ns:family>Smith</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>smith@foo.com</ns:email>
<ns:yearsOfService>20</ns:yearsOfService>
<ns:birthday>1955-03-24 oder so !?!</ns:birthday>
</ns:person>
<!-- A second comment in this Sample XML Document -->
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>jones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1968-07-16</ns:birthday>
</ns:person>
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Sam</ns:given>
</ns:name>
<ns:email>sjones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1959-01-26</ns:birthday>
</ns:person>
</ns:personnel>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document -->
<ns:personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.foo.com XMLSample.xsd"
xmlns:ns="http://www.foo.com">
<ns:person id="Boss" >
<ns:name>
<ns:family>Smith</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:unknown>zzzzzz</ns:unknown>
<ns:email>smith@foo.com</ns:email>
<ns:yearsOfService>20</ns:yearsOfService>
<ns:birthday>1955-03-24</ns:birthday>
</ns:person>
<!-- A second comment in this Sample XML Document -->
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>jones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1968-07-16</ns:birthday>
</ns:person>
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Sam</ns:given>
</ns:name>
<ns:email>sjones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1959-01-26</ns:birthday>
</ns:person>
</ns:personnel>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document -->
<ns:personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.foo.com XMLSample.xsd"
xmlns:ns="http://www.foo.com">
<!-- unexpected nil -->
<ns:person id="Boss" xsi:nil="falseeeeeeeeeeeeeeee">
<ns:name>
<ns:family>Smith</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>smith@foo.com</ns:email>
<ns:yearsOfService>20</ns:yearsOfService>
<ns:birthday>1955-03-24</ns:birthday>
</ns:person>
<!-- A second comment in this Sample XML Document -->
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>jones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1968-07-16</ns:birthday>
</ns:person>
<!-- unexpected nil & invalid boolean -->
<ns:person id="worker" xsi:nil="false">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Sam</ns:given>
</ns:name>
<ns:email>sjones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1959-01-26</ns:birthday>
</ns:person>
<ns:person xsi:nil="true"/>
</ns:personnel>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Sample XML Document -->
<ns:personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.foo.com XMLSample.xsd"
xmlns:ns="http://www.foo.com">
<ns:person id="Boss" xsi:type="ns:foooooooooooooooooooooooooooo">
<ns:name>
<ns:family>Smith</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>smith@foo.com</ns:email>
<ns:yearsOfService>20</ns:yearsOfService>
<ns:birthday>1955-03-24</ns:birthday>
</ns:person>
<!-- A second comment in this Sample XML Document -->
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Bill</ns:given>
</ns:name>
<ns:email>jones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1968-07-16</ns:birthday>
</ns:person>
<ns:person id="worker">
<ns:name>
<ns:family>Jones</ns:family>
<ns:given>Sam</ns:given>
</ns:name>
<ns:email>sjones@foo.com</ns:email>
<ns:yearsOfService>5</ns:yearsOfService>
<ns:birthday>1959-01-26</ns:birthday>
</ns:person>
</ns:personnel>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xs:element name="root">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="anyElement" type="AnyElement"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="AnyElement">
<xs:sequence >
<xs:any minOccurs="0" />
</xs:sequence>
<xs:anyAttribute/>
</xs:complexType>
<xs:attribute name="globalInt" type="xs:int" />
<xs:attribute name="globalFloat" type="xs:float" />
</xs:schema>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="globalAttribute.xsd" >
<anyElement globalInt="12 X" />
<anyElement globalFloat="3E4 E" />
<anyElement globalFloat="1.45.12" globalInt="7 7" />
<anyElement />
</root>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<ns:root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="urn:foo invalidQName.xsd"
xmlns:ns="urn:foo">
<el_a xsi:type="xs:int">1111</el_a>
<el_b xsi:type="ns:subInt" >222</el_b>
<!-- Unknown prefix -->
<el_c xsi:type="foo:subInt">333</el_c>
<!-- unknown type -->
<el_d xsi:type="ns:subIntFoo">444</el_d>
<!-- unknown -->
<el_e xsi:type="bla">XyZ</el_e>
</ns:root>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:foo">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="el_a"/>
<xs:element name="el_b"/>
<xs:element name="el_c"/>
<xs:element name="el_d"/>
<xs:element name="el_e"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="subInt">
<xs:restriction base="xs:int"></xs:restriction>
</xs:simpleType>
</xs:schema>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="order">
<xs:complexType>
<xs:sequence>
<xs:element name="product" type="Product" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Product" >
<xs:sequence>
<xs:element name="description" type="xs:string" minOccurs="0"/>
<xs:element name="price" type="xs:float" />
</xs:sequence>
<xs:attribute name="quantity" type="xs:integer" />
</xs:complexType>
</xs:schema>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="order.xsd">
<product quantity="321 x">
<price>13.55</price>
</product>
</order>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="el1" maxOccurs="unbounded" >
<xs:complexType>
<xs:sequence>
<xs:element name="el2" type="xs:string"/>
</xs:sequence>
<xs:attribute name="uhh" type="xs:int" use="required"/>
<xs:attribute name="pp" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,3 @@
<el1 uhh="312321">
<el2>abc</el2>
</el1>

View File

@@ -0,0 +1,5 @@
<el1 uhh="312321">
<el2>abc</el2>
</el1><el1 uhh="3123" pp="dasds">
<el2>def</el2>
</el1>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="elInteger" >
<xs:complexType>
<xs:sequence>
<xs:element name="content" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="elDate" >
<xs:complexType>
<xs:sequence>
<xs:element name="content" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,10 @@
<!--<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="fragment3.xsd">-->
<elInteger>
<content>123</content>
</elInteger>
<elDate>
<content>2009-05-22</content>
</elDate>
<!--</root>-->

View File

@@ -0,0 +1,11 @@
<!--<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="fragment3.xsd">
<elInteger>-->
<!-- Note: more than one element declared with the same qname -->
<content>123</content>
<!-- </elInteger>
<elDate>
<content>2009-05-22</content>
</elDate>
</root>-->

Some files were not shown because too many files have changed in this diff Show More