OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

dss-x message

[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]