[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: multi-profile support
Hi all, please take a look at my proposed solution for support of arbitrary sets of profiles and a sample stylesheet for schema processing. 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:
ApproachSchemaCreation.docx
Description: Binary 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" xmlns:es="http://trustable.eu/enrichSchema"> <xsl:param name="IncludeAdESProfile">false</xsl:param> <xsl:param name="IncludeAsyncProfile">false</xsl:param> <xsl:param name="IncludeVerificationProfile">false</xsl:param> <xsl:variable name="includeAdESProfile" select="lower-case($IncludeAdESProfile)"/> <xsl:variable name="includeAsyncProfile" select="lower-case($IncludeAsyncProfile)"/> <xsl:variable name="includeVerificationProfile" select="lower-case($IncludeVerificationProfile)"/> <xsl:template match="/xs:schema"> <xsl:copy> <xsl:apply-templates select="@*"/> <!-- declare relevant namespaces --> <xsl:if test="$includeAsyncProfile = 'true'"> <xsl:namespace name="async" select="'http://uri.etsi.org/19442/v1.1.1#'"/> </xsl:if> <xsl:if test="$includeAdESProfile = 'true'"> <xsl:namespace name="ades" select="'urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#'"/> </xsl:if> <xsl:if test="$includeVerificationProfile = 'true'"> <xsl:namespace name="vr" select="'urn:oasis:names:tc:dss-x:1.0:profiles:verificationreport:schema#'"/> </xsl:if> <!-- import profile-specific schemes --> <xsl:if test="$includeAsyncProfile = 'true'"> <xs:import namespace="urn:oasis:names:tc:dss:1.0:profiles:asynchronousprocessing:1.0" schemaLocation="oasis-dss-profiles-asynchronous-processing-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: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:apply-templates select="node()"/> </xsl:copy> </xsl:template> <!-- ########################### adding profile specific elements ########################### --> <xsl:template match="//xs:complexType[@name = 'OptionalInputsVerifyType']/xs:complexContent/xs:extension/xs:sequence/xs:choice"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> <xsl:if test="$includeVerificationProfile = 'true'"> <xs:group ref="vr:optionalInputGroup"/> </xsl:if> </xsl:copy> </xsl:template> <xsl:template match="//xs:complexType[@name = 'OptionalOutputsVerifyType']/xs:complexContent/xs:extension/xs:sequence/xs:choice"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> <xsl:if test="$includeVerificationProfile = 'true'"> <xs:group ref="vr:optionalOutputGroup"/> </xsl:if> </xsl:copy> </xsl:template> <xsl:template match="//xs:complexType[@name = 'OptionalInputsBaseType']/xs:sequence/xs:choice"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> <xsl:if test="$includeAdESProfile = 'true'"> <xs:element name="SignatureForm" type="xs:anyURI" minOccurs="0" maxOccurs="1" es:jsonName="sigForm"/> </xsl:if> </xsl:copy> </xsl:template> <xsl:template match="//xs:complexType[@name = 'OptionalOutputsBaseType']/xs:sequence/xs:choice"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> <xsl:if test="$includeVerificationProfile = 'true'"> <xs:element name="asyncResponseId" type="async:ResponseID" es:jsonName="respID"/> </xsl:if> </xsl:copy> </xsl:template> <!-- default copy-thru template --> <xsl:template match="@* | node()" priority="-2"> <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]