[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [dss-x] DSS-JSON binding
Sure! See the zip of preprocessed schemas attached ... and the stylesheet that did the magic. Greetings, Andreas > Hallo Andreas, > > > > could you provide the source schema as well? > > > > @Juan Carlos, Stefan, could you try to include me in the > > call (I’m detlef.huehnlein @ Skype)? > > > > BR, > > Detlef > > > > Von: dss-x@lists.oasis-open.org [mailto:dss-x@lists.oasis-open.org] Im Auftrag von Andreas Kuehne > Gesendet: Montag, 28. November 2016 10:04 > An: dss-x <dss-x@lists.oasis-open.org> > Betreff: [dss-x] DSS-JSON binding > > > > Hi all, > > see my draft on a JSON binding attached. > > A JSON schema created by the JAXB framework is attached, but the expressiveness and readability leaves room for improvements. Does anyone has experience in deriving a readable JSON schema from a given JSON sample or a XML schema? > > Moreover, did the dust settle for an agreed JSON schema format? > > > > Greetings, > > > > Andreas > > > > > -- Andreas Kühne phone: +49 177 293 24 97 mailto: kuehne@trustable.de Trustable Ltd. Niederlassung Deutschland Gartenheimstr. 39C - 30659 Hannover Amtsgericht Hannover HRB 212612 Director Andreas Kühne Company UK Company No: 5218868 Registered in England and Wales
Attachment:
preprocessed_XSDs.zip
Description: Zip compressed data
<?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" > <xsl:param name="IncludeAdESProfile">true</xsl:param> <xsl:param name="IncludeVerificationProfile"/> <xsl:variable name="includeAdESProfile" select="translate($IncludeAdESProfile, 'tTrRuUeE', 'ttrruuee')"/> <xsl:variable name="includeVerificationProfile" select="translate($IncludeVerificationProfile, 'tTrRuUeE', 'ttrruuee')"/> <xsl:template match="/xs:schema"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:namespace name="xs" select="'http://www.w3.org/2001/XMLSchema'"/> <xsl:namespace name="ades" select="'urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#'"/> <xsl:namespace name="vr" select="'urn:oasis:names:tc:dss-x:1.0:profiles:verificationreport:schema#'"/> <xsl:apply-templates select="node()"/> </xsl:copy> </xsl:template> <xsl:template match="/xs:schema[@targetNamespace='urn:oasis:names:tc:dss:1.0:core:schema']/xs:annotation[last()]"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> <xsl:if test="$includeAdESProfile = 'true'"> <xs:import namespace="urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#" schemaLocation="oasis-dss-profiles-AdES-schema-v1.0-os.xsd"/> </xsl:if> <xsl:if test="$includeVerificationProfile = 'true'"> <xs:import namespace="urn:oasis:names:tc:dss-x:1.0:profiles:verificationreport:schema#" schemaLocation="oasis-dssx-1.0-profiles-verification-report-cs1.xsd"/> </xsl:if> </xsl:template> <!-- rewrite schema location to refer to local re-written instances --> <xsl:template match="//xs:import [@namespace='urn:oasis:names:tc:dss:1.0:core:schema']"> <xs:import namespace="urn:oasis:names:tc:dss:1.0:core:schema" schemaLocation="oasis-dss-core-schema-v1.0-os.xsd"/> </xsl:template> <xsl:template match="//xs:import [@namespace='http://www.w3.org/2000/09/xmldsig#']"> <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> </xsl:template> <xsl:template match="//xs:import [@namespace='urn:oasis:names:tc:SAML:1.0:assertion']"> <xs:import namespace="urn:oasis:names:tc:SAML:1.0:assertion" schemaLocation="oasis-sstc-saml-schema-protocol-1.1.xsd"/> </xsl:template> <xsl:template match="//xs:import [@namespace='http://www.w3.org/XML/1998/namespace']"> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> </xsl:template> <xsl:template match="//xs:import [@namespace='urn:oasis:names:tc:SAML:2.0:assertion']"> <xs:import namespace="urn:oasis:names:tc:SAML:2.0:assertion" schemaLocation="saml-schema-assertion-2.0.xsd"/> </xsl:template> <xsl:template match="//xs:import [@namespace='http://uri.etsi.org/01903/v1.3.2#']"> <xs:import namespace="http://uri.etsi.org/01903/v1.3.2#" schemaLocation="XAdES.xsd"/> </xsl:template> <!-- ########################### rewrite verification report schema ########################### --> <xsl:template match="//xs:complexType [@name='IndividualReportType']"> <xs:complexType name="ReportDetailType"> <xs:sequence> <!-- report types defined in verification report --> <xs:element ref="vr:DetailedSignatureReport" minOccurs="0" maxOccurs="1"/> <xs:element ref="vr:IndividualTimeStampReport" minOccurs="0" maxOccurs="1"/> <xs:element ref="vr:IndividualCertificateReport" minOccurs="0" maxOccurs="1"/> <!-- xs:element ref="vr:IndividualAttributeCertificateReport" minOccurs="0" maxOccurs="1"/--> <xs:element ref="vr:IndividualCRLReport" minOccurs="0" maxOccurs="1"/> <xs:element ref="vr:IndividualOCSPReport" minOccurs="0" maxOccurs="1"/> <xs:element ref="vr:EvidenceRecordReport" minOccurs="0" maxOccurs="1"/> <!-- Optional inputs 'useful for verification' defined DSS core spec 4.5 --> <xsl:call-template name="addOptionaInputsForVerification" /> </xs:sequence> </xs:complexType> <xs:complexType name="IndividualReportType"> <xs:sequence> <xs:element name="SignedObjectIdentifier" type="vr:SignedObjectIdentifierType"> </xs:element> <xs:element ref="dss:Result"/> <!-- rewrite from any type to list of optional inputs --> <xs:element name="Details" type="vr:ReportDetailType" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> </xsl:template> <xsl:template match="//xs:schema[@targetNamespace='urn:oasis:names:tc:dss-x:1.0:profiles:verificationreport:schema#']/xs:complexType [@name='UnsignedSignaturePropertiesType']"> <!-- <complexType name="UnsignedSignaturePropertiesType"> <choice maxOccurs="unbounded"> <element name="CounterSignature" type="vr:SignatureValidityType" /> <element name="SignatureTimeStamp" type="vr:TimeStampValidityType" /> <element ref="XAdES:CompleteCertificateRefs" /> <element ref="XAdES:CompleteRevocationRefs" /> <element ref="XAdES:AttributeCertificateRefs" /> <element ref="XAdES:AttributeRevocationRefs" /> <element name="SigAndRefsTimeStamp" type="vr:TimeStampValidityType" /> <element name="RefsOnlyTimeStamp" type="vr:TimeStampValidityType" /> <element name="CertificateValues" type="vr:CertificateValuesType" /> <element name="RevocationValues" type="vr:RevocationValuesType" /> <element name="AttrAuthoritiesCertValues" type="vr:CertificateValuesType"/> <element name="AttributeRevocationValues" type="vr:RevocationValuesType"/> <element name="ArchiveTimeStamp" type="vr:TimeStampValidityType" /> </choice> <attribute name="Id" type="ID" use="optional" /> </complexType> --> <xs:complexType name="UnsignedSignaturePropertiesType"> <xs:sequence> <xs:element name="CounterSignature" type="vr:SignatureValidityType" /> <xs:element name="SignatureTimeStamp" type="vr:TimeStampValidityType" /> <xs:element ref="XAdES:CompleteCertificateRefs" /> <xs:element ref="XAdES:CompleteRevocationRefs" /> <xs:element ref="XAdES:AttributeCertificateRefs" /> <xs:element ref="XAdES:AttributeRevocationRefs" /> <xs:element name="SigAndRefsTimeStamp" type="vr:TimeStampValidityType" /> <xs:element name="RefsOnlyTimeStamp" type="vr:TimeStampValidityType" /> <xs:element name="CertificateValues" type="vr:CertificateValuesType" /> <xs:element name="RevocationValues" type="vr:RevocationValuesType" /> <xs:element name="AttrAuthoritiesCertValues" type="vr:CertificateValuesType"/> <xs:element name="AttributeRevocationValues" type="vr:RevocationValuesType"/> <xs:element name="ArchiveTimeStamp" type="vr:TimeStampValidityType" /> </xs:sequence> <xs:attribute name="Id" type="ID" use="optional" /> </xs:complexType> </xsl:template> <xsl:template match="/xs:schema/xs:complexType [@name='CRLContentType']"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> <xs:complexType name="RevokedCertificateType"> <xs:sequence> <xs:element name="UserCertificate" type="integer"/> <xs:element name="RevocationDate" type="dateTime"/> <xs:element name="CrlEntryExtensions" minOccurs="0" type="vr:ExtensionsType"/> </xs:sequence> </xs:complexType> </xsl:template> <xsl:template match="/xs:schema/xs:complexType [@name='CRLContentType']/xs:sequence/xs:element [@name='RevokedCertificates']"> <xs:element name="RevokedCertificates" minOccurs="0"> <xs:complexType> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element name="RevokedCertificate" type="vr:RevokedCertificateType"/> </xs:sequence> </xs:complexType> </xs:element> </xsl:template> <!-- ########################### cut down the SAML scemata to the (few) relevant definitions ########################### --> <xsl:template match="/xs:schema[@targetNamespace='urn:oasis:names:tc:SAML:1.0:assertion']" priority="2"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates select="//xs:element [@name='NameIdentifier']"/> <xsl:apply-templates select="//xs:complexType [@name='NameIdentifierType']"/> </xsl:copy> </xsl:template> <xsl:template match="/xs:schema[@targetNamespace='urn:oasis:names:tc:SAML:2.0:assertion']" priority="2"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates select="//xs:attributeGroup [@name='IDNameQualifiers']"/> <xsl:apply-templates select="//xs:element [@name='NameID']"/> <xsl:apply-templates select="//xs:complexType [@name='NameIDType']"/> </xsl:copy> </xsl:template> <!-- ########################### mangle the key selector from XMLDSig ########################### --> <xsl:template match="//xs:complexType [@name='PGPDataType']"> <xs:complexType name="PGPDataType"> <xs:choice> <xs:sequence maxOccurs="unbounded"> <xs:element name="PGPKeyID" type="base64Binary"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="PGPKeyPacket" type="base64Binary"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="Base64Content" type="xs:base64Binary" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xs:choice> </xs:complexType> </xsl:template> <xsl:template match="//xs:complexType [@name='SPKIDataType']"> <xs:complexType name="SPKIDataType"> <xs:choice> <xs:sequence maxOccurs="unbounded"> <xs:element name="SPKISexp" type="base64Binary" /> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="Base64Content" type="xs:base64Binary" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xs:choice> </xs:complexType> </xsl:template> <xsl:template match="//xs:complexType [@name='KeyValueType']"> <xs:complexType name="KeyValueType" > <xs:choice> <xs:element ref="ds:DSAKeyValue" /> <xs:element ref="ds:RSAKeyValue" /> <xs:element name="Base64Content" type="xs:base64Binary" minOccurs="0" maxOccurs="1"/> </xs:choice> </xs:complexType> </xsl:template> <xsl:template match="//xs:complexType [@name='ReferenceType']/xs:sequence/xs:element [@ref='ds:DigestValue']"> <xs:element name="DigestValue" type="xs:base64Binary" minOccurs="0" maxOccurs="1"/> </xsl:template> <!-- XMLDSig original content <complexType name="KeyInfoType" mixed="true"> <choice maxOccurs="unbounded"> <element ref="ds:KeyName"/> <element ref="ds:KeyValue"/> <element ref="ds:RetrievalMethod"/> <element ref="ds:X509Data"/> <element ref="ds:PGPData"/> <element ref="ds:SPKIData"/> <element ref="ds:MgmtData"/> <any processContents="lax" namespace="##other"/> </choice> <attribute name="Id" type="ID" use="optional"/> </complexType> --> <xsl:template match="//xs:complexType [@name='KeyInfoType']"> <xs:complexType name="KeyInfoType"> <xs:choice> <xs:sequence maxOccurs="unbounded"> <xs:element name="KeyName" type="string"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="KeyValue" type="ds:KeyValueType"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="RetrievalMethod" type="ds:RetrievalMethodType"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="X509Data" type="ds:X509DataType"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="PGPData" type="ds:PGPDataType"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="SPKIData" type="ds:SPKIDataType"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="MgmtData" type="string"/> </xs:sequence> <!--xs:element name="Other" type="dss:AnyType" /--> </xs:choice> <xs:attribute name="Id" type="ID" use="optional"/> </xs:complexType> </xsl:template> <xsl:template match="//xs:complexType [@name='X509DataType']"> <xs:complexType name="X509DataType"> <xs:choice> <xs:sequence maxOccurs="unbounded"> <xs:element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="X509SKI" type="base64Binary"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="X509SubjectName" type="string"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="X509Certificate" type="base64Binary"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="X509CRL" type="base64Binary"/> </xs:sequence> </xs:choice> </xs:complexType> </xsl:template> <!-- ########################### reworking DSS core types ########################### --> <xsl:template match="//xs:element [@name='ResultMajor']"> <xs:element name="ResultMajor"> <xs:simpleType> <xs:restriction base="xs:anyURI"> <xs:enumeration value="urn:oasis:names:tc:dss:1.0:resultmajor:Success"/> <xs:enumeration value="urn:oasis:names:tc:dss:1.0:resultmajor:RequesterError"/> <xs:enumeration value="urn:oasis:names:tc:dss:1.0:resultmajor:ResponderError"/> <xs:enumeration value="urn:oasis:names:tc:dss:1.0:resultmajor:InsufficientInformation"/> </xs:restriction> </xs:simpleType> </xs:element> </xsl:template> <xsl:template match="//xs:element [@name='DocumentHash']"> <xs:element name="DocumentHash" type="dss:DocumentHashType"/> <xs:complexType name="DocumentHashType"> <xsl:apply-templates select="xs:complexType/*"/> </xs:complexType> </xsl:template> <xsl:template match="//xs:element [@name='TransformedData']"> <!-- xs:element name="TransformedData" type="dss:TransformedDataType"/--> <xs:complexType name="TransformedDataType"> <xsl:apply-templates select="xs:complexType/*"/> </xs:complexType> </xsl:template> <xsl:template match="//xs:element [@name='InputDocuments']"> <xs:element name="InputDocuments"> <xs:complexType> <xs:choice> <xs:sequence maxOccurs="unbounded"> <xs:element name="Document" type="dss:DocumentType"/> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="TransformedData" type="dss:TransformedDataType" /> </xs:sequence> <xs:sequence maxOccurs="unbounded"> <xs:element name="DocumentHash" type="dss:DocumentHashType" /> </xs:sequence> <!--xs:element name="Other" type="dss:AnyType" /--> </xs:choice> </xs:complexType> </xs:element> </xsl:template> <xsl:template match="//xs:element [@name='ReturnProcessingDetails' or @name='UseVerificationTime' or @name='ReturnVerificationTimeInfo' or @name='ReturnSigningTimeInfo' or @name='ReturnSignerIdentity' or @name='ReturnUpdatedSignature' or @name='ReturnTransformedDocument' or @name='ReturnTimestampedSignature' ]"> <xs:element type="xs:boolean"> <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute> </xs:element> </xsl:template> <xsl:template match="//xs:element [@name='OptionalInputs']"> <xs:element name="OptionalInputs" > <xs:complexType> <xs:sequence> <xs:element ref="dss:SignatureType" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:AdditionalProfile" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="dss:SignedReferences" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:ServicePolicy" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:ClaimedIdentity" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:Language" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:Schemas" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:AddTimestamp" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:IntendedAudience" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:KeySelector" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:Properties" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:IncludeObject" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="dss:SignaturePlacement" minOccurs="0" maxOccurs="1"/> <!-- Optional inputs 'useful for verification' defined DSS core spec 4.5 --> <xsl:call-template name="addOptionaInputsForVerification" /> <xsl:if test="$includeAdESProfile = 'true'"> <xs:element name="SignatureForm" type="xs:anyURI" minOccurs="0" maxOccurs="1"/> </xsl:if> <xsl:if test="$includeVerificationProfile = 'true'"> <!-- optional input define in 'profile for comprehensive multisignature verification reports' --> <xs:element ref="vr:ReturnVerificationReport" minOccurs="0" maxOccurs="1"/> </xsl:if> </xs:sequence> </xs:complexType> </xs:element> </xsl:template> <xsl:template match="//xs:element [@name='OptionalOutputs']"> <xs:element name="OptionalOutputs" > <xs:complexType> <xs:sequence> <xs:element ref="dss:Schemas" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:VerifyManifestResults" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:VerificationTimeInfo" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:ProcessingDetails" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:SigningTimeInfo" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:SignerIdentity" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:DocumentWithSignature" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:UpdatedSignature" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:TransformedDocument" minOccurs="0" maxOccurs="1"/> <xs:element ref="dss:TimestampedSignature" minOccurs="0" maxOccurs="1"/> <xsl:if test="$includeVerificationProfile = 'true'"> <xs:element ref="vr:VerificationReport" minOccurs="0" maxOccurs="1"/> </xsl:if> </xs:sequence> </xs:complexType> </xs:element> </xsl:template> <!-- <xsl:template match="//xs:complexType [@name='ReferenceType']"> <complexType name="ReferenceType"> <sequence> <xs:element name="Transforms" type="ds:TransformsType" minOccurs="0"/> <xs:element name="DigestMethod" type="ds:DigestMethodType"/> <xs:element name="DigestValue" type="ds:DigestValueType"/> </sequence> <attribute name="Id" type="ID" use="optional"/> <attribute name="URI" type="anyURI" use="optional"/> <attribute name="Type" type="anyURI" use="optional"/> </complexType> </xsl:template> --> <!-- drop the XML ds:Signature object from the valid represenation of SignatureObjects --> <xsl:template match="//xs:element [@name='SignatureObject']/xs:complexType/xs:sequence/xs:choice/xs:element [@ref='ds:Signature']"> </xsl:template> <!-- replace the XML ds:Signature object within the dss:Timestamp by a basde64 holder --> <xsl:template match="//xs:element [@name='Timestamp']/xs:complexType/xs:choice/xs:element [@ref='ds:Signature']"> <xs:element name="Base64Data" type="dss:Base64DataType"/> </xsl:template> <!-- drop InlineXML and EscapedXML--> <xsl:template match="//xs:complexType [@name='DocumentType']"> <xs:complexType name="DocumentType"> <xs:complexContent> <xs:extension base="dss:DocumentBaseType"> <xs:choice> <xs:element name="Base64XML" type="xs:base64Binary"/> <xs:element name="Base64Data" type="dss:Base64DataType"/> <xs:element ref="dss:AttachmentReference"/> </xs:choice> </xs:extension> </xs:complexContent> </xs:complexType> </xsl:template> <xsl:template match="//xs:element [@name='Base64Data']"> <xs:element name="Base64Data" type= "dss:Base64DataType"/> <xs:complexType name="Base64DataType"> <xs:simpleContent> <xs:extension base="xs:base64Binary"> <xs:attribute name="MimeType" type="xs:string" use="optional"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xsl:template> <!-- drop non-Base64-Representations of XML --> <xsl:template match="//xs:complexType [@name='InlineXMLType']"/> <xsl:template match="//xs:element [@name='InlineXML']"/> <xsl:template match="//xs:element [@name='EscapedXML']"/> <!-- change nasty AnyType, xs:any does not fit well into a typesafe binding --> <xsl:template match="//xs:complexType [@name='AnyType']"> <xs:complexType name="AnyType"> <xs:sequence> <xs:element name="Base64Content" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xsl:template> <!-- drop nasty AnyType, it does not fit well into a typesafe binding <xsl:template match="//xs:complexType [@name='AnyType']"/> <xsl:template match="//xs:choice/xs:element [@type='dss:AnyType']"/> <xsl:template match="//xs:sequence/xs:element [@type='dss:AnyType']"/> --> <!-- replace remaining xs:any --> <xsl:template match="//xs:any" > <xs:sequence> <xsl:if test="string-length(@minOccurs) > 0"> <xsl:attribute name="minOccurs"><xsl:value-of select="@minOccurs"/></xsl:attribute> </xsl:if> <xsl:if test="string-length(@maxOccurs) > 0"> <xsl:attribute name="maxOccurs"><xsl:value-of select="@maxOccurs"/></xsl:attribute> </xsl:if> <xs:element name="Base64Content" type="xs:base64Binary" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xsl:template> <xsl:template name="addOptionaInputsForVerification" > <!-- Optional inputs 'useful for verification' defined DSS core spec 4.5 --> <!-- 4.5.1 --> <!-- xs:element ref="dss:VerifyManifests" minOccurs="0" maxOccurs="1"/--> <!-- 4.5.2 --> <xs:element ref="dss:UseVerificationTime" minOccurs="0" maxOccurs="1"/> <!-- 4.5.3 --> <xs:element ref="dss:ReturnVerificationTimeInfo" minOccurs="0" maxOccurs="1"/> <!-- 4.5.4 --> <xs:element ref="dss:AdditionalKeyInfo" minOccurs="0" maxOccurs="1"/> <!-- 4.5.5 --> <xs:element ref="dss:ReturnProcessingDetails" minOccurs="0" maxOccurs="1"/> <!-- 4.5.6 --> <xs:element ref="dss:ReturnSigningTimeInfo" minOccurs="0" maxOccurs="1"/> <!-- 4.5.7 --> <xs:element ref="dss:ReturnSignerIdentity" minOccurs="0" maxOccurs="1"/> <!-- 4.5.8 --> <xs:element ref="dss:ReturnUpdatedSignature" minOccurs="0" maxOccurs="1"/> <!-- 4.5.9 --> <xs:element ref="dss:ReturnTransformedDocument" minOccurs="0" maxOccurs="1"/> <!-- 4.5.10 --> <xs:element ref="dss:ReturnTimestampedSignature" minOccurs="0" maxOccurs="1"/> </xsl:template> <xsl:template match="/"> <xsl:apply-templates select="node()"/> </xsl:template> <xsl:template match="@*|node()" priority="-1"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]