| <?xml version='1.0' encoding='UTF-8'?> |
| <!-- http://www.xml.com/lpt/a/2002/01/23/relaxng.html --> |
| <!-- http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html --> |
| <!-- http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_wildcards_st8.html --> |
| <!-- http://lists.oasis-open.org/archives/relax-ng-comment/200206/maillist.html --> |
| |
| <grammar xmlns='http://relaxng.org/ns/structure/1.0' |
| xmlns:ds='http://www.w3.org/2000/09/xmldsig#' |
| xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' |
| ns='http://www.w3.org/2000/09/xmldsig#' |
| datatypeLibrary='http://www.w3.org/2001/XMLSchema-datatypes'> |
| |
| <start> |
| <element name='Signature'><ref name='SignatureType'/></element> |
| </start> |
| |
| <define name='CryptoBinary'> |
| <data type='base64Binary'/> |
| </define> |
| |
| <define name='SignatureType'> |
| <element name='SignedInfo'><ref name='SignedInfoType'/></element> |
| <element name='SignatureValue'><ref name='SignatureValueType'/></element> |
| <optional><element name='KeyInfo'><ref name='KeyInfoType'/></element></optional> |
| <zeroOrMore><element name='Object'><ref name='ObjectType'/></element></zeroOrMore> |
| <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
| <optional><attribute name='xsi:schemaLocation'/></optional> |
| </define> |
| |
| <define name='SignatureValueType'> |
| <data type='base64Binary'/> |
| <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
| </define> |
| |
| <!-- Start SignedInfo --> |
| |
| <define name='SignedInfoType'> |
| <element name='CanonicalizationMethod'><ref name='CanonicalizationMethodType'/></element> |
| <element name='SignatureMethod'><ref name='SignatureMethodType'/></element> |
| <optional><element name='KeyInfo'><ref name='KeyInfoType'/></element></optional> |
| <oneOrMore><element name='Reference'><ref name='ReferenceType'/></element></oneOrMore> |
| <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
| </define> |
| |
| <define name='CanonicalizationMethodType'> |
| <zeroOrMore><ref name='anyThing'/></zeroOrMore> |
| <optional><attribute name='Algorithm'><data type='anyURI'/></attribute></optional> |
| </define> |
| |
| |
| <define name='SignatureMethodType'> |
| <optional><element name='HMACOutputLength'><data type='integer'/></element></optional> |
| <zeroOrMore><ref name='anyThing'/></zeroOrMore> |
| <optional><attribute name='Algorithm'><data type='anyURI'/></attribute></optional> |
| </define> |
| |
| <!-- Start Reference --> |
| |
| <define name='ReferenceType'> |
| <optional><element name='Transforms'><ref name='TransformsType'/></element></optional> |
| <element name='DigestMethod'><ref name='DigestMethodType'/></element> |
| <element name='DigestValue'><ref name='DigestValueType'/></element> |
| <optional><attribute name='Type'><data type='anyURI'/></attribute></optional> |
| <optional><attribute name='URI'><data type='anyURI'/></attribute></optional> |
| <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
| </define> |
| |
| <define name='TransformsType'> |
| <oneOrMore><element name='Transform'><ref name='TransformType'/></element></oneOrMore> |
| </define> |
| |
| <define name='TransformType'> |
| <optional><element name='XPath'><data type='string'/></element></optional> |
| <zeroOrMore><ref name='anyThing'/></zeroOrMore> |
| <attribute name='Algorithm'><data type='anyURI'/></attribute> |
| </define> |
| |
| <!-- End Reference --> |
| |
| <define name='DigestMethodType'> |
| <zeroOrMore><ref name='anyThing'/></zeroOrMore> |
| <attribute name='Algorithm'><data type='anyURI'/></attribute> |
| </define> |
| |
| <define name='DigestValueType'> |
| <data type='base64Binary'/> |
| </define> |
| |
| <!-- End SignedInfo --> |
| |
| <!-- Start KeyInfo --> |
| |
| <define name='KeyInfoType'> |
| <oneOrMore> |
| <choice> |
| <element name='KeyName'><data type='string'/></element> |
| <element name='KeyValue'><ref name='KeyValueType'/></element> |
| <element name='RetrievalMethod'><ref name='RetrievalMethodType'/></element> |
| <element name='X509Data'><ref name='X509DataType'/></element> |
| <element name='PGPData'><ref name='PGPDataType'/></element> |
| <element name='SPKIData'><ref name='SPKIDataType'/></element> |
| <element name='MgmtData'><data type='string'/></element> |
| <ref name='anyThing'/> |
| </choice> |
| </oneOrMore> |
| <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
| </define> |
| |
| <define name='KeyValueType'> |
| <choice> |
| <text/> |
| <element name='DSAKeyValue'><ref name='DSAKeyValueType'/></element> |
| <element name='RSAKeyValue'><ref name='RSAKeyValueType'/></element> |
| <ref name='anyThing'/> |
| </choice> |
| </define> |
| |
| <define name='RetrievalMethodType'> |
| <optional><element name='Transforms'><ref name='TransformsType'/></element></optional> |
| <optional><attribute name='Type'><data type='anyURI'/></attribute></optional> |
| <optional><attribute name='URI'><data type='anyURI'/></attribute></optional> |
| </define> |
| |
| <!-- Start X509Data --> |
| |
| <define name='X509DataType'> |
| <oneOrMore> |
| <choice> |
| <element name='X509IssuerSerial'> |
| <element name='X509IssuerName'> |
| <data type='string'/> |
| </element> |
| <element name='X509SerialNumber'> |
| <data type='integer'/> |
| </element> |
| </element> |
| <element name='X509SKI'> |
| <data type='base64Binary'/> |
| </element> |
| <element name='X509SubjectName'> |
| <data type='string'/> |
| </element> |
| <element name='X509Certificate'> |
| <data type='base64Binary'/> |
| </element> |
| <element name='X509CRL'> |
| <data type='base64Binary'/> |
| </element> |
| <ref name='anyThing'/> |
| </choice> |
| </oneOrMore> |
| </define> |
| |
| <!-- End X509Data --> |
| |
| <!-- Begin PGPData --> |
| |
| <define name='PGPDataType'> |
| <choice> |
| <group> |
| <element name='PGPKeyID'> |
| <data type='base64Binary'/> |
| </element> |
| <optional> |
| <element name='PGPKeyPacket'> |
| <data type='base64Binary'/> |
| </element> |
| </optional> |
| <zeroOrMore> |
| <ref name='anyThing'/> |
| </zeroOrMore> |
| </group> |
| <group> |
| <element name='PGPKeyPacket'> |
| <data type='base64Binary'/> |
| </element> |
| <zeroOrMore> |
| <ref name='anyThing'/> |
| </zeroOrMore> |
| </group> |
| </choice> |
| </define> |
| |
| <!-- End PGPData --> |
| |
| <!-- Begin SPKIData --> |
| |
| <define name='SPKIDataType'> |
| <oneOrMore> |
| <element name='SPKISexp'> |
| <data type='base64Binary'/> |
| </element> |
| <optional> |
| <ref name='anyThing'/> |
| </optional> |
| </oneOrMore> |
| </define> |
| |
| <!-- End SPKIData --> |
| |
| <!-- End KeyInfo --> |
| |
| |
| <!-- Start Object (Manifest, SignatureProperty) --> |
| |
| <define name='ObjectType'> |
| <zeroOrMore> |
| <choice> |
| <element name='Manifest'><ref name='ManifestType'/></element> |
| <element name='SignatureProperties'><ref name='SignaturePropertiesType'/></element> |
| <ref name='anyThing'/> |
| </choice> |
| </zeroOrMore> |
| <optional> |
| <attribute name='Encoding'> |
| <data type='anyURI'/> |
| </attribute> |
| </optional> |
| <optional> |
| <attribute name='MimeType'> |
| <data type='string'/> |
| </attribute> |
| </optional> |
| <optional> |
| <attribute name='Id'> |
| <data type='ID'/> |
| </attribute> |
| </optional> |
| </define> |
| |
| <define name='ManifestType'> |
| <oneOrMore> |
| <element name='Reference'><ref name='ReferenceType'/></element> |
| </oneOrMore> |
| <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
| </define> |
| |
| <define name='SignaturePropertiesType'> |
| <oneOrMore> |
| <element name='SignatureProperty'><ref name='SignaturePropertyType'/></element> |
| </oneOrMore> |
| <optional> |
| <attribute name='Id'> |
| <data type='ID'/> |
| </attribute> |
| </optional> |
| </define> |
| |
| <define name='SignaturePropertyType'> |
| <oneOrMore><ref name='anyThing'/></oneOrMore> |
| <optional> |
| <attribute name='Id'> |
| <data type='ID'/> |
| </attribute> |
| </optional> |
| <attribute name='Target'> |
| <data type='anyURI'/> |
| </attribute> |
| </define> |
| |
| <!-- End Object (Manifest, SignatureProperty) --> |
| |
| |
| <!-- Start KeyValue Element-types --> |
| |
| <define name='DSAKeyValueType'> |
| <optional> |
| <element name='P'> |
| <ref name='CryptoBinary'/> |
| </element> |
| <element name='Q'> |
| <ref name='CryptoBinary'/> |
| </element> |
| </optional> |
| <optional> |
| <element name='G'> |
| <ref name='CryptoBinary'/> |
| </element> |
| </optional> |
| <element name='Y'> |
| <ref name='CryptoBinary'/> |
| </element> |
| <optional> |
| <element name='J'> |
| <ref name='CryptoBinary'/> |
| </element> |
| </optional> |
| <optional> |
| <element name='Seed'> |
| <ref name='CryptoBinary'/> |
| </element> |
| <element name='PgenCounter'> |
| <ref name='CryptoBinary'/> |
| </element> |
| </optional> |
| </define> |
| |
| <define name='RSAKeyValueType'> |
| <element name='Modulus'> |
| <ref name='CryptoBinary'/> |
| </element> |
| <element name='Exponent'> |
| <ref name='CryptoBinary'/> |
| </element> |
| </define> |
| |
| |
| <!-- End KeyValue Element-types --> |
| |
| <!-- End Signature --> |
| |
| |
| <!-- This should emulate the ANY content model under lax validation --> |
| <define name='anyThing'> |
| <zeroOrMore> |
| <choice> |
| <text/> |
| <element> |
| <!-- "except" provided for DTD compatibility --> |
| <!-- [1] ns='http://www.oasis-open.org/committees/relax-ng/compatibility.html#id' --> |
| <anyName> |
| <except> |
| <nsName/> |
| <!-- <nsName ns='http://www.w3.org/2001/04/xmlenc#'/> --> |
| </except> |
| </anyName> |
| <ref name='anyThing'/> |
| <zeroOrMore> |
| <attribute> |
| <anyName/> |
| </attribute> |
| </zeroOrMore> |
| </element> |
| </choice> |
| </zeroOrMore> |
| </define> |
| |
| |
| </grammar> |